In [ ]:
. ../../polyglot/scripts/nbs_header.ps1
. ../../polyglot/scripts/core.ps1
In [ ]:
{ pwsh build.ps1 } | Invoke-Block
polyglot/scripts/core.ps1/GetFullPath / Path: ../../deps/polyglot/lib/fsharp / Location: C:\home\git\spiral\apps\compiler / ResolvedLocation: C:\home\git\spiral\apps\compiler
polyglot/scripts/core.ps1/GetFullPath / FullPath: C:\home\git\spiral\deps\polyglot\lib\fsharp
00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "C:\home\git\spiral\apps\compiler/spiral_compiler.dib", "--working-directory", "C:\home\git\polyglot\lib\fsharp"])) }
00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/spiral/apps/compiler/spiral_compiler.dib", "--output-path", "c:/home/git/spiral/apps/compiler/spiral_compiler.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/spiral/apps/compiler/spiral_compiler.dib" --output-path "c:/home/git/spiral/apps/compiler/spiral_compiler.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = Some(
    "C:\home\git\polyglot\lib\fsharp",
) } }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ # spiral_compiler (Polyglot)
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> open rust.rust_operators
> open rust
> open sm'_operators
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## spiral_compiler
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> open FSharp.Core
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> // #!import '../../../polyglot/deps/The-Spiral-Language/The Spiral Language 
> 2/Supervisor.fs'
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #r 
> @"../../../../../../../.nuget/packages/fsharpx.collections/3.1.0/lib/netstandard
> 2.0/FSharpx.Collections.dll"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> // #if !INTERACTIVE
> // open Polyglot
> open Common
> // open Lib
> // #endif
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## PersistentVector
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> // #!import '../../../polyglot/deps/The-Spiral-Language/The Spiral Language 
> 2/PersistentVectorExtensions.fs'
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> // #if !INTERACTIVE
> //     open Polyglot
> //     open Common
> //     open Lib
> // #endif
> // open System
> // open FSharpx.Collections
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### private
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let range_checks from near_to vec =
>     if from <= near_to = false then
>         Common.trace Common.Critical (fun () -> 
> $"PersistentVectorExtensions.range_checks / `from` must be less or equal to 
> `near_to`. / from: {from} / near_to: {near_to} / vec: {vec}") Common._locals
>         // raise (System.ArgumentException("`from` must be less or equal to 
> `near_to`."))
>     if from < 0 then raise (System.ArgumentException("`from` must not be 
> negative."))
>     if FSharpx.Collections.PersistentVector.length vec < near_to then raise 
> (System.ArgumentException("`near_to` must not be beyond the length of the 
> vector."))
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### replace
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> /// O(n+m). Replace the specified range in a vector with the sequence.
> let replace from near_to seq vec =
>     range_checks from near_to vec
>     let rec rest s =
>         if from < FSharpx.Collections.PersistentVector.length s then
>             FSharpx.Collections.PersistentVector.unconj s |> fst |> rest
>         else
>             Seq.fold (fun s x -> FSharpx.Collections.PersistentVector.conj x s) 
> s seq
>     let rec init s =
>         if near_to < FSharpx.Collections.PersistentVector.length s then
>             let s',x = FSharpx.Collections.PersistentVector.unconj s
>             FSharpx.Collections.PersistentVector.conj x (init s')
>         else
>             rest s
>     init vec
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### mapi
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> /// O(n). Returns a vector of the supplied length using the supplied function 
> operating on the index.
> let mapi f vec = FSharpx.Collections.PersistentVector.init 
> (FSharpx.Collections.PersistentVector.length vec) (fun i -> f i vec.[[i]])
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### iter
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> /// O(n). Iterates over a vector using the supplied function operating on the 
> index.
> let iter f vec = 
>     let rec loop i = if i < FSharpx.Collections.PersistentVector.length vec then
> f vec.[[i]]
>     loop 0
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### unzip
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> /// O(n). Unzips a vector of pairs into pairs of vectors.
> let unzip vec = 
>     let mutable a = FSharpx.Collections.PersistentVector.empty
>     let mutable b = FSharpx.Collections.PersistentVector.empty
>     iter (fun (a',b') -> a <- FSharpx.Collections.PersistentVector.conj a' a; b 
> <- FSharpx.Collections.PersistentVector.conj b' b) vec
>     a,b
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### concat
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> /// O(n). Concatenates a vector of vectors.
> let concat vec = FSharpx.Collections.PersistentVector.fold 
> (FSharpx.Collections.PersistentVector.append) 
> FSharpx.Collections.PersistentVector.empty vec
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### rangePersistentVector 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> /// O(near_to-from). Get the vector at a range.
> let rangePersistentVector from near_to vec =
>     range_checks from near_to vec
>     FSharpx.Collections.PersistentVector.init (near_to-from) (fun i -> 
> vec.[[i+from]])
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### tryFindBack
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> /// O(~n). Returns the last element for which a given function returns true. 
> None if such an element does not exist.
> let tryFindBack f vec =
>     let rec loop i =
>         if 0 <= i then 
>             let x = FSharpx.Collections.PersistentVector.nth i vec
>             if f x then Some x else loop (i-1)
>         else
>             None
>     loop (FSharpx.Collections.PersistentVector.length vec - 1)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## HashConsing
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> // Adapted from: https://github.com/backtracking/ocaml-hashcons
> // Type-Safe Modular Hash-Consing: 
> https://www.lri.fr/~filliatr/ftp/publis/hash-consing2.pdf
> 
> // open System
> open System.Runtime.InteropServices
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### ConsedNode<'a>
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> [[<CustomComparison;CustomEquality;StructuredFormatDisplay("{AsString}")>]]
> type ConsedNode<'a> =
>     {
>     node: 'a
>     tag: int
>     hkey: int
>     }
> 
>     override x.ToString() = sprintf "<tag %i>" x.tag
>     member x.AsString = x.ToString()
>     override x.GetHashCode() = x.hkey
>     override x.Equals(y) = 
>         match y with 
>         | :? ConsedNode<'a> as y -> x.tag = y.tag
>         | _ -> false
> 
>     interface System.IComparable with
>         member x.CompareTo(y) = 
>             match y with
>             | :? ConsedNode<'a> as y -> compare x.tag y.tag
>             | _ -> raise <| System.ArgumentException "Invalid comparison for 
> HashConsed."
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### HashConsTable
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type HashConsTable() =
>     let mutable table: ResizeArray<GCHandle> [[]] = Array.init 7 (fun _ -> 
> ResizeArray(0))
>     let mutable total_size: int = 0
>     let mutable limit: int = 3
>     let mutable is_finalized: bool = false
>     let mutable counter: int = 0
> 
>     member private t.Resize() =
>         let next_table_length x = x*3/2+3
> 
>         let table_length' = next_table_length table.Length
>         if table_length' <= table.Length then failwith "The hash consing table 
> cannot be grown anymore."
>         let table' = Array.init table_length' (fun i -> ResizeArray())
>         let limit' = limit+2
>         let total_size' = 
>             let mutable total_size=0
>             for i=0 to table.Length-1 do
>                 let table = table.[[i]]
>                 for i=0 to table.Count-1 do
>                     let x = table.[[i]]
>                     total_size <-
>                         match x.Target with
>                         | null -> 
>                             x.Free()
>                             total_size
>                         | a -> 
>                             let bucket = table'.[[(hash a &&& 
> System.Int32.MaxValue) % table_length']]
>                             bucket.Add x
>                             total_size+1
>             total_size
>         table <- table'
>         limit <- limit'
>         total_size <- total_size'
> 
>     member t.Add(x: 'a): ConsedNode<'a> =
>         let hkey = hash x
>         let table = table
>         let bucket = table.[[(hkey &&& System.Int32.MaxValue) % Array.length 
> table]]
>         let sz = bucket.Count
> 
>         let rec loop empty_pos i =
>             if i < sz then
>                 match bucket.[[i]].Target with
>                 | null -> loop i (i+1)
>                 | :? ConsedNode<'a> as y when hkey = y.hkey && x = y.node -> y
>                 | _ -> loop empty_pos (i+1)
>             else
>                 let node = {node=x; hkey=hkey; tag=counter}
>                 counter <- counter+1
>                 if empty_pos <> -1 then
>                     let mutable m = bucket.[[empty_pos]]
>                     m.Target <- node
>                 else
>                     bucket.Add (GCHandle.Alloc(node,GCHandleType.Weak))
>                     total_size <- total_size+1
>                     if total_size > limit * Array.length table then t.Resize()
>                 node
> 
>         loop -1 0 // `-1` indicates the state of no empty bucket
> 
>     override __.Finalize() =
>         if is_finalized = false then
>             table |> (Array.iter << Seq.iter) (fun x -> x.Free())
>             is_finalized <- true
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## Startup
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #r 
> @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> open Argu
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### PrimitiveType
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type PrimitiveType =
>     | UInt8T | UInt16T | UInt32T | UInt64T
>     | Int8T | Int16T | Int32T | Int64T
>     | Float32T | Float64T
>     | BoolT | StringT | CharT
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### DefaultEnv
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type DefaultEnv = {
>     port : int
>     default_int : PrimitiveType
>     default_uint : PrimitiveType
>     default_float : PrimitiveType
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### CliArguments
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type CliArguments =
>     | [[<Mandatory;Unique>]] Port of int
>     | [[<Unique>]] Default_Int of string
>     | [[<Unique>]] Default_Float of string
> 
>     interface IArgParserTemplate with
>         member s.Usage =
>             match s with
>             | Port _ -> "specify a primary port."
>             | Default_Int _ -> "specify the default int: i8, i16, i32, i64, u8, 
> u16, u32, u64"
>             | Default_Float _ -> "specify the default float: f32, f64"
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### parseStartup
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let parseStartup args =
>     let parser = ArgumentParser.Create<CliArguments>(programName = "spiral.exe")
>     let results = parser.ParseCommandLine(args)
>     let int = 
>         match results.GetResult(Default_Int,"i32") with
>         | "i8" -> Int8T
>         | "i16" -> Int16T
>         | "i32" -> Int32T
>         | "i64" -> Int64T
>         | "u8" -> UInt8T
>         | "u16" -> UInt16T
>         | "u32" -> UInt32T
>         | "u64" -> UInt64T
>         | x -> failwith $"Invalid default int.\nGot: %s{x}\nExpected one of: i8,
> i16, i32, i64, u8, u16, u32, u64"
> 
>     let uint =
>         match int with
>         | Int8T -> UInt8T
>         | Int16T -> UInt16T
>         | Int32T -> UInt32T
>         | Int64T -> UInt64T
>         | x -> x // If the int is unsigned then make them the same type.
>     {
>     port = results.GetResult(Port)
>     default_int = int
>     default_uint = uint
>     default_float = 
>         match results.GetResult(Default_Float,"f64") with
>         | "f32" -> Float32T
>         | "f64" -> Float64T
>         | x -> failwith $"Invalid default float.\nGot: %s{x}\nExpected one of: 
> f32, f64"
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## Utils
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> open System.Collections.Generic
> open System.Runtime.CompilerServices
> // open Common
> #if !INTERACTIVE
> open Lib
> #endif
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### list_try_zip
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let list_try_zip a b =
>     try Some (List.zip a b) with _ -> None
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### get_default
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline get_default (memo_dict: Dictionary<_,_>) k def =
>     match memo_dict.TryGetValue k with
>     | true, v -> v
>     | false, _ -> def()
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### memoize'
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline memoize' (memo_dict: ConditionalWeakTable<_,_>) f k =
>     match memo_dict.TryGetValue k with
>     | true, v -> v
>     | false, _ -> let v = f k in memo_dict.Add(k,v); v
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### memoize
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline memoize (memo_dict: Dictionary<_,_>) f k =
>     match memo_dict.TryGetValue k with
>     | true, v -> v
>     | false, _ -> let v = f k in memo_dict.Add(k,v); v
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### lines 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let lines (str : string) =
>     str.Split([[|"\r\n";"\r";"\n"|]],System.StringSplitOptions.None)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### remove 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline remove (dict : Dictionary<_,_>) x on_succ on_fail =
>     let mutable q = Unchecked.defaultof<_>
>     if dict.Remove(x, &q) then on_succ q else on_fail ()
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### file_uri
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let file_uri (x : string) =
>     let result = x |> SpiralFileSystem.standardize_path |> 
> SpiralFileSystem.new_file_uri
>     trace Verbose (fun () -> $"Utils.file_uri / x: {x} / result: {result}") 
> _locals
>     result
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //open Hopac
> //open Hopac.Infixes
> //open Hopac.Extensions
> //open Hopac.Stream
> 
> //let print_ch = Ch<string>()
> //let pr x = Hopac.run (Ch.send print_ch (x.ToString()))
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## ParserCombinators
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### index
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline index d = (^a : (member Index: ^b) d)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### index_set
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline index_set i d =
>     (^a : (member set_Index: ^b -> unit) (d,i))
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### (.>>.)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline (.>>.) a b d =
>     match a d with
>     | Ok a ->
>         match b d with
>         | Ok b -> Ok (a,b)
>         | Error x -> Error x
>     | Error x -> Error x   
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### tuple3
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline tuple3 a b c d =
>     match a d with
>     | Ok a ->
>         match b d with
>         | Ok b -> 
>             match c d with
>             | Ok c -> Ok (a, b, c)
>             | Error x -> Error x
>         | Error x -> Error x
>     | Error x -> Error x  
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### tuple4 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline tuple4 a b c d' d =
>     match a d with
>     | Ok a ->
>         match b d with
>         | Ok b -> 
>             match c d with
>             | Ok c -> 
>                 match d' d with
>                 | Ok d' -> Ok (a, b, c, d')
>                 | Error x -> Error x
>             | Error x -> Error x
>         | Error x -> Error x
>     | Error x -> Error x  
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### tuple5 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline tuple5 a b c d' e d =
>     match a d with
>     | Ok a ->
>         match b d with
>         | Ok b -> 
>             match c d with
>             | Ok c -> 
>                 match d' d with
>                 | Ok d' -> 
>                     match e d with
>                     | Ok e -> Ok (a, b, c, d', e)
>                     | Error x -> Error x
>                 | Error x -> Error x
>             | Error x -> Error x
>         | Error x -> Error x
>     | Error x -> Error x  
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### tuple6 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline tuple6 a b c d' e f d =
>     match a d with
>     | Ok a ->
>         match b d with
>         | Ok b -> 
>             match c d with
>             | Ok c -> 
>                 match d' d with
>                 | Ok d' -> 
>                     match e d with
>                     | Ok e -> 
>                         match f d with
>                         | Ok f -> Ok (a, b, c, d', e, f)
>                         | Error x -> Error x
>                     | Error x -> Error x
>                 | Error x -> Error x
>             | Error x -> Error x
>         | Error x -> Error x
>     | Error x -> Error x 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### tuple7 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline tuple7 a b c d' e f g d =
>     match a d with
>     | Ok a ->
>         match b d with
>         | Ok b -> 
>             match c d with
>             | Ok c -> 
>                 match d' d with
>                 | Ok d' -> 
>                     match e d with
>                     | Ok e -> 
>                         match f d with
>                         | Ok f ->
>                             match g d with
>                             | Ok g -> Ok (a, b, c, d', e, f, g)
>                             | Error x -> Error x
>                         | Error x -> Error x
>                     | Error x -> Error x
>                 | Error x -> Error x
>             | Error x -> Error x
>         | Error x -> Error x
>     | Error x -> Error x  
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### pipe2
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline pipe2 a b f d =
>     match a d with
>     | Ok a ->
>         match b d with
>         | Ok b -> Ok (f a b)
>         | Error x -> Error x
>     | Error x -> Error x  
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### pipe3
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline pipe3 a b c f d =
>     match a d with
>     | Ok a ->
>         match b d with
>         | Ok b -> 
>             match c d with
>             | Ok c -> Ok (f a b c)
>             | Error x -> Error x
>         | Error x -> Error x
>     | Error x -> Error x  
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### pipe4
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline pipe4 a b c d' f d =
>     match a d with
>     | Ok a ->
>         match b d with
>         | Ok b -> 
>             match c d with
>             | Ok c -> 
>                 match d' d with
>                 | Ok d' -> Ok (f a b c d')
>                 | Error x -> Error x
>             | Error x -> Error x
>         | Error x -> Error x
>     | Error x -> Error x  
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### pipe5
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline pipe5 a b c d' e f d =
>     match a d with
>     | Ok a ->
>         match b d with
>         | Ok b -> 
>             match c d with
>             | Ok c -> 
>                 match d' d with
>                 | Ok d' -> 
>                     match e d with
>                     | Ok e -> Ok (f a b c d' e)
>                     | Error x -> Error x
>                 | Error x -> Error x
>             | Error x -> Error x
>         | Error x -> Error x
>     | Error x -> Error x  
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### (.>>)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline (.>>) a b d =
>     match a d with
>     | Ok a ->
>         match b d with
>         | Ok b -> Ok a
>         | Error x -> Error x
>     | Error x -> Error x   
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### (>>.) 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline (>>.) a b d =
>     match a d with
>     | Ok a ->
>         match b d with
>         | Ok b -> Ok b
>         | Error x -> Error x
>     | Error x -> Error x   
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### opt
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline opt a d =
>     let s = index d
>     match a d with
>     | Ok a -> Ok(Some a)
>     | Error x -> 
>         if s = index d then Ok(None)
>         else Error x
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### optional
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline optional a d = 
>     let s = index d
>     match a d with
>     | Ok a -> Ok()
>     | Error x -> 
>         if s = index d then Ok()
>         else Error x
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### (|>>)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline (|>>) a b d =
>     match a d with
>     | Ok a -> Ok(b a)
>     | Error x -> Error x
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### (>>%) 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline (>>%) a b d =
>     match a d with
>     | Ok a -> Ok(b)
>     | Error x -> Error x
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### (>>=)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline (>>=) a b d =
>     match a d with
>     | Ok a -> b a d
>     | Error x -> Error x
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### (>>=?)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline (>>=?) a b d =
>     let i = index d
>     match a d with
>     | Ok a -> 
>         let i' = index d
>         match b a d with
>         | Ok _ as x -> x
>         | Error _ as x -> (if i' = index d then index_set i d); x // Backtracks 
> to the beginning if the parser state has not changed.
>     | Error x -> Error x
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### many_iter
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline many_iter f a d =
>     let rec loop () =
>         let s = index d
>         match a d with
>         | Ok _ when s = index d -> failwith "The parser succeeded without 
> changing the parser index in `many`. Had an exception not been raised the parser
> would have diverged."
>         | Ok x -> f x; loop()
>         | Error er -> if s = index d then Ok() else Error er
>     loop ()
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### many_resize_array
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline many_resize_array a d =
>     let ar = ResizeArray()
>     match many_iter ar.Add a d with
>     | Ok() -> Ok(ar)
>     | Error er -> Error er
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### many_array
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline many_array a d =
>     many_resize_array a d |> Result.map (fun x -> x.ToArray())
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### many
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline many a d =
>     many_resize_array a d |> Result.map Seq.toList
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### sepBy
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline sepBy a b d =
>     let s = index d
>     match a d with
>     | Ok a' -> (many (b >>. a) |>> fun b -> a' :: b) d
>     | Error x -> if s = index d then Ok [[]] else Error x
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### sepBy1
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline sepBy1 a b d =
>     match a d with
>     | Ok a' -> (many (b >>. a) |>> fun b -> a' :: b) d
>     | Error x -> Error x
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### many1
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline many1 a d =
>     match a d with
>     | Ok a' -> (many a |>> fun b -> a' :: b) d
>     | Error x -> Error x
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### attempt
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline attempt a d =
>     let s = index d
>     match a d with
>     | Ok x -> Ok x
>     | Error a as a' -> index_set s d; a'
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### restore
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> /// Restores the index on an error if at least i tokens have been consumed.
> let inline restore i a d =
>     let s = index d
>     match a d with
>     | Ok x -> Ok x
>     | Error _ as er -> (if index d <= s + i then index_set s d); er
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### alt
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline alt s a b d =
>     match a d with
>     | Ok x -> Ok x
>     | Error a as a' -> 
>         if s = index d then
>             match b d with
>             | Ok x -> Ok x
>             | Error b -> if s = index d then Error(List.append a b) else Error b
>         else
>             a'
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### (<|>)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline (<|>) a b d = let s = index d in alt s a b d
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### (<|>%)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline (<|>%) a b d =
>     let s = index d
>     match a d with
>     | Ok x -> Ok x
>     | Error _ as a' -> if s = index d then Ok b else a'
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### choice
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline choice ar d =
>     let s = index d
>     let rec loop i =
>         if i < Array.length ar then
>             match ar.[[i]] d with
>             | Ok x -> Ok x
>             | Error a as a' -> 
>                 if s = index d then
>                     match loop (i+1) with
>                     | Ok x -> Ok x
>                     | Error b -> Error(List.append a b)
>                 else
>                     a'
>         else
>             Error [[]]
>     loop 0
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### between
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline between a b c = a >>. c .>> b
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## LineParsers
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> // open System
> // open System.Text
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### TokenizerRange
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type TokenizerRange = {from : int; nearTo : int}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### TokenizerError
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type TokenizerError = string
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### Tokenizer
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Tokenizer = {
>     text : string // A single line.
>     mutable from : int
>     } with
> 
>     member t.Index with get() = t.from and set i = t.from <- i
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### range_char
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let range_char i = {from=i; nearTo=i+1}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### error_char
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let error_char i er = Result.Error [[range_char i, er]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### inc'
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inc' i (s : Tokenizer) = s.from <- s.from+i
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### inc
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inc (s : Tokenizer) = inc' 1 s
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### eolLineParsers
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> /// End Of Line character
> let eolLineParsers = System.Char.MaxValue
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### peek'
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let peek' (s : Tokenizer) i =
>     let i = s.from + i
>     if 0 <= i && i < s.text.Length then s.text.[[i]]
>     else eolLineParsers
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### peek
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let peek (s : Tokenizer) = peek' s 0
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### many1Satisfy2L
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline many1Satisfy2L init body label (s : Tokenizer) = 
>     let x = peek s
>     if init x && x <> eolLineParsers then
>         inc s
>         let rec loop (b : System.Text.StringBuilder) = 
>             let x = peek s
>             if body x && x <> eolLineParsers then inc s; b.Append(x) |> loop
>             else b.ToString()
>         Result.Ok(loop (System.Text.StringBuilder().Append(x)))
>     else
>         let i = s.from
>         error_char i label
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### many1SatisfyL
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline many1SatisfyL body label (s : Tokenizer) =
>     many1Satisfy2L body body label s
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### skip
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline skip c (s : Tokenizer) =
>     let b = peek s = c in (if b then inc s); b
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### spaces'
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rec spaces' (s : Tokenizer) =
>     if peek s = ' ' then inc s; spaces' s
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### spaces
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let spaces s =
>     spaces' s |> Result.Ok
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### spaces1
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let spaces1 (s : Tokenizer) =
>     if peek s = ' ' then inc s; spaces s else error_char s.from "space"
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### skip_char
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let skip_char c (s : Tokenizer) =
>     let from = s.from
>     if skip c s then Ok() else error_char from (sprintf "'%c'" c)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### skip_string 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let skip_string x (s : Tokenizer) =
>     if System.String.Compare(s.text,s.from,x,0,x.Length) = 0 then inc' x.Length 
> s; Ok()
>     else error_char s.from x
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### anyOf
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let anyOf (l : char list) (s : Tokenizer) =
>     let c = peek s
>     if Seq.contains c l then 
>         inc s; Result.Ok(c)
>     else
>         let i = s.from
>         Error (List.map (fun c -> range_char i, string c) l)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### chars_till_string
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let chars_till_string close (s : Tokenizer) =
>     assert (close <> "")
>     let rec loop (b : System.Text.StringBuilder) =
>         let x = peek s
>         if x = close.[[0]] && 
> System.String.Compare(s.text,s.from,close,1,close.Length-1) = 0 then inc' 
> close.Length s; Ok(b.ToString())
>         else 
>             if x <> eolLineParsers then inc s; b.Append(x) |> loop
>             else error_char s.from close
>     loop(System.Text.StringBuilder())
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### numberLineParsers
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> /// Parses a number as a sequence of digits and optionally underscores. Filters 
> out the underscores from the result.
> let numberLineParsers (s : Tokenizer) = 
>     let x = peek s
>     if System.Char.IsDigit x then
>         inc s
>         let rec loop (b : System.Text.StringBuilder) = 
>             let x = peek s
>             if x = '_' then inc s; loop b
>             elif System.Char.IsDigit x then inc s; loop(b.Append(x))
>             else Ok(b.ToString())
>         loop (System.Text.StringBuilder().Append(x))
>     else
>         let i = s.from
>         error_char i "number"
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### number_fractional
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let number_fractional s =
>     (numberLineParsers .>>. (opt (skip_char '.' >>. numberLineParsers))) s
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## VSCTypes
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### VSCPos
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type VSCPos = {|line : int; character : int|}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### VSCRange
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type VSCRange = VSCPos * VSCPos
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### RString
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type RString = VSCRange * string
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### PackageId
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type PackageId = int
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### ModuleId
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type ModuleId = int
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### DirId
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type DirId = int
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### GlobalId
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type GlobalId = { package_id : PackageId; module_id : ModuleId; tag : int }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### RGlobalId
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type RGlobalId = VSCRange * GlobalId
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### SpiEdit
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type SpiEdit = {|from: int; nearTo: int; lines: string [[]]|}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## Tokenize
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> // open System
> // open System.Text
> // open FSharpx.Collections
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### TokenKeyword
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type TokenKeyword =
>     | SpecIn
>     | SpecAnd
>     | SpecFun
>     | SpecMatch
>     | SpecTypecase
>     | SpecFunction
>     | SpecWith
>     | SpecWithout
>     | SpecAs
>     | SpecWhen
>     | SpecInl
>     | SpecForall
>     | SpecExists
>     | SpecLet
>     | SpecInm
>     | SpecInb
>     | SpecRec
>     | SpecIf
>     | SpecThen
>     | SpecElif
>     | SpecElse
>     | SpecJoin
>     | SpecJoinBackend
>     | SpecType
>     | SpecNominal
>     | SpecReal
>     | SpecUnion
>     | SpecOpen
>     | SpecWildcard
>     | SpecPrototype
>     | SpecInstance
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### ParenthesisState
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type ParenthesisState = Open | Close
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### Parenthesis
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Parenthesis = Round | Square | Curly
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### MacroEnum
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type MacroEnum = MTerm | MType | MTypeLit
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### Literal
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Literal = 
>     | LitUInt8 of uint8
>     | LitUInt16 of uint16
>     | LitUInt32 of uint32
>     | LitUInt64 of uint64
>     | LitInt8 of int8
>     | LitInt16 of int16
>     | LitInt32 of int32
>     | LitInt64 of int64
>     | LitFloat32 of float32
>     | LitFloat64 of float
>     | LitBool of bool
>     | LitString of string
>     | LitChar of char
> 
>     // Converts the literal back to their string representation. Doesn't 
> override the default printer.
>     member l.LitToString() =
>         match l with
>         | LitUInt8 x -> x.ToString("R")
>         | LitUInt16 x -> x.ToString("R")
>         | LitUInt32 x -> x.ToString("R")
>         | LitUInt64 x -> x.ToString("R")
>         | LitInt8 x -> x.ToString("R")
>         | LitInt16 x -> x.ToString("R")
>         | LitInt32 x -> x.ToString("R")
>         | LitInt64 x -> x.ToString("R")
>         | LitFloat32 x -> x.ToString("R")
>         | LitFloat64 x -> x.ToString("R")
>         | LitBool x -> x.ToString()
>         | LitString x -> x
>         | LitChar x -> x.ToString()
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### SemanticTokenLegend
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type SemanticTokenLegend =
>     | variable = 0
>     | symbol = 1
>     | string = 2
>     | number = 3
>     | operator = 4
>     | unary_operator = 5
>     | comment = 6
>     | keyword = 7
>     | parenthesis = 8
>     | type_variable = 9
>     | escaped_char = 10
>     | unescaped_char = 11
>     | number_suffix = 12
>     | escaped_var = 13
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### SpiralToken
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type SpiralToken =
>     | TokVar of string * SemanticTokenLegend
>     | TokSymbol of string * SemanticTokenLegend
>     | TokOperator of string * SemanticTokenLegend
>     | TokUnaryOperator of string * SemanticTokenLegend
>     | TokValue of Literal
>     | TokValueSuffix
>     | TokDefaultValue of string
>     | TokComment of string
>     | TokKeyword of TokenKeyword
>     | TokParenthesis of Parenthesis * ParenthesisState
>     | TokStringOpen | TokStringClose
>     | TokText of string
>     | TokEscapedChar of char
>     | TokEscapedVar
>     | TokUnescapedChar of char
>     | TokMacroOpen | TokMacroClose
>     | TokMacroTermVar of string
>     | TokMacroTypeVar of string
>     | TokMacroTypeLitVar of string
>     | TokMacroExpression of MacroEnum * ParenthesisState
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### token_groups
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let token_groups = function
>     | TokUnaryOperator(_,r) | TokOperator(_,r) | TokVar(_,r) | TokSymbol(_,r) ->
> r
>     | TokValue (LitChar _) | TokStringOpen | TokStringClose | TokText _ | 
> TokMacroOpen | TokMacroClose | TokValue(LitString _) -> 
> SemanticTokenLegend.string
>     | TokComment _ -> SemanticTokenLegend.comment
>     | TokKeyword _ -> SemanticTokenLegend.keyword
>     | TokParenthesis _ -> SemanticTokenLegend.parenthesis
>     | TokMacroTypeVar _ -> SemanticTokenLegend.type_variable
>     | TokMacroTypeLitVar _ -> SemanticTokenLegend.type_variable
>     | TokMacroTermVar _ -> SemanticTokenLegend.variable
>     | TokMacroExpression _ -> SemanticTokenLegend.parenthesis
>     | TokEscapedChar _ -> SemanticTokenLegend.escaped_char
>     | TokEscapedVar -> SemanticTokenLegend.escaped_var
>     | TokUnescapedChar _ -> SemanticTokenLegend.unescaped_char
>     | TokValue _ | TokDefaultValue _ -> SemanticTokenLegend.number
>     | TokValueSuffix -> SemanticTokenLegend.number_suffix
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### show_lit
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let show_lit = function
>     | LitUInt8 x -> sprintf "%iu8" x
>     | LitUInt16 x -> sprintf "%iu16" x
>     | LitUInt32 x -> sprintf "%iu32" x
>     | LitUInt64 x -> sprintf "%iu64" x
>     | LitInt8 x -> sprintf "%ii8" x
>     | LitInt16 x -> sprintf "%ii16" x
>     | LitInt32 x -> sprintf "%ii32" x
>     | LitInt64 x -> sprintf "%ii64" x
>     | LitFloat32 x -> sprintf "%ff32" x
>     | LitFloat64 x -> sprintf "%ff64" x
>     | LitBool x -> sprintf "%b" x
>     | LitString x -> sprintf "%s" x
>     | LitChar x -> sprintf "%c" x
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### is_small_var_char_starting
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let is_small_var_char_starting c = System.Char.IsLower c || c = '_'
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### is_var_char
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let is_var_char c = System.Char.IsLetterOrDigit c || c = '_' || c = '''
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### is_big_var_char_starting
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let is_big_var_char_starting c = System.Char.IsUpper c
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### is_parenth_open
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let is_var_char_starting c = System.Char.IsLetter c || c = '_'
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### is_parenth_open
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let is_parenth_open c = 
>     let f x = c = x
>     f '(' || f '[[' || f '{'
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### is_parenth_close
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let is_parenth_close c = 
>     let f x = c = x
>     f ')' || f ']]' || f '}'
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### is_operator_char
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> // http://www.asciitable.com/
> let is_operator_char c =
>     let f x = c = x
>     '!' <= c && c <= '~' && (is_var_char c || f '"' || is_parenth_open c || 
> is_parenth_close c) = false
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### is_prefix_separator_char
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let is_prefix_separator_char c = 
>     let f x = c = x
>     f ' ' || f eolLineParsers || is_parenth_open c
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### is_postfix_separator_char
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let is_postfix_separator_char c = 
>     let f x = c = x
>     f ' ' || f eolLineParsers || is_parenth_close c
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### is_separator_char
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let is_separator_char c = is_prefix_separator_char c || is_parenth_close c
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### var
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let var (s: Tokenizer) = 
>     let from = s.from
>     let ok x = Result.Ok ({from=from; nearTo=s.from}, x)
>     let body x _ = 
>         if skip ':' s then error_char from ": is not allowed directly after a 
> var."
>         else
>             let f x = TokKeyword(x)
>             match x with
>             | "in" -> f SpecIn
>             | "and" -> f SpecAnd | "fun" -> f SpecFun
>             | "match" -> f SpecMatch | "typecase" -> f SpecTypecase
>             | "function" -> f SpecFunction
>             | "with" -> f SpecWith | "without" -> f SpecWithout
>             | "as" -> f SpecAs | "when" -> f SpecWhen
>             | "inl" -> f SpecInl | "forall" -> f SpecForall
>             | "let" -> f SpecLet | "inm" -> f SpecInm
>             | "inb" -> f SpecInb | "rec" -> f SpecRec
>             | "if" -> f SpecIf | "then" -> f SpecThen
>             | "elif" -> f SpecElif | "else" -> f SpecElse
>             | "join" -> f SpecJoin | "join_backend" -> f SpecJoinBackend
>             | "type" -> f SpecType | "nominal" -> f SpecNominal 
>             | "real" -> f SpecReal | "union" -> f SpecUnion
>             | "open" -> f SpecOpen | "_" -> f SpecWildcard
>             | "prototype" -> f SpecPrototype | "instance" -> f SpecInstance
>             | "true" -> TokValue(LitBool true) | "false" -> TokValue(LitBool 
> false)
>             | "exists" -> f SpecExists
>             | x -> TokVar(x,SemanticTokenLegend.variable)
>             |> ok
> 
>     (many1Satisfy2L is_var_char_starting is_var_char "variable" >>= body .>> 
> spaces) s
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### numberTokenize
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let numberTokenize (s: Tokenizer) = 
>     let from = s.from
> 
>     let parser (s: Tokenizer) = 
>         if peek s = '-' && System.Char.IsDigit (peek' s 1) && 
> is_prefix_separator_char (peek' s -1) then 
>             inc s
>             number_fractional s |> Result.map (function 
>                 | (a,Some b) -> sprintf "-%s.%s" a b
>                 | (a,None) -> "-"+a)
>         else number_fractional s |> Result.map (function 
>                 | (a,Some b) -> sprintf "%s.%s" a b
>                 | (a,None) -> a)
>     
>     let followedBySuffix x (s: Tokenizer) =
>         let from' = s.from
>         let inline safe_parse string_to_val val_to_lit val_dsc =
>             if (let x = peek s in is_separator_char x || is_operator_char x) 
> then
>                 match string_to_val x with
>                 | true, x -> Ok [[{from=from; nearTo=from'}, TokValue(val_to_lit
> x); {from=from'; nearTo=s.from}, TokValueSuffix]]
>                 | false, _ -> Error [[{from=from; nearTo=s.from}, (sprintf "The 
> string %s cannot be safely parsed as %s." x val_dsc)]]
>             else error_char s.from "separator"
>         let skip c = skip c s
>         if skip 'i' then
>             if skip '8' then safe_parse System.SByte.TryParse LitInt8 "i8"
>             elif skip '1' && skip '6' then safe_parse System.Int16.TryParse 
> LitInt16 "i16"
>             elif skip '3' && skip '2' then safe_parse System.Int32.TryParse 
> LitInt32 "i32"
>             elif skip '6' && skip '4' then safe_parse System.Int64.TryParse 
> LitInt64 "i64"
>             else error_char s.from "8,16,32 or 64"
>         elif skip 'u' then
>             if skip '8' then safe_parse System.Byte.TryParse LitUInt8 "uint8"
>             elif skip '1' && skip '6' then safe_parse System.UInt16.TryParse 
> LitUInt16 "u16"
>             elif skip '3' && skip '2' then safe_parse System.UInt32.TryParse 
> LitUInt32 "u32"
>             elif skip '6' && skip '4' then safe_parse System.UInt64.TryParse 
> LitUInt64 "u64"
>             else error_char s.from "8,16,32 or 64"
>         elif skip 'f' then
>             if skip '3' && skip '2' then safe_parse System.Single.TryParse 
> LitFloat32 "f32"
>             elif skip '6' && skip '4' then safe_parse System.Double.TryParse 
> LitFloat64 "f64"
>             else error_char s.from "32 or 64"
>         else Ok [[{from=from; nearTo=s.from}, TokDefaultValue x]]
> 
>     (parser >>= followedBySuffix .>> spaces) s
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### symbol
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let symbol s =
>     let from = s.from
>     let f x = ({from=from; nearTo=s.from}, x)
> 
>     let symbol x = TokSymbol(x,SemanticTokenLegend.symbol)
>     let x = peek s
>     let x' = peek' s 1
>     if x = '.' && x' = '(' then inc' 2 s; ((many1SatisfyL is_operator_char 
> "operator") .>> skip_char ')' |>> (symbol >> f) .>> spaces) s
>     elif x = '.' && is_var_char_starting x' then inc s; ((many1SatisfyL 
> is_var_char "variable") |>> (symbol >> f) .>> spaces) s
>     else error_char from "symbol"
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### comment
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let comment (s : Tokenizer) =
>     if peek s = '/' && peek' s 1 = '/' then 
>         let from = s.from
>         inc' 2 s
>         while peek s = '/' || (peek s = '!' && peek' s 1 = ' ') do
>             inc s
>         if skip ' ' s then
>             let com = s.text.[[s.from..]]
>             s.from <- s.text.Length
>             Ok ({from=from; nearTo=s.from}, TokComment com)
>         else error_char s.from "whitespace"
>     else
>         error_char s.from "comment"
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### operator
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let operator (s : Tokenizer) = 
>     let from = s.from
>     let ok x = ({from=from; nearTo=s.from}, x) |> Ok
>     let is_separator_prev = is_prefix_separator_char (peek' s -1)
>     let f name (s: Tokenizer) = 
>         if is_separator_prev && (is_postfix_separator_char (peek s) = false) 
> then TokUnaryOperator(name,SemanticTokenLegend.unary_operator) |> ok
>         else TokOperator(name,SemanticTokenLegend.operator) |> ok
>     (many1SatisfyL is_operator_char "operator"  >>= f .>> spaces) s
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### string_raw
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let string_raw s =
>     let from = s.from
>     let f x = {from=from; nearTo=s.from}, TokValue(LitString x)
>     (skip_string "@\"" >>. chars_till_string "\"" |>> f .>> spaces) s
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### char_quoted
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let char_quoted s = 
>     let char_quoted_body (s: Tokenizer) =
>         let inline read on_succ =
>             let x = peek s
>             if x <> eolLineParsers then inc s; on_succ x
>             else error_char s.from "character or '"
>         read (function
>             | '\\' -> 
>                 read (Ok << function
>                     | 'n' -> '\n' | 'r' -> '\r' | 't' -> '\t' | 'b' -> '\b'
>                     | x -> x
>                     )
>             | x -> Ok x
>             )
>     let from = s.from
>     let f _ x _ = {from=from; nearTo=s.from}, TokValue(LitChar x)
>     (pipe3 (skip_char '\'') char_quoted_body (skip_char '\'') f .>> spaces) s
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### special_char
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline special_char l text s =
>     let inline f from x = {from=from; nearTo=s.from}, x
>     let f = f s.from
>     inc s
>     let esc x = inc s; text (f (TokEscapedChar x) :: l)
>     let unesc x = inc s; text (f (TokUnescapedChar x) :: l)
>     match peek s with 
>     | x when x = eolLineParsers -> error_char s.from "character"
>     | 'n' -> esc '\n' | 'r' -> esc '\r'  | 't' -> esc '\t'  | 'b' -> esc '\b' 
>     | x -> unesc x
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### string_quoted'
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let string_quoted' s =
>     let inline f from x = {from=from; nearTo=s.from}, x
>     let close l = let f = f s.from in inc s; List.rev (f TokStringClose :: l) |>
> Ok
>     let rec text l =
>         let f = f s.from
>         let rec loop (str : System.Text.StringBuilder) =
>             let l () = if 0 < str.Length then f (TokText(str.ToString())) :: l 
> else l
>             match peek s with
>             | x when x = eolLineParsers -> error_char s.from "character or \""
>             | '\\' -> special_char (l ()) text s
>             | '"' -> close (l ())
>             | x -> inc s; loop (str.Append(x))
>         loop (System.Text.StringBuilder())
>         
>     match peek s with
>     | '"' -> let f = f s.from in inc s; text [[f TokStringOpen]]
>     | _ -> error_char s.from "\""
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### string_quoted
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let string_quoted s = (string_quoted' .>> spaces) s
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### TokenizerMacro
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type TokenizerMacro =
>     | Text of TokenizerRange * string
>     | EscapedChar of TokenizerRange * char
>     | EscapedVar of TokenizerRange
>     | UnescapedChar of TokenizerRange * char
>     | Expression of TokenizerRange * string * MacroEnum
>     | Var of TokenizerRange * string * MacroEnum
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### range
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline range p s = 
>     let from = s.from
>     match p s with
>     | Ok x -> Ok({from=from; nearTo=s.from}, x)
>     | Error l -> Error l
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### brackets
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let brackets s =
>     let from = s.from
>     let f spec = inc s; (spaces >>% ({from=from; nearTo=s.from}, 
> TokParenthesis(spec))) s
>     match peek s with
>     | '(' -> f (Round,Open) | '[[' -> f (Square,Open) | '{' -> f (Curly,Open)
>     | ')' -> f (Round,Close) | ']]' -> f (Square,Close) | '}' -> f (Curly,Close)
>     | _ -> error_char s.from "`(`,`[[`,`{`,`}`,`]]` or `)`"
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### tab
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let tab s = if peek s = '\t' then Error [[range_char (index s), "Tabs are not 
> allowed."]] else Error [[]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### eolTokenize
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let eolTokenize s = if peek s = eolLineParsers then Ok [[]] else Error 
> [[range_char (index s), "end of line"]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### token
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rec token s =
>     let i = s.from
>     let inline (+) a b = alt i a b
>     let individual_tokens = string_quoted + numberTokenize + ((var + symbol + 
> string_raw + char_quoted + brackets + comment + operator) |>> fun x -> [[x]]) 
> |>> fun x -> x, [[]]
>     (macro + individual_tokens) s
> and tokenize text =
>     let mutable ar = FSharpx.Collections.PersistentVector.empty
>     let mutable er = [[]]
>     let tokens =
>         many_iter (fun (x : (TokenizerRange * SpiralToken) list,er' : 
> (TokenizerRange * string) list) ->
>             List.iter (fun x -> ar <- FSharpx.Collections.PersistentVector.conj 
> x ar) x
>             er <- List.append er' er
>             ) token
>     let er = match (spaces >>. tokens .>> (eolTokenize <|> tab)) {from=0; 
> text=text} with Ok() -> er | Error er' -> List.append er' er
>     ar, er
> and macro s =
>     let char_to_macro_expr = function
>         | '`' -> MType
>         | '!' -> MTerm
>         | '@' -> MTypeLit
>         | _ -> failwith "Compiler error: Unknown char in the tokenizer."
> 
>     let p_special_char s =
>         match peek' s 0, peek' s 1 with
>         | '\\', ('n' | 'r' | 't' | 'b' as c) -> 
>             let r = {from=s.from; nearTo=s.from+2}
>             inc' 2 s
>             Ok(EscapedChar(r, c))
>         | '\\', ('v' as c) -> 
>             let r = {from=s.from; nearTo=s.from+2}
>             inc' 2 s
>             Ok(EscapedVar(r))
>         | '\\', c ->
>             let r = {from=s.from; nearTo=s.from+2}
>             inc' 2 s 
>             Ok(UnescapedChar(r, c))
>         | _ -> error_char s.from "\\"
> 
>     let p_var s = (many1Satisfy2L is_var_char_starting is_var_char "variable") s
>     let p_text closing_char s = (range (many1SatisfyL (fun c -> c <> 
> closing_char && c <> '`' && c <> '!' && c <> '@' && c <> '\\') "macro text") |>>
> Text) s
>     let p_expr s = 
>         let start = anyOf [['`'; '!'; '@']]
>         let case_paren start_char = 
>             let mutable c = 1 // number of open parens.
>             between (skip_char '(') (skip_char ')') (many1SatisfyL (fun x -> // 
> Stops when the number of open parens is 0.
>                 c <- c + (match x with '(' -> 1 | ')' -> -1 | _ -> 0)
>                 c > 0
>                 ) "not )") 
>             |>> fun (body) range -> Expression(range,body,char_to_macro_expr 
> start_char)
>         let case_var start_char =
>             (skip_char start_char |>> fun () range -> 
> UnescapedChar(range,start_char))
>             <|> (p_var |>> fun body range -> Var(range,body,char_to_macro_expr 
> start_char))
>         (range (start >>= fun start_char -> (case_paren start_char <|> case_var 
> start_char))
>         |>> fun (range, f) -> f range) s
>     let p_macro_inner closing_char s = (many (p_special_char <|> p_text 
> closing_char <|> p_expr) <|>% [[]]) s
>     let p_macro s =
>         let body a b = range (between (skip_string a) (skip_char b) 
> (p_macro_inner b))
>         (body "$\"" '"' <|> body "$'" ''') s
> 
>     match (p_macro .>> spaces) s with
>     | Ok(r, x) -> 
>         let start = 
>             let r = {from=r.from; nearTo=r.from+2}
>             r, TokMacroOpen
>         let end_ = 
>             let r = {from=r.nearTo-1; nearTo=r.nearTo}
>             r, TokMacroClose
>     
>         let mutable er = [[]]
>         x |> List.collect (function
>             | Text(r,x) -> [[r, TokText x]]
>             | EscapedChar(r,x) ->
>                 let x = match x with 'n' -> '\n' | 'r' -> '\r' | 't' -> '\t' | 
> 'b' -> '\b' | x -> x
>                 [[r, TokEscapedChar x]]
>             | EscapedVar(r) -> [[r, TokEscapedVar]]
>             | UnescapedChar(r,x) -> [[r, TokUnescapedChar x]]
>             | Var(r,x,MType) -> [[r, TokMacroTypeVar x]]
>             | Var(r,x,MTypeLit) -> [[r, TokMacroTypeLitVar x]]
>             | Var(r,x,MTerm) -> [[r, TokMacroTermVar x]]
>             | Expression(r,x,t) -> 
>                 let start = 
>                     let r = {from=r.from; nearTo=r.from+2}
>                     r, TokMacroExpression(t,Open)
>                 let end_ = 
>                     let r = {from=r.nearTo-1; nearTo=r.nearTo}
>                     r, TokMacroExpression(t,Close)
>                 let middle,er' =
>                     let adjust_range (r : TokenizerRange,x) = {from=r.from + 
> (fst start).nearTo; nearTo=r.nearTo + (fst start).nearTo}, x
>                     let middle,er' = tokenize x
>                     FSharpx.Collections.PersistentVector.map adjust_range 
> middle,
>                     List.map adjust_range er'
>                 er <- List.append er' er
>                 List.concat [[[[start]]; List.ofSeq middle; [[end_]]]]
>             )
>         |> fun l -> Ok(List.concat [[[[start]]; l; [[end_]]]], er)
>     | Error er -> Error er
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### LineToken
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type LineToken = TokenizerRange * SpiralToken
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### LineComment
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type LineComment = TokenizerRange * string
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### LineTokenErrors
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type LineTokenErrors = (TokenizerRange * TokenizerError) list
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### vscode_tokens
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let vscode_tokens ((a,b) : VSCRange) (lines : LineToken 
> FSharpx.Collections.PersistentVector FSharpx.Collections.PersistentVector) =
>     let in_range x = min lines.Length x
>     let from, near_to = in_range a.line, in_range (b.line+1)
>     let toks = ResizeArray()
>     let rec loop i line_delta =
>         if i < near_to then
>             lines.[[i]] |> FSharpx.Collections.PersistentVector.fold (fun 
> (line_delta,from_prev) (r,x) ->
>                 toks.AddRange [[|line_delta; r.from-from_prev; r.nearTo-r.from; 
> int (token_groups x); 0|]]
>                 0, r.from
>                 ) (line_delta, 0)
>             |> fst |> ((+) 1) |> loop (i+1)
>     
>     loop from from
>     toks.ToArray()
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## BlockSplitting
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> // open FSharpx.Collections
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### LineTokens
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type LineTokens = LineToken FSharpx.Collections.PersistentVector 
> FSharpx.Collections.PersistentVector
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### Block<'a>
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Block<'a> = {block: 'a; offset: int}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### block_at
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> /// Reads the comments up to a statement, and then reads the statement body. 
> Leaves any errors for the parsing stage.
> let block_at (lines : LineTokens) i =
>     let mutable block = FSharpx.Collections.PersistentVector.empty
>     let add x = block <- FSharpx.Collections.PersistentVector.conj x block
>     let rec loop_initial i =
>         if i < lines.Length then
>             let x = lines.[[i]]
>             add x
>             if 0 < x.Length then
>                 let r,t = x.[[0]]
>                 if r.from = 0 then
>                     match t with
>                     | TokComment _ -> loop_initial (i+1)
>                     | _ -> loop_body (i+1)
>                 else loop_initial (i+1) // This branch will be an error in the 
> parsing stage unless the token is a comment.
>             else loop_initial (i+1)
>     and loop_body i =
>         if i < lines.Length then
>             let x = lines.[[i]]
>             if 0 < x.Length then
>                 let r,_ = x.[[0]]
>                 if r.from <> 0 then add x; loop_body (i+1)
>             else add x; loop_body (i+1)
>     loop_initial i
>     {block = block; offset = i}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### block_all
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> // Parses all the blocks.
> let rec block_all lines i = 
>     if i < FSharpx.Collections.PersistentVector.length lines then 
>         let x = block_at lines i
>         x :: block_all lines (i+x.block.Length) else [[]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### wdiff_block_all
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> // Parses all the blocks with diffing. Only parses those blocks which are dirty 
> based of the edit range. Preserves ref equality and saves work.
> // Without considering ref preservation, it is functionally equivalent to just 
> call `block_all` on just `lines`.
> // This function is difficult to read as it is several operations fused into one
> loop.
> let wdiff_block_all (blocks : LineTokens Block list) (lines : LineTokens, 
> lines_added, from, nearTo) =
>     // Lines added minus lines removed.
>     let line_adjustment = lines_added - (nearTo - from)
>     // The dirty block boundary needs to be more conservative when a separator 
> is added in the first position of block.
>     // Imagine adding a newline right on a block start. This would extend the 
> previous block, but the naive check would not react to it.
>     // The same goes for pasting an indented piece of text.
>     let dirty_from = let x = lines.[[from]] in from - (if x.Length = 0 || 0 < 
> (fst x.[[0]]).from then 1 else 0)
>     let is_dirty (x : LineTokens Block) = (dirty_from <= x.offset && x.offset < 
> nearTo) || (x.offset <= dirty_from && dirty_from < x.offset + x.block.Length)
>     let rec loop blocks i =
>         if i < lines.Length then
>             match blocks with
>             | x :: xs ->
>                 // If the block is dirty, forget it.
>                 if is_dirty x then loop xs i else 
>                     // If the block is past the removal range, adjust its line 
> offset.
>                     let x = {x with offset=if nearTo <= x.offset then x.offset +
> line_adjustment else x.offset}
>                     // The block can't be dirty here. Hence if the offsets are 
> the same, so are the blocks. Take it.
>                     if x.offset = i then x :: loop xs (i + x.block.Length)
>                     // Else if the block has been skipped over, forget it.
>                     elif x.offset < i then loop xs i
>                     // Else the block has been dirty filtered, recalculate it.
>                     else let x = block_at lines i in x :: loop blocks (i + 
> x.block.Length)
>             | [[]] -> block_all lines i
>         else [[]]
>     loop blocks 0
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## BlockParsing
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #r 
> @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP
> arsec.dll"
> #r 
> @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP
> arsecCS.dll"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> // open System
> // open FParsec
> // open FSharp.Core
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### SymbolString
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type SymbolString = string
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### VarString
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type VarString = string
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### NominalString
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type NominalString = string
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### Layout
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Layout = Heap | HeapMutable | StackMutable
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### FunType
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type FunType = FT_Vanilla | FT_Pointer | FT_Closure // The closure and the 
> pointer are specific to the C++ backend.
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### Op
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Op =
>     // Converts the function to a specialized type specific to the C++ backend.
>     | ToFunPtr
>     | ToFunClosure
> 
>     // Compile time hash set
>     | HashSetCreate
>     | HashSetAdd
>     | HashSetContains
>     | HashSetRemove
>     | HashSetCount
> 
>     // Compile time hash map
>     | HashMapCreate
>     | HashMapSetImmutable
>     | HashMapSet
>     | HashMapAdd
>     | HashMapTryAdd
>     | HashMapContains
>     | HashMapRemove
>     | HashMapCount
>     | HashMapTryGet
> 
>     // Pragma
>     | PragmaUnrollPush
>     | PragmaUnrollPop
>     
>     // Backend branching
>     | BackendSwitch
> 
>     // Reordering check
>     | UsesOriginalTermVars
>     | UsesOriginalNominals
> 
>     // Imports
>     | Global
>     
>     // Python
>     | ToPythonRecord
>     | ToPythonNamedTuple
> 
>     // Branching
>     | While
>     | Do
>     | Indent
> 
>     // Layout
>     | LayoutToHeap
>     | LayoutToHeapMutable
>     | LayoutToStackMutable
>     | LayoutIndex
> 
>     // Type
>     | TypeToVar
>     | TypeToSymbol
>     | TypeLitToLit
>     | LitToTypeLit
>     | LitToSymbol
> 
>     // Closure conversion
>     | Dyn
> 
>     // Nominal 
>     | NominalCreate // In addition to regular nominals, it can also creates 
> unions
>     | NominalStrip
>     | NominalTypeApply
> 
>     // Union
>     | Unbox
>     | Unbox2
>     | UnionTag
>     | UnionUntag
>     | UnionToRecord
> 
>     // String
>     | StringLength
>     | StringIndex
>     | StringSlice
>     | StaticStringConcat
>     | Printf // Cuda specific
> 
>     // Array
>     | ArrayCreate
>     | ArrayLength
>     | ArrayIndex
>     | ArrayIndexSet
> 
>     // Record
>     | RecordMap
>     | RecordIter
>     | RecordFilter
>     | RecordFold
>     | RecordFoldBack
>     | RecordLength
> 
>     // Record Type
>     | RecordTypeMap
>     | RecordTypeIter
>     | RecordTypeFold
>     | RecordTypeFoldBack
>     | RecordTypeLength
>     | RecordTypeTryFind
> 
>     // BinOps
>     | Add
>     | Sub
>     | Mult 
>     | Div 
>     | Mod 
>     | Pow
>     | LTE
>     | LT
>     | EQ
>     | TypeEq
>     | NEQ
>     | GT
>     | GTE 
>     | BoolAnd
>     | BoolOr
>     | BitwiseAnd
>     | BitwiseOr
>     | BitwiseXor
>     | BitwiseComplement
>     | ShiftLeft
>     | ShiftRight
> 
>     // Unary math ops
>     | Neg
>     | Tanh
>     | Log
>     | Exp
>     | Sin
>     | Cos
>     | Sqrt
>     | NanIs
>     | Conv
> 
>     // Infinity
>     | Infinity
>     | Pi
> 
>     // Static Is
>     | LitIs
>     | PrimIs
>     | SymbolIs
>     | VarIs
>     | UnionIs
>     | HeapUnionIs
>     | LayoutIs
>     | NominalIs
>     | FunctionIs
>     | ExistsIs
>     | PrototypeHas
> 
>     // Static Type Is
>     | PrimTypeIs
>     | SymbolTypeIs
>     | UnionTypeIs
>     | HeapUnionTypeIs
>     | LayoutTypeIs
>     | ExistsTypeIs
>     | NominalTypeIs
> 
>     // Panic
>     | FailWith
> 
>     // Static unary operations
>     | PrintStatic
>     | PrintRaw
>     | ErrorType
>     | ExistsStrip
>     | StringLitToSymbol
>     | SymbolToString
>     
>     // Serialization helpers
>     | VarTag
>     | TagToSymbol
>     | FunctionTermSlotsGet
>     | FunctionTermSlotsSet
>     | FreeVars
>     | FreeVarsReplace
>     | SizeOf
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### PatternCompilationErrors
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type PatternCompilationErrors =
>     | DisjointOrPatternVar
>     | DuplicateTermVar
>     | DuplicateTypeVar
>     | ShadowedVar
>     | DuplicateRecordSymbol
>     | DuplicateRecordInjection
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### ParserErrors
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type ParserErrors =
>     | TypeVarsNeedToBeExplicitForExists
>     | InvalidPattern of PatternCompilationErrors
>     | ExpectedKeyword of TokenKeyword
>     | ExpectedStringOpen | ExpectedStringClose
>     | ExpectedMacroOpen | ExpectedMacroClose
>     | ExpectedMacroVar | ExpectedMacroTypeVar | ExpectedMacroTypeLitVar 
>     | ExpectedEscapedChar of is_term_macro : bool
>     | ExpectedText | ExpectedUnescapedChar
>     | ExpectedOperator'
>     | ExpectedOperator of string
>     | ExpectedUnaryOperator'
>     | ExpectedUnaryOperator of string
>     | ExpectedUnit
>     | ExpectedVar
>     | ExpectedVarOrOpAsNameOfRecStatement
>     | ExpectedVarOrOpAsNameOfGlobalStatement
>     | ExpectedSmallVar
>     | ExpectedBigVar
>     | ExpectedLit
>     | ExpectedSymbolPaired
>     | SymbolPairedShouldStartWithUppercaseInTypeScope
>     | ExpectedSymbol
>     | ExpectedParenthesis of Parenthesis * ParenthesisState
>     | ExpectedMacroExpression of MacroEnum * ParenthesisState
>     | ExpectedOpenParenthesis
>     | ExpectedStatement
>     | ExpectedEob
>     | ExpectedFunctionAsBodyOfRecStatement
>     | ExpectedSinglePatternWhenStatementNameIsNorVarOrOp
>     | ExpectedGlobalFunction
>     | ExpectedExpression
>     | InbuiltOpNotFound
>     | UnknownOperator
>     | UnexpectedEob
>     | UnexpectedAndInlRec
>     | ForallNotAllowed
>     | TypecaseNotAllowed
>     | MetavarNotAllowed
>     | TermNotAllowed
>     | UnknownError
>     | DuplicateRecordTypeVar
>     | DuplicateForallVar
>     | DuplicateExistsVar
>     | DuplicateConstraint
>     | DuplicateTermRecordSymbol
>     | DuplicateTermRecordInjection
>     | DuplicateRecFunctionName
>     | BottomUpNumberParseError of string * string
>     | ExpectedPairedSymbolInUnion
>     | DuplicateUnionKey
>     | MetavarShadowedByVar
>     | VarShadowedByMetavar
>     | ListLiteralsNotAllowedInBottomUp
>     | ArrayLiteralsNotAllowedInBottomUp
>     | ForallNotAllowedInTypecase
>     | ExistsNotAllowedInTypecase
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### RawKindExpr
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type RawKindExpr =
>     | RawKindWildcard
>     | RawKindStar
>     | RawKindFun of RawKindExpr * RawKindExpr
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### UnionLayout
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type UnionLayout = UStack | UHeap
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### HoVar
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type HoVar = VSCRange * (VarString * RawKindExpr)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### TypeVar
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type TypeVar = HoVar * (VSCRange * VarString) list
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### RawMacro
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type RawMacro =
>     | RawMacroText of VSCRange * string
>     | RawMacroTerm of VSCRange * RawExpr
>     | RawMacroType of VSCRange * RawTExpr
>     | RawMacroTypeLit of VSCRange * RawTExpr
> and RawRecordWith =
>     | RawRecordWithSymbol of (VSCRange * SymbolString) * RawExpr
>     | RawRecordWithSymbolModify of (VSCRange * SymbolString) * RawExpr
>     | RawRecordWithInjectVar of (VSCRange * VarString) * RawExpr
>     | RawRecordWithInjectVarModify of (VSCRange * VarString) * RawExpr
> and RawRecordWithout =
>     | RawRecordWithoutSymbol of VSCRange * SymbolString
>     | RawRecordWithoutInjectVar of VSCRange * VarString
> and PatRecordMember =
>     | PatRecordMembersSymbol of (VSCRange * SymbolString) * name: Pattern
>     | PatRecordMembersInjectVar of (VSCRange * VarString) * name: Pattern
> and Pattern =
>     | PatB of VSCRange
>     | PatE of VSCRange
>     | PatVar of VSCRange * VarString
>     | PatDyn of VSCRange * Pattern
>     | PatUnbox of VSCRange * symbol: string * Pattern
>     | PatExists of VSCRange * (VSCRange * VarString) list * Pattern
>     | PatAnnot of VSCRange * Pattern * RawTExpr
>     | PatPair of VSCRange * Pattern * Pattern
>     | PatSymbol of VSCRange * string
>     | PatRecordMembers of VSCRange * PatRecordMember list
>     | PatOr of VSCRange * Pattern * Pattern
>     | PatAnd of VSCRange * Pattern * Pattern
>     | PatValue of VSCRange * Literal
>     | PatDefaultValue of VSCRange * VarString
>     | PatWhen of VSCRange * Pattern * RawExpr
>     | PatNominal of VSCRange * (VSCRange * VarString) *  (VSCRange * VarString) 
> list * Pattern
>     | PatArray of VSCRange * Pattern list
>     | PatFilledDefaultValue of VSCRange * VarString * RawTExpr // Filled in by 
> the inferencer.
> and RawExpr =
>     | RawB of VSCRange
>     | RawV of VSCRange * VarString * is_tvar_applied : bool
>     | RawLit of VSCRange * Literal
>     | RawDefaultLit of VSCRange * string
>     | RawSymbol of VSCRange * SymbolString
>     | RawType of VSCRange * RawTExpr
>     | RawMatch of VSCRange * body: RawExpr * (Pattern * RawExpr) list
>     | RawFun of VSCRange * (Pattern * RawExpr) list
>     | RawForall of VSCRange * TypeVar * RawExpr
>     | RawExists of VSCRange * (VSCRange * RawTExpr list option) * RawExpr
>     | RawRecBlock of VSCRange * ((VSCRange * VarString) * RawExpr) list * 
> on_succ: RawExpr // The bodies of a block must be RawFun or RawForall.
>     | RawRecordWith of VSCRange * RawExpr list * RawRecordWith list * 
> RawRecordWithout list
>     | RawOp of VSCRange * Op * RawExpr list
>     | RawJoinPoint of VSCRange * backend: (VSCRange * string) option * RawExpr *
> name: string option
>     | RawAnnot of VSCRange * RawExpr * RawTExpr
>     | RawTypecase of VSCRange * RawTExpr * (RawTExpr * RawExpr) list
>     | RawOpen of VSCRange * (VSCRange * VarString) * (VSCRange * SymbolString) 
> list * on_succ: RawExpr
>     | RawApply of VSCRange * RawExpr * RawExpr
>     | RawIfThenElse of VSCRange * RawExpr * RawExpr * RawExpr
>     | RawIfThen of VSCRange * RawExpr * RawExpr
>     | RawPair of VSCRange * RawExpr * RawExpr
>     | RawSeq of VSCRange * RawExpr * RawExpr
>     | RawHeapMutableSet of VSCRange * RawExpr * RawExpr list * RawExpr
>     | RawReal of VSCRange * RawExpr
>     | RawMacro of VSCRange * RawMacro list
>     | RawArray of VSCRange * RawExpr list
>     | RawMissingBody of VSCRange
>     | RawFilledForall of VSCRange * string * RawExpr // Filled in by the 
> inferencer.
> and RawTExpr =
>     | RawTWildcard of VSCRange
>     | RawTB of VSCRange
>     | RawTMetaVar of VSCRange * VarString
>     | RawTLit of VSCRange * Literal
>     | RawTVar of VSCRange * VarString
>     | RawTPair of VSCRange * RawTExpr * RawTExpr
>     | RawTFun of VSCRange * RawTExpr * RawTExpr * FunType
>     | RawTArray of VSCRange * RawTExpr
>     | RawTRecord of VSCRange * Map<int * string,RawTExpr>
>     | RawTSymbol of VSCRange * SymbolString
>     | RawTApply of VSCRange * RawTExpr * RawTExpr
>     | RawTForall of VSCRange * TypeVar * RawTExpr
>     | RawTExists of VSCRange * TypeVar list * RawTExpr
>     | RawTPrim of VSCRange * PrimitiveType
>     | RawTTerm of VSCRange * RawExpr
>     | RawTMacro of VSCRange * RawMacro list
>     | RawTUnion of VSCRange * Map<int * string,bool * RawTExpr> * UnionLayout * 
> this: RawTExpr  // The boolean arg determines whether the union case is 
> generalized. `this` is the self type.
>     | RawTLayout of VSCRange * RawTExpr * Layout
>     | RawTTypecase of VSCRange * RawTExpr * (RawTExpr * RawTExpr) list
>     | RawTFilledNominal of VSCRange * GlobalId // Filled in by the inferencer.
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### (+.)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let (+.) (a,_) (_,b) = a,b
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### range_of_hovar
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let range_of_hovar ((r,_) : HoVar) = r
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### range_of_typevar
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let range_of_typevar ((x,_) : TypeVar) = range_of_hovar x
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### hovar_name
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let hovar_name ((_,(name,_)) : HoVar) = name
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### typevar_name
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let typevar_name ((h,_) : TypeVar) = hovar_name h
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### range_of_record_with
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let range_of_record_with = function
>     | RawRecordWithSymbol((r,_),_)
>     | RawRecordWithSymbolModify((r,_),_)
>     | RawRecordWithInjectVar((r,_),_)
>     | RawRecordWithInjectVarModify((r,_),_) -> r
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### range_of_record_without
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let range_of_record_without = function
>     | RawRecordWithoutSymbol(r,_)
>     | RawRecordWithoutInjectVar(r,_) -> r
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### range_of_pattern
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let range_of_pattern = function
>     | PatB r
>     | PatE r
>     | PatVar(r,_)
>     | PatDyn(r,_)
>     | PatUnbox(r,_,_)
>     | PatExists(r,_,_)
>     | PatSymbol(r,_)
>     | PatValue(r,_)
>     | PatDefaultValue(r,_)
>     | PatRecordMembers(r,_)
>     | PatArray(r,_)
>     | PatAnnot(r,_,_)
>     | PatPair(r,_,_)
>     | PatOr(r,_,_)
>     | PatAnd(r,_,_)
>     | PatWhen(r,_,_)
>     | PatFilledDefaultValue(r,_,_)
>     | PatNominal(r,_,_,_) -> r
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### range_of_pat_record_member
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let range_of_pat_record_member = function
>     | PatRecordMembersSymbol((r,_),x)
>     | PatRecordMembersInjectVar((r,_),x) -> r +. range_of_pattern x
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### range_of_expr
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let range_of_expr = function
>     | RawB r
>     | RawMissingBody r
>     | RawMacro(r,_)
>     | RawV(r,_,_)
>     | RawLit(r,_)
>     | RawDefaultLit(r,_)
>     | RawSymbol(r,_)
>     | RawType(r,_)
>     | RawJoinPoint(r,_,_,_)
>     | RawArray(r,_)
>     | RawMatch(r,_,_)
>     | RawFun(r,_)
>     | RawReal(r,_)
>     | RawRecBlock(r,_,_)
>     | RawOp(r,_,_)
>     | RawAnnot(r,_,_)
>     | RawTypecase(r,_,_)
>     | RawForall(r,_,_)
>     | RawExists(r,_,_)
>     | RawFilledForall(r,_,_)
>     | RawApply(r,_,_)
>     | RawPair(r,_,_)
>     | RawIfThen(r,_,_)
>     | RawSeq(r,_,_)
>     | RawHeapMutableSet(r,_,_,_)
>     | RawRecordWith(r,_,_,_)
>     | RawIfThenElse(r,_,_,_)
>     | RawOpen(r,_,_,_) -> r
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### rawv
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rawv (r,x) = RawV(r,x,true)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### range_of_texpr
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let range_of_texpr = function
>     | RawTWildcard r
>     | RawTB r
>     | RawTLit(r,_)
>     | RawTMacro(r,_)
>     | RawTMetaVar(r,_)
>     | RawTVar(r,_)
>     | RawTArray(r,_)
>     | RawTRecord(r,_)
>     | RawTUnion(r,_,_,_)
>     | RawTSymbol(r,_)
>     | RawTPrim(r,_)
>     | RawTTerm(r,_)
>     | RawTFilledNominal(r,_)
>     | RawTPair(r,_,_)
>     | RawTFun(r,_,_,_)
>     | RawTApply(r,_,_)
>     | RawTLayout(r,_,_)
>     | RawTExists(r,_,_)
>     | RawTTypecase(r,_,_)
>     | RawTForall(r,_,_) -> r
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### range_of_texpr_gadt_constructor
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rec range_of_texpr_gadt_constructor = function
>     | RawTForall(_,_,x) -> range_of_texpr_gadt_constructor x
>     | RawTFun(_,_,x,_) | x -> range_of_texpr x
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### range_of_texpr_gadt_body
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rec range_of_texpr_gadt_body = function
>     | RawTForall(_,_,x) -> range_of_texpr_gadt_body x
>     | RawTFun(_,x,_,_) | x -> range_of_texpr x
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### VectorCord
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type VectorCord = {|row : int; col : int|}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### Env__
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Env__ = {
>     semantic_updates : (VectorCord * SemanticTokenLegend) ResizeArray
>     tokens_cords : VectorCord [[]]
>     tokens : (VSCRange * SpiralToken) [[]]
>     comments : LineComment option [[]]
>     i : int ref
>     is_top_down : bool
>     default_env : DefaultEnv
>     } with
> 
>     member d.Index with get() = d.i.contents and set(i) = d.i.Value <- i
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### BlockParsingEnv
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type BlockParsingEnv = Env__
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### try_current_template
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline try_current_template (d : BlockParsingEnv) on_succ on_fail =
>     let i = d.Index
>     if i < d.tokens.Length then on_succ d.tokens.[[i]]
>     else on_fail()
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### try_current
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline try_current d f = try_current_template d (fun (p,t) -> f (p, t)) (fun
> () -> Result.Error [[]])
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### print_current
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let print_current d = try_current d (fun x -> printfn "%A" x; Ok()) // For 
> parser debugging purposes.
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### line_template
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline line_template d f = try_current_template d (fst >> f) (fun _ -> -1)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### col
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let col d = line_template d (fun (r,_) -> r.character)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### lineBlockParsing
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let lineBlockParsing d = line_template d (fun (r,_) -> r.line)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### skip'
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let skip' (d : BlockParsingEnv) i = d.i.Value <- d.i.contents+i
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### skipBlockParsing
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let skipBlockParsing d = skip' d 1
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### skip_string_open
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let skip_string_open d =
>     try_current d <| function
>         | p,TokStringOpen -> skipBlockParsing d; Result.Ok(p)
>         | p, _ -> Result.Error [[p, ExpectedStringOpen]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### skip_string_close
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let skip_string_close d =
>     try_current d <| function
>         | p,TokStringClose -> skipBlockParsing d; Result.Ok(p)
>         | p, _ -> Result.Error [[p, ExpectedStringClose]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### skip_macro_open
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let skip_macro_open d =
>     try_current d <| function
>         | p,TokMacroOpen -> skipBlockParsing d; Ok(p)
>         | p, _ -> Result.Error [[p, ExpectedMacroOpen]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### skip_macro_close
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let skip_macro_close d =
>     try_current d <| function
>         | p,TokMacroClose -> skipBlockParsing d; Ok(p)
>         | p, _ -> Result.Error [[p, ExpectedMacroClose]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### read_text
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let read_text is_term_macro d =
>     let (+.) a b =
>         match a with
>         | Some a -> Some (a +. b)
>         | None -> Some b
>     let rec loop (a : VSCRange option) (str : System.Text.StringBuilder) =
>         try_current d <| function
>             | b,TokText x -> skipBlockParsing d; loop (a +. b) (str.Append(x))
>             | b,TokEscapedVar when is_term_macro -> skipBlockParsing d; loop (a 
> +. b) (str.Append("\\v"))
>             | b,(TokEscapedChar x | TokUnescapedChar x) -> skipBlockParsing d; 
> loop (a +. b) (str.Append(x))
>             | b, _ -> 
>                 if Option.isNone a then Result.Error [[b, ExpectedText; b, 
> ExpectedEscapedChar is_term_macro; b, ExpectedUnescapedChar]]
>                 else Result.Ok(Option.get a, str.ToString())
>     loop None (System.Text.StringBuilder())
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### read_macro_var
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let read_macro_var d =
>     try_current d <| function
>         | p, TokMacroTermVar x -> skipBlockParsing d; 
> Result.Ok(RawMacroTerm(p,rawv(p,x)))
>         | p, TokMacroTypeVar x -> skipBlockParsing d; 
> Result.Ok(RawMacroType(p,RawTVar(p,x)))
>         | p, TokMacroTypeLitVar x -> skipBlockParsing d; 
> Result.Ok(RawMacroTypeLit(p,RawTVar(p,x)))
>         | p,_ -> Error [[p, ExpectedMacroVar]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### read_macro_type_var
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let read_macro_type_var d =
>     try_current d <| function
>         | p, TokMacroTypeVar x -> skipBlockParsing d; 
> Result.Ok(RawMacroType(p,RawTVar(p,x)))
>         | p, TokMacroTypeLitVar x -> skipBlockParsing d; 
> Result.Ok(RawMacroTypeLit(p,RawTVar(p,x)))
>         | p,_ -> Error [[p, ExpectedMacroTypeVar]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### skip_keyword
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let skip_keyword t d =
>     try_current d <| function
>         | p,TokKeyword t' when t = t' -> skipBlockParsing d; Result.Ok t'
>         | p, _ -> Error [[p, ExpectedKeyword t]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### skip_keyword'
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let skip_keyword' t d =
>     try_current d <| function
>         | p,TokKeyword t' when t = t' -> skipBlockParsing d; Result.Ok p
>         | p, _ -> Error [[p, ExpectedKeyword t]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### read_unary_op
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let read_unary_op d =
>     try_current d <| function
>         | p, TokUnaryOperator(t',_) -> skipBlockParsing d; Result.Ok t'
>         | p, _ -> Error [[p, ExpectedUnaryOperator']]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### read_unary_op'
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let read_unary_op' d =
>     try_current d <| function
>         | p, TokUnaryOperator(t',_) -> skipBlockParsing d; Result.Ok(p,t')
>         | p, _ -> Error [[p, ExpectedUnaryOperator']]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### read_op
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let read_op d =
>     try_current d <| function
>         | p, TokOperator(t',_) -> skipBlockParsing d; Result.Ok t'
>         | p, _ -> Error [[p, ExpectedOperator']]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### read_op'
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let read_op' d =
>     try_current d <| function
>         | p, TokOperator(t',_) -> skipBlockParsing d; Result.Ok(p,t')
>         | p, _ -> Error [[p, ExpectedOperator']]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### update_semantic
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let update_semantic (d : BlockParsingEnv) = let i = d.Index in fun x -> 
> d.semantic_updates.Add(d.tokens_cords.[[i]], x)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### read_op_type
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let read_op_type d =
>     try_current d <| function
>         | p, TokOperator(t',r) -> update_semantic d 
> SemanticTokenLegend.type_variable; skipBlockParsing d; Result.Ok(p,t')
>         | p, _ -> Error [[p, ExpectedOperator']]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### skip_op
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let skip_op t d =
>     try_current d <| function
>         | p, TokOperator(t',_) when t' = t -> skipBlockParsing d; Result.Ok p
>         | p, _ -> Error [[p, ExpectedOperator t]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### skip_unary_op
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let skip_unary_op t d =
>     try_current d <| function
>         | p, TokUnaryOperator(t',_) when t' = t -> skipBlockParsing d; Result.Ok
> t'
>         | p, _ -> Error [[p, ExpectedUnaryOperator t]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### read_var
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let read_var d =
>     try_current d <| function
>         | p, TokVar(t',_) -> skipBlockParsing d; Result.Ok t'
>         | p, _ -> Error [[p, ExpectedVar]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### read_var'
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let read_var' d =
>     try_current d <| function
>         | p, TokVar(t',_) -> let r = update_semantic d in skipBlockParsing d; 
> Result.Ok(p,t',r)
>         | p, _ -> Error [[p, ExpectedVar]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### read_var''
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let read_var'' d =
>     try_current d <| function
>         | p, TokVar(t',_) -> skipBlockParsing d; Result.Ok(p,t')
>         | p, _ -> Error [[p, ExpectedVar]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### read_big_var
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let read_big_var d =
>     try_current d <| function
>         | p, TokVar(t',_) when System.Char.IsUpper(t',0) -> skipBlockParsing d; 
> Result.Ok(p,t')
>         | p, _ -> Error [[p, ExpectedBigVar]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### read_var_as_symbol
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let read_var_as_symbol d =
>     try_current d <| function
>         | p, TokVar(t',_) -> update_semantic d SemanticTokenLegend.symbol; 
> skipBlockParsing d; Result.Ok t'
>         | p, _ -> Error [[p, ExpectedVar]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### read_big_var_as_symbol
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let read_big_var_as_symbol d =
>     try_current d <| function
>         | p, TokVar(t',_) when System.Char.IsUpper(t',0) -> update_semantic d 
> SemanticTokenLegend.symbol; skipBlockParsing d; Result.Ok t'
>         | p, _ -> Error [[p, ExpectedBigVar]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### read_big_var_as_keyword
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let read_big_var_as_keyword d =
>     try_current d <| function
>         | p, TokVar(t',_) when System.Char.IsUpper(t',0) -> update_semantic d 
> SemanticTokenLegend.keyword; skipBlockParsing d; Result.Ok(p,t')
>         | p, _ -> Error [[p, ExpectedBigVar]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### read_small_var
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let read_small_var d =
>     try_current d <| function
>         | p, TokVar(t',r) when System.Char.IsUpper(t',0) = false -> 
> skipBlockParsing d; Result.Ok t'
>         | p, _ -> Error [[p, ExpectedSmallVar]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### read_small_var'
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let read_small_var' d =
>     try_current d <| function
>         | p, TokVar(t',r) when System.Char.IsUpper(t',0) = false -> 
> skipBlockParsing d; Result.Ok(p,t')
>         | p, _ -> Error [[p, ExpectedSmallVar]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### read_big_type_var
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let read_big_type_var d =
>     try_current d <| function
>         | p, TokVar(t',r) when System.Char.IsUpper(t',0) -> update_semantic d 
> SemanticTokenLegend.type_variable; skipBlockParsing d; Result.Ok(t')
>         | p, _ -> Error [[p, ExpectedSmallVar]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### read_big_type_var'
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let read_big_type_var' d =
>     try_current d <| function
>         | p, TokVar(t',r) when System.Char.IsUpper(t',0) -> update_semantic d 
> SemanticTokenLegend.type_variable; skipBlockParsing d; Result.Ok(p,t')
>         | p, _ -> Error [[p, ExpectedSmallVar]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### read_small_type_var
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let read_small_type_var d =
>     try_current d <| function
>         | p, TokVar(t',r) when System.Char.IsUpper(t',0) = false -> 
> update_semantic d SemanticTokenLegend.type_variable; skipBlockParsing d; 
> Result.Ok(t')
>         | p, _ -> Error [[p, ExpectedSmallVar]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### read_small_type_var'
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let read_small_type_var' d =
>     try_current d <| function
>         | p, TokVar(t',r) when System.Char.IsUpper(t',0) = false -> 
> update_semantic d SemanticTokenLegend.type_variable; skipBlockParsing d; 
> Result.Ok(p,t')
>         | p, _ -> Error [[p, ExpectedSmallVar]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### read_value
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let read_value d =
>     try_current d <| function
>         | p, TokValue t' -> 
>             skipBlockParsing d
>             if d.Index < d.tokens.Length then 
>                 match snd d.tokens.[[d.Index]] with 
>                 | TokValueSuffix -> skipBlockParsing d 
>                 | _ -> ()
>             Result.Ok(p,t')
>         | p, _ -> Error [[p, ExpectedLit]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### read_symbol
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let read_symbol d =
>     try_current d <| function
>         | p, TokSymbol(t',r) -> skipBlockParsing d; Result.Ok(p,t')
>         | p, _ -> Error [[p, ExpectedSymbol]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### skip_parenthesis
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let skip_parenthesis a b d =
>     try_current d <| function
>         | p, TokParenthesis(a',b') when a = a' && b = b' -> skipBlockParsing d; 
> Result.Ok()
>         | p, _ -> Error [[p, ExpectedParenthesis(a,b)]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### skip_macro_expression
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let skip_macro_expression a b d =
>     try_current d <| function
>         | p, TokMacroExpression(a',b') when a = a' && b = b' -> skipBlockParsing
> d; Result.Ok()
>         | p, _ -> Error [[p, ExpectedMacroExpression(a,b)]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### on_succ
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let on_succ x _ = Result.Ok x
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### macro_expression
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> // open FParsec
> let macro_expression ty a d = (skip_macro_expression ty Open >>. a .>> 
> skip_macro_expression ty Close) d
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### rounds
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rounds a d = (skip_parenthesis Round Open >>. a .>> skip_parenthesis Round 
> Close) d
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### curlies
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let curlies a d = (skip_parenthesis Curly Open >>. a .>> skip_parenthesis Curly 
> Close) d
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### squares
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let squares a d = (skip_parenthesis Square Open >>. a .>> skip_parenthesis 
> Square Close) d
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### indexBlockParsing
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let indexBlockParsing (t : BlockParsingEnv) = t.Index
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### index_setBlockParsing
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let index_setBlockParsing v (t : BlockParsingEnv) = t.Index <- v
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### rangeBlockParsing
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline rangeBlockParsing exp s =
>     let i = indexBlockParsing s
>     exp s |> Result.map (fun x ->
>         let i' = indexBlockParsing s
>         if i < i' then fst s.tokens.[[i]] +. fst s.tokens.[[i'-1]], x : VSCRange
> * _
>         else
>             failwith "Compiler error: The parser passed into `range` has to 
> consume at least one token for it to work."
>         )
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### kind
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rec kind d = (sepBy1 ((skip_op "*" >>% RawKindStar) <|> rounds kind) 
> (skip_op "->") |>> List.reduceBack (fun a b -> RawKindFun (a,b))) d
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### duplicates
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let duplicates er x = 
>     let h = System.Collections.Generic.HashSet()
>     x |> List.choose (fun (r : VSCRange,n : string) -> if h.Add n = false then 
> Some(r,er) else None)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### indentBlockParsing
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline indentBlockParsing i op next d = if op i (col d) then next d else 
> Error [[]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### record_var
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let record_var d = (read_var_as_symbol <|> rounds read_op) d
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### patterns_validate
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let patterns_validate pats = 
>     let pos = System.Collections.Generic.Dictionary(HashIdentity.Reference)
>     let errors = ResizeArray()
>     let rec loop is_type pat =
>         let loop = loop is_type
>         let inline duplicate_var() = InvalidPattern (if is_type then 
> DuplicateTypeVar else DuplicateTermVar)
>         match pat with
>         | PatFilledDefaultValue _ | PatDefaultValue _ | PatValue _ | PatSymbol _
> | PatE _ | PatB _ -> Set.empty
>         | PatArray(_,x) -> 
>             List.fold (fun s x -> 
>                 let x = loop x
>                 let inters = Set.intersect s x
>                 if Set.isEmpty inters = false then inters |> Set.iter (fun x -> 
> errors.Add(pos.[[x]], duplicate_var()))
>                 s + x
>                 ) Set.empty x
>         | PatExists(r,l,p) ->
>             if is_type then
>                 let s = List.fold (fun s (r,x) -> pos.Add(x,r); Set.add x s) 
> Set.empty l
>                 let x = loop p
>                 let inters = Set.intersect s x
>                 if Set.isEmpty inters = false then inters |> Set.iter (fun x -> 
> errors.Add(pos.[[x]], duplicate_var()))
>                 s + x
>             else 
>                 loop p
>         | PatVar(r,x) -> 
>             if is_type then
>                 Set.empty
>             else 
>                 pos.Add(x,r)
>                 Set.singleton x
>         | PatDyn(_,p) | PatAnnot (_,p,_) | PatNominal(_,_,_,p) | PatUnbox(_,_,p)
> | PatWhen(_,p,_) -> loop p
>         | PatRecordMembers(_,items) ->
>             let symbols = System.Collections.Generic.HashSet()
>             let injects = System.Collections.Generic.HashSet()
>             let vars = System.Collections.Generic.HashSet()
>             List.iter (fun item ->
>                 match item with
>                 | PatRecordMembersSymbol((r,keyword),name) ->
>                     if symbols.Add(keyword) = false then errors.Add (r, 
> InvalidPattern DuplicateRecordSymbol); Set.empty else loop name
>                 | PatRecordMembersInjectVar((r,var),name) ->
>                     if injects.Add(var) = false then errors.Add (r, 
> InvalidPattern DuplicateRecordInjection); Set.empty else loop name
>                 |> Set.iter (fun x -> if vars.Add x = false then errors.Add 
> (pos.[[x]], duplicate_var()))
>                 ) items
>             Set vars
>         | PatPair(_,a,b) | PatAnd(_,a,b) -> 
>             let a, b = loop a, loop b
>             Set.intersect b a |> Set.iter (fun x -> errors.Add (pos.[[x]], 
> duplicate_var()))
>             a + b
>         | PatOr(_,a,b) -> 
>             let a, b = loop a, loop b
>             let f = Set.iter (fun x -> errors.Add (pos.[[x]], InvalidPattern 
> DisjointOrPatternVar))
>             f (a-b); f (b-a)
>             a
>     
>     let validate is_type =
>         List.fold (fun s x ->
>             let s' = loop is_type x
>             Set.intersect s' s |> Set.iter (fun x -> 
> errors.Add(pos.[[x]],InvalidPattern ShadowedVar))
>             s + s'
>             ) Set.empty pats |> ignore
>     validate true; validate false
>     errors |> Seq.toList
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### join_point
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let join_point is_let name = function // Has the effect of removing nested join 
> points due to not duplicating them.
>     | RawJoinPoint(a,b,c,_) -> RawJoinPoint(a,b,c,name)
>     | x -> if is_let then RawJoinPoint(range_of_expr x, None, x, name) else x
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### join_point_backend
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let join_point_backend (a,b) = RawJoinPoint(range_of_expr b, Some a, b, None)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### unintern
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> /// Some places need unique string refs, so this is to keep the compiler from 
> interning static strings.
> let unintern (x : string) = System.Text.StringBuilder(x).ToString()
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### adjust_join_point
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rec adjust_join_point is_let name x =
>     let dyn_if_let a = if is_let then PatDyn(range_of_pattern a, a) else a
>     match x with
>     | RawForall(r,a,b) -> RawForall(r,a,adjust_join_point is_let name b)
>     | RawFun(r,[[a,b]]) -> RawFun(r,[[dyn_if_let a, adjust_join_point is_let 
> name b]])
>     | RawFun(r,l) ->
>         let empty = fst r, fst r
>         let n = unintern " arg"
>         let a = PatVar(empty,n) |> dyn_if_let
>         let b = RawMatch(empty,rawv(empty,n),l)
>         RawFun(r,[[a,join_point is_let name b]])
>     | x -> join_point is_let name x
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### adjust_join_point'
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let adjust_join_point' is_let name = function
>     | RawForall _ | RawFun _ as x -> adjust_join_point is_let name x
>     | x -> x
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### inl_or_let_process
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inl_or_let_process (r, (is_let, is_rec, name, foralls, pats, body)) _ =
>     match is_rec, name, foralls, pats with
>     | false, _, [[]], [[]] -> 
>         match patterns_validate [[name]] with
>         | [[]] -> Result.Ok((r,name,adjust_join_point' is_let (match name with 
> PatVar(_,name) -> Some name | _ -> None) body),is_rec)
>         | ers -> Error ers
>     | _, PatVar(_,name'), _, _ -> 
>         match patterns_validate (if is_rec then name :: pats else pats) with
>         | [[]] ->
>             let body =
>                 let dyn_if_let x = if is_let then PatDyn(range_of_pattern x, x) 
> else x
>                 adjust_join_point is_let (Some name') body
>                 |> List.foldBack (fun pat body -> RawFun(range_of_pattern pat +.
> range_of_expr body,[[dyn_if_let pat,body]])) pats
>                 |> List.foldBack (fun typevar body -> RawForall(range_of_typevar
> typevar +. range_of_expr body,typevar,body)) foralls
>             match is_rec, body with
>             | false, _ | true, (RawFun _ | RawForall _) -> 
> Result.Ok((r,name,body),is_rec)
>             | true, _ -> Error [[r, ExpectedFunctionAsBodyOfRecStatement]]
>         | ers -> Error ers
>     | true, _, _, _ -> Error [[range_of_pattern name, 
> ExpectedVarOrOpAsNameOfRecStatement]]
>     | false, _, _, _ -> Error [[range_of_pattern name, 
> ExpectedSinglePatternWhenStatementNameIsNorVarOrOp]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### ho_var
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let ho_var d : Result<HoVar,_> = rangeBlockParsing ((read_small_type_var |>> fun
> x -> x, RawKindWildcard) <|> rounds ((read_small_type_var .>> skip_op ":") .>>. 
> kind)) d
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### forall_var
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let forall_var d : Result<TypeVar,_> = (ho_var .>>. (curlies (sepBy 
> (read_small_type_var' <|> rounds read_op_type) (skip_op ";")) <|>% [[]])) d
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### forall
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let forall d = 
>     (skip_keyword SpecForall >>. many1 forall_var .>> skip_op "." 
>     >>= fun q _ -> 
>         let x' = q |> List.collect (fun (_,l) -> duplicates DuplicateConstraint 
> l)
>         let x = q |> List.map (fun ((r,(a,_)),_) -> r,a) |> duplicates 
> DuplicateForallVar
>         match List.append x x' with [[]] -> Result.Ok q | er -> Result.Error er
>         ) d
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### pat_exists'
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let pat_exists' d = 
>     (skip_keyword SpecExists >>. many (rangeBlockParsing read_small_type_var) 
> .>> skip_op "." 
>     >>= fun q _ -> 
>         match duplicates DuplicateExistsVar q with [[]] -> Result.Ok q | er -> 
> Error er
>         ) d
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### exists
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let exists d = 
>     (skip_keyword SpecExists >>. many forall_var .>> skip_op "." 
>     >>= fun q _ -> 
>         let x' = q |> List.collect (fun (_,l) -> duplicates DuplicateConstraint 
> l)
>         let x = q |> List.map (fun ((r,(a,_)),_) -> r,a) |> duplicates 
> DuplicateExistsVar
>         match List.append x x' with [[]] -> Result.Ok q | er -> Error er
>         ) d
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### annotated_body
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline annotated_body sep exp ty =
>     pipe2 (opt (skip_op ":" >>. ty))
>         (skip_op sep .>>. opt exp)
>         (fun a (r,b) ->
>             let b = match b with Some b -> b | None -> RawMissingBody r
>             match a with
>             | Some a -> RawAnnot(range_of_expr b +. range_of_texpr a,b,a)
>             | None -> b)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### inl_or_let
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline inl_or_let exp pattern ty =
>     rangeBlockParsing (tuple6 ((skip_keyword SpecInl >>% false) <|> 
> (skip_keyword SpecLet >>% true))
>             ((skip_keyword SpecRec >>% true) <|>% false) pattern
>             (forall <|>% [[]]) (many pattern) (annotated_body "=" exp ty))
>     >>= inl_or_let_process
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### and_inl_or_let
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline and_inl_or_let exp pattern ty =
>     rangeBlockParsing (tuple6 (skip_keyword SpecAnd >>. ((skip_keyword SpecInl 
> >>% false) <|> (skip_keyword SpecLet >>% true)))
>             (fun _ -> Result.Ok true) pattern
>             (forall <|>% [[]]) (many pattern) (annotated_body "=" exp ty))
>     >>= inl_or_let_process
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### Associativity
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Associativity = FParsec.Associativity
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### inbuilt_operators
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inbuilt_operators x = 
>     match x with
>     | "+" -> ValueSome(60, Associativity.Left)
>     | "-" -> ValueSome(60, Associativity.Left)
>     | "*" -> ValueSome(70, Associativity.Left)
>     | "/" -> ValueSome(70, Associativity.Left)
>     | "%" -> ValueSome(70, Associativity.Left)
>     | "|>" -> ValueSome(10, Associativity.Left)
>     | ">>" -> ValueSome(10, Associativity.Left)
>     | "<-" -> ValueSome(4, Associativity.Left)
>     
>     | "<=" -> ValueSome(40, Associativity.None)
>     | "<" -> ValueSome(40, Associativity.None)
>     | "=" -> ValueSome(40, Associativity.None)
>     | "`=" -> ValueSome(40, Associativity.None)
>     | ">" -> ValueSome(40, Associativity.None)
>     | ">=" -> ValueSome(40, Associativity.None)
>     | "<>" -> ValueSome(40, Associativity.None)
>     | "<<<" -> ValueSome(40, Associativity.None)
>     | ">>>" -> ValueSome(40, Associativity.None)
>     | "&&&" -> ValueSome(40, Associativity.None)
>     | "|||" -> ValueSome(40, Associativity.None)
> 
>     | "||" -> ValueSome(20, Associativity.Right)
>     | "&&" -> ValueSome(30, Associativity.Right)
>     | "::" -> ValueSome(50, Associativity.Right)
>     | "^" -> ValueSome(45, Associativity.Right)
>     | "<|" -> ValueSome(10, Associativity.Right)
>     | "<<" -> ValueSome(10, Associativity.Right)
>     | "." -> ValueSome(2, Associativity.Right)
>     | "," -> ValueSome(6, Associativity.Right)
>     | ":>" -> ValueSome(35, Associativity.Right)
>     | ":?>" -> ValueSome(35, Associativity.Right)
>     | "**" -> ValueSome(80, Associativity.Right)
>     | _ -> ValueNone
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### precedence_associativity
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> // The `.` operator has special behavior similar to F#.
> let rec precedence_associativity name = 
>     if 0 < String.length name then
>         if 1 < String.length name && name.[[0]] = '.' then 
> precedence_associativity name.[[1..]]
>         else
>             match inbuilt_operators name with
>             | ValueNone -> precedence_associativity (name.[[0..name.Length-2]])
>             | v -> v
>     else ValueNone
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### op
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let op (d : BlockParsingEnv) =
>     rangeBlockParsing read_op d |> Result.bind (fun (o,x) ->
>         match x with
>         | "=>" | "|" | ":" | ";" -> skip' d -1; Error [[]] // Separators get 
> special handling for sake of better error messages.
>         | _ ->
>             match precedence_associativity x with // TODO: Might be good to 
> memoize this.
>             | ValueNone -> Error [[o, UnknownOperator]]
>             | ValueSome(p,a) ->
>                 let inline f on_succ = Ok(p,a,fun (a,b) -> 
>                     let ra, rb = range_of_expr a, range_of_expr b
>                     let r = ra +. rb
>                     on_succ(r,a,b)
>                     )
>                 match x with
>                 | "." -> f RawSeq
>                 | "&&" -> f (fun (r,a,b) -> RawIfThenElse(r,a,b,RawLit(o,LitBool
> false)))
>                 | "||" -> f (fun (r,a,b) -> RawIfThenElse(r,a,RawLit(o,LitBool 
> true),b))
>                 | "," -> f RawPair
>                 | "<-" -> f (fun (r,a,c) ->
>                     let rec loop l = function
>                         | RawApply(_,a,b) -> loop (b :: l) a
>                         | a -> a, l
>                     let a,b = loop [[]] a
>                     RawHeapMutableSet(r,a,b,c)
>                     )
>                 | x -> f (fun (r,a,b) -> RawApply(r,RawApply(r +. 
> o,rawv(o,x),a),b))
>         )
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### string_to_op_dict
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let string_to_op_dict : Dictionary<string,Op> = 
> System.Collections.Generic.Dictionary(HashIdentity.Structural)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> Microsoft.FSharp.Reflection.FSharpType.GetUnionCases(typeof<Op>)
> |> Array.iter (fun x -> string_to_op_dict.[[x.Name]] <- 
> Microsoft.FSharp.Reflection.FSharpValue.MakeUnion(x,[[||]]) :?> Op)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### string_to_op
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let string_to_op x = string_to_op_dict.TryGetValue x
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### symbol_paired_concat
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let symbol_paired_concat k =
>     let b = System.Text.StringBuilder()
>     List.iter (fun (_, x : string) -> b.Append(x).Append('_') |> ignore) k
>     b.ToString()
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### module_openBlockParsing
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let module_openBlockParsing = rangeBlockParsing ((skip_keyword SpecOpen >>. 
> read_small_var') .>>. (many read_symbol))
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### bar
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let bar i d = indentBlockParsing i (<=) (skip_op "|") d
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### pat_pair
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline pat_pair next = 
>     sepBy1 next (skip_op ",") 
>     |>> List.reduceBack (fun a b -> PatPair(range_of_pattern a +. 
> range_of_pattern b,a,b))
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### RootTypeFlags
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type RootTypeFlags = {
>     allow_typecase_metavars : bool
>     allow_term : bool
>     allow_wildcard : bool
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### root_type_defaults
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let root_type_defaults = {
>     allow_typecase_metavars = false
>     allow_term = false
>     allow_wildcard = false
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### bottom_up_number
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let bottom_up_number (default_env : DefaultEnv) (r : VSCRange,x : string) =
>     let inline f string_to_val val_to_lit val_dsc =
>         match string_to_val x with
>         | true, x -> Ok(r, val_to_lit x)
>         | false, _ -> Error [[r, BottomUpNumberParseError(x,val_dsc)]]
>     if x.Contains '.' then
>         match default_env.default_float with
>         | Float32T -> f System.Single.TryParse LitFloat32 "f32"
>         | Float64T -> f System.Double.TryParse LitFloat64 "f64"
>         | x -> failwithf "Compiler error: Invalid default float type. Got: %A" x
>     else
>         match default_env.default_int with
>         | Int8T -> f System.SByte.TryParse LitInt8 "i8"
>         | Int16T -> f System.Int16.TryParse LitInt16 "i16"
>         | Int32T -> f System.Int32.TryParse LitInt32 "i32"
>         | Int64T -> f System.Int64.TryParse LitInt64 "i64"
>         | UInt8T -> f System.Byte.TryParse LitUInt8 "u8"
>         | UInt16T -> f System.UInt16.TryParse LitUInt16 "u16"
>         | UInt32T -> f System.UInt32.TryParse LitUInt32 "u32"
>         | UInt64T -> f System.UInt64.TryParse LitUInt64 "u64"
>         | x -> failwithf "Compiler error: Invalid default int type. Got: %A" x
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### typecase_validate
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let typecase_validate x _ =
>     let metavars = System.Collections.Generic.HashSet()    
>     let vars = System.Collections.Generic.HashSet()
>     let errors = ResizeArray()
>     let rec f = function
>         | RawTFilledNominal _ | RawTTerm _ | RawTTypecase _ -> failwith 
> "Compiler error: This case is not supposed to appear in typecase."
>         | RawTForall(r,_,_) -> errors.Add(r,ForallNotAllowedInTypecase)
>         | RawTExists(r,_,_) -> errors.Add(r,ExistsNotAllowedInTypecase)
>         | RawTLit _ | RawTPrim _ | RawTSymbol _ | RawTB _ | RawTWildcard _ -> ()
>         | RawTMetaVar(r,a) -> if vars.Contains(a) then 
> errors.Add(r,MetavarShadowedByVar) else metavars.Add(a) |> ignore
>         | RawTVar(r,a) -> if metavars.Contains(a) then 
> errors.Add(r,VarShadowedByMetavar) else vars.Add(a) |> ignore
>         | RawTApply(_,a,b) | RawTFun(_,a,b,_) | RawTPair(_,a,b) -> f a; f b
>         | RawTLayout(_,a,_) | RawTArray(_,a) -> f a
>         | RawTUnion(_,a,_,_) -> Map.iter (fun _ x -> f (snd x)) a 
>         | RawTRecord(_,a) -> Map.iter (fun _ -> f) a
>         | RawTMacro(_,a) -> a |> List.iter (function RawMacroType(_,a) -> f a | 
> _ -> ())
>     f x
>     if 0 < errors.Count then Error (Seq.toList errors) else Ok(x)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### expr_tight
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> // Parses an expression only if it is directly next to the previous one.
> let inline expr_tight next (d: BlockParsingEnv) = 
>     let i = indexBlockParsing d
>     if 0 < i && i < d.tokens.Length then
>         let r,r' = snd (fst d.tokens.[[i-1]]), fst (fst d.tokens.[[i]])
>         if r.line = r'.line && r.character = r'.character then next d else Error
> [[]]
>     else Error [[]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### read_default_value'
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline read_default_value' f d =
>     try_current d <| function
>         | p, TokDefaultValue t' -> skipBlockParsing d; f (p,t')
>         | p, _ -> Error [[p, ExpectedLit]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### read_default_value
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline read_default_value on_top on_bot d =
>     read_default_value' (fun (p,t') ->
>         if d.is_top_down then Ok(on_top (p,t'))
>         else bottom_up_number d.default_env (p,t') |> Result.map on_bot
>         ) d
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### read_string
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let read_string = tuple3 skip_string_open ((read_text false |>> snd) <|>% "") 
> skip_string_close
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### pat_var
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let pat_var d = (read_small_var' |>> PatVar) d
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### pat_list_pair
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let pat_list_pair r a b = PatUnbox(r,"Cons",PatPair(r,a,b))
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### root_pattern_var_nominal_union
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rec root_pattern_var_nominal_union s =
>     (read_var' >>= fun (r,a,re) s ->
>         if System.Char.IsUpper(a,0) then
>             (opt root_pattern_var |>> fun b ->
>                 re SemanticTokenLegend.symbol
>                 let b = match b with Some b -> b | None -> PatE r
>                 PatUnbox(r,a,b)
>                 ) s
>         else 
>             (many (expr_tight read_symbol) >>= fun syms s ->
>                 match syms with
>                 | [[]] ->
>                     (opt root_pattern_var |>> fun b ->
>                         match b with
>                         | Some b ->
>                             re SemanticTokenLegend.type_variable
>                             PatNominal(r +. range_of_pattern b,(r,a),syms,b)
>                         | None ->
>                             PatVar(r,a)
>                         ) s
>                 | _ ->
>                     (root_pattern_var |>> fun b ->
>                         re SemanticTokenLegend.type_variable
>                         PatNominal(r +. range_of_pattern b,(r,a),syms,b)
>                         ) s
>                 ) s
>         ) s
> and root_pattern_wildcard d = (skip_keyword' SpecWildcard |>> PatE) d
> and root_pattern_dyn d = (rangeBlockParsing (skip_unary_op "~" >>. 
> root_pattern_var) |>> PatDyn) d
> and root_pattern_record d = 
>     let pat_record_item =
>         let inj = skip_unary_op "$" >>. read_small_var' |>> fun a -> 
> PatRecordMembersInjectVar,a
>         let var = rangeBlockParsing record_var |>> fun a -> 
> PatRecordMembersSymbol,a
>         ((inj <|> var) .>>. (opt (skip_op "=" >>. root_pattern_pair)))
>         |>> fun ((f,a),b) -> f (a, defaultArg b (PatVar a))
>     (rangeBlockParsing (curlies (many pat_record_item)) |>> PatRecordMembers) d
> and root_pattern_type s = 
>     pipe2 root_pattern (opt (skip_op ":" >>. root_type_annot))
>         (fun a -> function Some b -> PatAnnot(range_of_pattern a +. 
> range_of_texpr b,a,b) | None -> a) s
> and root_pattern_rounds d = 
>     (rangeBlockParsing (rounds ((((read_op' |>> PatVar) <|> root_pattern_type) 
> |>> fun x _ -> x) <|>% PatB))
>     |>> fun (r,x) -> x r) d
> and pat_array s = (skip_unary_op ";" >>. rangeBlockParsing (squares (sepBy 
> root_pattern_type (skip_op ";"))) |>> fun (r,x) -> PatArray(r,x)) s
> and pat_list s =
>     (rangeBlockParsing (squares (sepBy root_pattern_type (skip_op ";")))
>     |>> fun ((r,_),x) -> let r = r,r in List.foldBack (pat_list_pair r) x 
> (PatUnbox(r,"Nil",PatB r))) s
> and pat_exists s = (rangeBlockParsing (pat_exists' .>>. root_pattern) |>> fun 
> (r,(l,b)) -> PatExists(r,l,b)) s
> and root_pattern s =
>     let body s = 
>         let pat_value = (read_value |>> PatValue) <|> (read_default_value 
> PatDefaultValue PatValue)
>         let pat_string = read_string |>> (fun (a,x,b) -> PatValue(a +. 
> b,LitString x))
>         let pat_symbol = read_symbol |>> PatSymbol
>         let (+) = alt (indexBlockParsing s)
>         (root_pattern_rounds + root_pattern_var_nominal_union + 
> root_pattern_wildcard + root_pattern_dyn + pat_value + pat_string 
>         + root_pattern_record + pat_symbol + pat_array + pat_list + pat_exists) 
> s
> 
>     let pat_and = sepBy1 body (skip_op "&") |>> List.reduce (fun a b -> 
> PatAnd(range_of_pattern a +. range_of_pattern b,a,b))
>     let pat_pair = pat_pair pat_and
>     let pat_cons = rangeBlockParsing (sepBy1 pat_pair (skip_op "::")) |>> fun 
> (r,x) -> List.reduceBack (pat_list_pair r) x
>     let pat_or = sepBy1 pat_cons (skip_op "|") |>> List.reduce (fun a b -> 
> PatOr(range_of_pattern a +. range_of_pattern b,a,b))
>     let pat_as = pat_or .>>. (opt (skip_keyword SpecAs >>. pat_or )) |>> 
> function a, Some b -> PatAnd(range_of_pattern a +. range_of_pattern b,a,b) | a, 
> None -> a
>     pat_as s
> and root_pattern_when d = (root_pattern .>>. (opt (skip_keyword SpecWhen >>. 
> root_term)) |>> function a, Some b -> PatWhen(range_of_pattern a +. 
> range_of_expr b,a,b) | a, None -> a) d
> and root_pattern_var d =
>     let (+) = alt (indexBlockParsing d)
>     (pat_var + root_pattern_wildcard + root_pattern_dyn + root_pattern_rounds + 
> root_pattern_record + pat_array + pat_list + pat_exists) d
> and root_pattern_pair d = pat_pair root_pattern_var d
> and root_type_annot d = root_type {root_type_defaults with 
> allow_term=d.is_top_down=false; allow_wildcard=d.is_top_down} d
> and root_type_record (flags : RootTypeFlags) d =
>     (rangeBlockParsing (curlies (sepBy ((rangeBlockParsing record_var .>> 
> skip_op ":") .>>. root_type flags) (optional (skip_op ";"))))
>     >>= fun (r,x) _ ->
>         x |> List.map fst |> duplicates DuplicateRecordTypeVar
>         |> function [[]] -> Ok(RawTRecord(r,x |> List.mapi (fun i ((_,n),x) -> 
> (i,n),x) |> Map.ofList)) | er -> Error er
>         ) d
> and root_type_union (flags : RootTypeFlags) d =
>     let bar = bar (col d)
>     let vanilla = skip_op ":" >>. root_type flags |>> fun x -> Some (false, x)
>     let gadt = 
>         skip_op "::"
>         >>. pipe2 (opt forall) (root_type flags) (Option.foldBack (List.foldBack
> (fun a b -> RawTForall(range_of_typevar a +. range_of_texpr b,a,b))))
>         |>> fun x -> Some (true, x)
> 
>     let body = vanilla <|> gadt <|>% None
>     (rangeBlockParsing (optional bar >>. sepBy1 (rangeBlockParsing 
> read_big_var_as_symbol .>>. body) bar)
>     >>= fun (r,x) _ ->
>         x |> List.map fst |> duplicates DuplicateUnionKey
>         |> function 
>             | [[]] -> Ok(r,x |> List.mapi (fun i ((r,n),x) -> (i,n), match x 
> with Some x -> x | None -> false, RawTB r) |> Map.ofList)
>             | er -> Error er
>         ) d
> and root_type (flags : RootTypeFlags) d =
>     let next = root_type flags
>     let cases d =
>         let wildcard d = if flags.allow_wildcard then (skip_keyword' 
> SpecWildcard |>> RawTWildcard) d else Error [[]]
>         // This metavar case only occurs in typecase during the bottom-up 
> segment. It should not be confused with metavars during top-down type inference.
>         let metavar d = if flags.allow_typecase_metavars then (skip_unary_op "~"
> >>. read_var' |>> fun (a,b,r) -> r SemanticTokenLegend.type_variable; 
> RawTMetaVar(a,b)) d else Error [[]]
>         let term d = if flags.allow_term then (rangeBlockParsing (skip_unary_op 
> "`" >>. ((read_var'' |>> rawv) <|> rounds root_term)) |>> RawTTerm) {d with 
> is_top_down=false} else Error [[]]
>         let symbol = read_symbol |>> RawTSymbol
>         let record = root_type_record flags
>         let lit = (read_value |>> RawTLit) <|> (read_string |>> fun (a,b,c) -> 
> RawTLit(a +. c, LitString b))
>         let lit_default = read_default_value' (bottom_up_number d.default_env >>
> Result.map RawTLit)
>         let var = read_var' |>> fun (o,x,r) ->
>             r SemanticTokenLegend.type_variable
>             RawTVar(o, x)
>         let rounds =
>             rangeBlockParsing (rounds ((next |>> fun x _ -> x) <|>% RawTB))
>             |>> fun (r,x) -> x r
>         let macro = 
>             let read_macro_expression s = 
>                 (macro_expression MType (root_type root_type_defaults |>> fun x 
> -> RawMacroType(range_of_texpr x,x))
>                 <|> macro_expression MTypeLit (root_type root_type_defaults |>> 
> fun x -> RawMacroTypeLit(range_of_texpr x,x))) s
>             let body = many ((read_text false |>> RawMacroText) <|> 
> read_macro_type_var <|> read_macro_expression)
>             pipe3 skip_macro_open body skip_macro_close (fun a l b -> 
> RawTMacro(a +. b, l))
>         let exists = rangeBlockParsing (exists .>>. root_type flags) |>> fun 
> (r,(l,b)) -> RawTExists(r,l,b)
>         let foralls = rangeBlockParsing (forall .>>. root_type flags) |>> (fun 
> (r,(l,b)) -> List.foldBack (fun a b -> RawTForall(range_of_typevar a +. 
> range_of_texpr b,a,b)) l b)
>         let (+) = alt (indexBlockParsing d)
>         (rounds + lit + lit_default + wildcard + term + metavar + var + record +
> symbol + macro + exists + foralls) d
> 
>     let fold_applies a b = List.fold (fun a b -> RawTApply(range_of_texpr a +. 
> range_of_texpr b,a,b)) a b
>     let apply_tight d = pipe2 cases (many (expr_tight cases)) fold_applies d
>     let apply d = pipe2 apply_tight (many (indentBlockParsing (col d) (<) 
> apply_tight)) fold_applies d
>     
>     let pairs = sepBy1 apply (skip_op "*") |>> List.reduceBack (fun a b -> 
> RawTPair(range_of_texpr a +. range_of_texpr b,a,b))
>     let functions = sepBy1 pairs (skip_op "->") |>> List.reduceBack (fun a b -> 
> RawTFun(range_of_texpr a +. range_of_texpr b,a,b,FT_Vanilla))
>     
>     functions d
> 
> and root_term d =
>     let rec expressions d =
>         let next = root_term
>         let case_var = read_var'' |>> rawv
>         let case_value = read_value |>> RawLit
>         let case_exists = 
>             let sequence_type d = (many (indentBlockParsing (col d) (=) (sepBy1 
> (root_type root_type_defaults)  (skip_op ";"))) |>> List.concat) d
>             ((skip_keyword' SpecExists) .>>. (opt (squares sequence_type)) .>>. 
> next)
>                 >>= fun ((r,type_vars),body) d ->
>                         if d.is_top_down || Option.isSome type_vars
>                         then Ok(RawExists(r +. range_of_expr body, (r, 
> type_vars), body))
>                         else Error [[r, TypeVarsNeedToBeExplicitForExists]]
>         let case_rounds = 
>             rangeBlockParsing (rounds ((((read_op' |>> rawv) <|> next) |>> fun x
> _ -> x) <|>% RawB))
>             |>> fun (r,x) -> x r
>         let case_fun =
>             (skip_keyword SpecFun >>. many1 root_pattern_pair .>>. 
> (annotated_body "=>" next root_type_annot))
>             >>= fun (pats, body) _ ->
>                 match patterns_validate pats with
>                 | [[]] -> List.foldBack (fun pat body -> RawFun(range_of_pattern
> pat +. range_of_expr body,[[pat,body]])) pats body |> Ok
>                 | ers -> Error ers
>             
>         let case_forall d =
>             if d.is_top_down then Error [[]] else
>                 (tuple3 forall (many root_pattern_pair) (annotated_body "=>" 
> next root_type_annot)
>                 >>= fun (foralls : TypeVar list, pats, body) _ ->
>                     match patterns_validate pats with
>                     | [[]] -> 
>                         List.foldBack (fun pat body -> RawFun(range_of_pattern 
> pat +. range_of_expr body,[[pat,body]])) pats body
>                         |> List.foldBack (fun a body -> 
> RawForall(range_of_typevar a +. range_of_expr body,a,body)) foralls |> Ok
>                     | ers -> Error ers) d
> 
>         let case_default_value = read_default_value RawDefaultLit RawLit
>         let case_if_then_else d =
>             let i = col d
>             let inline f' keyword = rangeBlockParsing (skip_keyword keyword >>. 
> next)
>             let inline f keyword = indentBlockParsing i (<=) (f' keyword)
>             (pipe4 (f' SpecIf) (f SpecThen) (many (f SpecElif .>>. f SpecThen)) 
> (opt (f SpecElse))
>                 (fun cond tr elifs fl -> 
>                     let f cond tr = function
>                         | Some fl -> fst fl, RawIfThenElse(fst cond +. fst 
> fl,snd cond,snd tr,snd fl)
>                         | None -> fst tr, RawIfThen(fst cond +. fst tr,snd 
> cond,snd tr)
>                     let fl = List.foldBack (fun (cond,tr) fl -> f cond tr fl |> 
> Some) elifs fl
>                     f cond tr fl |> snd)) d
>         
>         let case_match =
>             let clauses d = 
>                 let bar = bar (col d)
>                 (optional bar >>. sepBy1 (root_pattern_when .>>. (skip_op "=>" 
> >>. next)) bar
>                 >>= fun l _ ->
>                     match l |> List.collect (fun (a,_) -> patterns_validate 
> [[a]]) with
>                     | [[]] -> Ok l
>                     | e -> Error e
>                     ) d
> 
>             (rangeBlockParsing (skip_keyword SpecFunction >>. clauses) |>> 
> RawFun)
>             <|> (rangeBlockParsing ((skip_keyword SpecMatch >>. next .>> 
> skip_keyword SpecWith) .>>. clauses) |>> fun (a,(b,c)) -> RawMatch(a,b,c))
> 
>         let case_typecase d =
>             let clauses d = 
>                 let bar = bar (col d)
>                 let typecase = root_type {root_type_defaults with 
> allow_typecase_metavars=true; allow_wildcard=true} >>= typecase_validate
>                 (optional bar >>. sepBy1 (typecase .>>. (skip_op "=>" >>. next))
> bar) d
> 
>             if d.is_top_down then Error [[]] else
>                 (rangeBlockParsing ((skip_keyword SpecTypecase >>. root_type 
> {root_type_defaults with allow_term=true} .>> skip_keyword SpecWith) .>>. 
> clauses)
>                 |>> fun (r, (a, b)) -> RawTypecase(r,a,b)) d
> 
>         let case_record =
>             let create = skip_op "=" >>. next
>             let modify = skip_op "#=" >>. next
>             let var = rangeBlockParsing record_var
>             let inject = skip_unary_op "$" >>. rangeBlockParsing read_small_var
>             let record_create_body =
>                 (var .>>. opt create |>> function (a,Some b) -> 
> RawRecordWithSymbol(a,b) | (a,None) -> RawRecordWithSymbol(a,rawv a))
>                 <|> (inject .>>. create |>> RawRecordWithInjectVar)
>             let record_create = rangeBlockParsing (curlies (sepBy 
> record_create_body (optional (skip_op ";")))) |>> fun (r,withs) -> 
> (r,[[]],withs,[[]])
>             let record_with_bodies =
>                 (var >>= fun a ->
>                     ((modify |>> fun b -> RawRecordWithSymbolModify(a,b))
>                     <|> (opt create |>> function Some b -> 
> RawRecordWithSymbol(a,b) | None -> RawRecordWithSymbol(a,rawv a))))
>                 <|> (inject >>= fun a ->
>                     ((modify |>> fun b -> RawRecordWithInjectVarModify(a,b))
>                     <|> (create |>> fun b -> RawRecordWithInjectVar(a,b))))
>             let record_without_bodies = (var |>> RawRecordWithoutSymbol) <|> 
> (inject |>> RawRecordWithoutInjectVar)
>             let record_with =
>                 rangeBlockParsing
>                     (curlies
>                         (tuple4 read_small_var'
>                             (many ((read_symbol |>> RawSymbol) <|> (skip_op "$" 
> >>. read_small_var' |>> rawv)))
>                             ((skip_keyword SpecWith >>. sepBy record_with_bodies
> (optional (skip_op ";"))) <|>% [[]])
>                             ((skip_keyword SpecWithout >>. many 
> record_without_bodies) <|>% [[]])))
>                 |>> fun (r,(name, acs, withs, withouts)) -> (r,rawv name :: 
> acs,withs,withouts)
> 
>             restore 2 record_create <|> record_with
>             >>= fun (_,_,withs,withouts as x) _ ->
>                 [[
>                 withs |> List.choose (function RawRecordWithSymbol(a,_) | 
> RawRecordWithSymbolModify(a,_) -> Some a | _ -> None) |> duplicates 
> DuplicateTermRecordSymbol
>                 withs |> List.choose (function RawRecordWithInjectVar(a,_) | 
> RawRecordWithInjectVarModify(a,_) -> Some a | _ -> None) |> duplicates 
> DuplicateTermRecordInjection
>                 withouts |> List.choose (function RawRecordWithoutSymbol(a,b) ->
> Some(a,b) | _ -> None) |> duplicates DuplicateTermRecordSymbol
>                 withouts |> List.choose (function RawRecordWithoutInjectVar(a,b)
> -> Some(a,b) | _ -> None) |> duplicates DuplicateTermRecordInjection
>                 ]] |> List.concat |> function [[]] -> Ok(RawRecordWith x) | er 
> -> Error er
> 
>         let case_join_point = skip_keyword SpecJoin >>. next |>> join_point true
> None
>         let case_join_point_backend = skip_keyword SpecJoinBackend >>. 
> (read_big_var_as_keyword .>>. next) |>> join_point_backend
>         let case_real = skip_keyword SpecReal >>. (fun d -> next {d with 
> is_top_down=false}) |>> fun x -> RawReal(range_of_expr x,x)
>         let case_symbol = read_symbol |>> RawSymbol
>         let case_list = rangeBlockParsing (squares sequence_body) >>= fun (r,l) 
> d -> 
>             if d.is_top_down then
>                 let r = fst r, fst r
>                 List.foldBack (fun a b -> 
>                     RawApply(r,rawv(r,unintern "Cons"),RawPair(r,a,b))
>                     ) l (rawv(r,unintern "Nil")) |> Ok
>             else
>                 Error [[r, ListLiteralsNotAllowedInBottomUp]]
> 
>         let case_string = read_string |>> fun (a, x, b) -> RawLit(a +. 
> b,LitString x)
> 
>         let case_macro =
>             let read_macro_expression s = 
>                 (macro_expression MTerm (root_term |>> fun x -> 
> RawMacroTerm(range_of_expr x,x))
>                 <|> macro_expression MType (root_type root_type_defaults |>> fun
> x -> RawMacroType(range_of_texpr x,x))
>                 <|> macro_expression MTypeLit (root_type root_type_defaults |>> 
> fun x -> RawMacroTypeLit(range_of_texpr x,x))) s
>             let body = many ((read_text true |>> RawMacroText) <|> 
> read_macro_var <|> read_macro_expression)
>             pipe3 skip_macro_open body skip_macro_close (fun a l b -> RawMacro(a
> +. b, l))
> 
>         let (+) = alt (indexBlockParsing d)
> 
>         (case_value + case_default_value + case_var + case_join_point + 
> case_join_point_backend + case_real + case_symbol
>         + case_typecase + case_match + case_typecase + case_rounds + case_list +
> case_record
>         + case_if_then_else + case_fun + case_forall + case_string + case_macro 
> + case_exists) d
> 
>     and application_tight d =
>         let next = expressions
>         pipe2 next (many (expr_tight next)) (List.fold (fun a b -> 
> RawApply(range_of_expr a +. range_of_expr b,a,b))) d
> 
>     and sequence_body d = (many (indentBlockParsing (col d) (=) (sepBy1 
> operators (skip_op ";"))) |>> List.concat) d
>     and unary_op d =
>         let next = application_tight
>         let f = 
>             read_unary_op' >>= fun (o,a) d ->
>                 let type_expr d = 
>                     choice [[|
>                         read_small_type_var' |>> RawTVar
>                         read_value |>> RawTLit
>                         read_string |>> fun (a,b,c) -> RawTLit(a +. c, LitString
> b)
>                         rounds (root_type {root_type_defaults with 
> allow_term=true})
>                         |]] d
>                 let term_expr d =
>                     choice [[|
>                         read_var'' |>> rawv
>                         read_value |>> RawLit
>                         read_default_value RawDefaultLit RawLit
>                         read_string |>> fun (a,b,c) -> RawLit(a +. c, LitString 
> b)
>                         rounds root_term
>                         |]] d
>                 match a with
>                 | ";" -> 
>                     if d.is_top_down then (rangeBlockParsing (squares 
> sequence_body) |>> fun (r,x) -> RawApply(o,RawV(o,unintern "array",true), 
> RawArray(o,x))) d
>                     else Error [[o, ArrayLiteralsNotAllowedInBottomUp]]
>                 | "!!!!" -> 
>                     (rangeBlockParsing (read_big_var .>>. (rounds (sepBy (fun d 
> -> unary_op {d with is_top_down=false}) (skip_op ","))))
>                     >>= fun (r,((ra,a), b)) _ ->
>                         match string_to_op a with
>                         | true, op' -> Ok(RawOp(r,op',b))
>                         | false, _ -> Error [[ra,InbuiltOpNotFound]]) d
>                 | "`" -> if d.is_top_down then Error [[]] else 
> (rangeBlockParsing type_expr |>> RawType) d
>                 | "`@" -> 
>                     if d.is_top_down then Error [[]] else 
>                         (rangeBlockParsing term_expr |>> fun (r,x) -> 
>                             let r' = o +. r 
>                             RawType(r', 
> RawTTerm(r',RawOp(r',LitToTypeLit,[[x]])))
>                             ) d
>                 | "``" -> if d.is_top_down then Error [[]] else 
> (rangeBlockParsing type_expr |>> fun (r,x) -> RawOp(o +. 
> r,TypeToVar,[[RawType(r,x)]])) d
>                 | "`$" -> (read_var'' |>> fun (r,x) -> RawV(r,x,false)) d
>                 | _ -> (next |>> fun b -> RawApply(o +. range_of_expr b,rawv(o, 
> "~" + a),b)) d
>         (f <|> next) d
> 
>     and application (d: BlockParsingEnv) =
>         let next = unary_op
>         pipe2 next (many (indentBlockParsing (col d) (<) next)) (List.fold (fun 
> a b -> RawApply(range_of_expr a +. range_of_expr b,a,b))) d
> 
>     and operators d =
>         let term = application
>         let i = col d
>         let op = indentBlockParsing i (<=) op
> 
>         /// Pratt parser
>         let rec led left (prec,asoc,m) d =
>             match asoc with
>             | Associativity.Right -> (tdop (prec-1) |>> fun right -> m (left, 
> right)) d
>             | _ -> (tdop prec |>> fun right -> m (left, right)) d
> 
>         and tdop rbp d =
>             let rec loop left d = 
>                 ((op >>= fun (prec,_,_ as v) d ->
>                     if rbp < prec then (led left v >>= loop) d
>                     else skip' d -1; Error [[]]) <|>% left) d
>             (term >>= loop) d
> 
>         pipe2 (tdop System.Int32.MinValue)
>             (opt (indentBlockParsing i (<=) (skip_op ":" >>. root_type_annot)))
>             (fun a -> function Some b -> RawAnnot(range_of_expr a +. 
> range_of_texpr b,a,b) | _ -> a)
>             d
> 
>     let statements d =
>         let next = operators
>         let inl_or_let =
>             (inl_or_let root_term root_pattern_pair root_type_annot .>>. many 
> (and_inl_or_let root_term root_pattern_pair root_type_annot))
>             >>= fun x _ -> 
>                 match x with
>                 | ((r,name,body),false), [[]] -> Ok(fun on_succ -> 
> RawMatch(r,body,[[name,on_succ]]))
>                 | ((_,_,_),false), l -> l |> List.map (fun ((r,_,_),_) -> r, 
> UnexpectedAndInlRec) |> Error
>                 | x, xs ->
>                     let l = x :: xs |> List.map (function 
>                         | (r,PatVar(o,name),body),true -> r, ((o,name), body)
>                         | _ -> failwith "Compiler error: Recursive inl/let 
> statements should always have PatVar for names and should always be recursive."
>                         )
>                     let r = l |> List.map fst |> List.reduce (+.)
>                     l |> List.map (snd >> fst) 
>                     |> duplicates DuplicateRecFunctionName
>                     |> function [[]] -> Ok(fun on_succ -> RawRecBlock(r, 
> List.map snd l, on_succ)) | er -> Error er
>         let module_open = module_openBlockParsing |>> fun (r,(name,acs)) on_succ
> -> RawOpen(r,name,acs,on_succ)
>         let statement_parsers d =
>             let (+) = alt (indexBlockParsing d)
>             (inl_or_let + module_open) d
>         
>         let i = col d
>         let inline if_ x = indentBlockParsing i x
>         let stmts = 
>             many1 (if_ (=) (rangeBlockParsing statement_parsers)) .>>. opt ((if_
> (<=) (skip_keyword SpecIn) >>. root_term) <|> if_ (=) next)
>             >>= fun (a,b) _ -> match b with Some b -> Ok(a,b) | None -> Error 
> [[List.last a |> fst, ExpectedExpression]]
>         let expr = if_ (=) next |>> fun x -> [[]],x
>         (many1 (stmts <|> expr)
>         |>> fun x -> 
>             List.foldBack (fun (stmts,expr) s -> 
>                 let process_statements s = List.foldBack (fun (_,a) b -> a b) 
> stmts s
>                 match s with
>                 | ValueNone -> ValueSome (process_statements expr)
>                 | ValueSome expr' -> ValueSome (process_statements 
> (RawSeq(range_of_expr expr +. range_of_expr expr',expr,expr')))
>                 ) x ValueNone |> ValueOption.get
>             ) d
> 
>     statements d
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### comments
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let comments (s : BlockParsingEnv) = 
>     let line_near_to = lineBlockParsing s
>     let rec loop line d =
>         if 0 <= line then 
>             match s.comments.[[line]] with
>             | Some(r,text) -> 
>                 let text = text.TrimEnd()
>                 loop (line-1) ((if text = "" then "\n" else text + " ") :: d)
>             | _ -> d
>         else d
>     loop (line_near_to-1) [[]]
>     |> String.concat ""
>     |> fun x -> Ok(x.TrimEnd())
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### Comments
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Comments = string
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### TopStatement
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type [[<ReferenceEquality>]] TopStatement =
>     | TopAnd of VSCRange * TopStatement
>     | TopInl of Comments * VSCRange * (VSCRange * VarString) * RawExpr * 
> is_top_down: bool
>     | TopRecInl of Comments * VSCRange * (VSCRange * VarString) * RawExpr * 
> is_top_down: bool
>     | TopNominal of VSCRange * (VSCRange * VarString) * HoVar list * RawTExpr
>     | TopNominalRec of VSCRange * (VSCRange * VarString) * HoVar list * RawTExpr
>     | TopType of VSCRange * (VSCRange * VarString) * HoVar list * RawTExpr
>     | TopPrototype of Comments * VSCRange * (VSCRange * VarString) * (VSCRange *
> VarString) * TypeVar list * RawTExpr
>     | TopInstance of VSCRange * (VSCRange * VarString) * (VSCRange * VarString) 
> * TypeVar list * RawExpr
>     | TopOpen of VSCRange * (VSCRange * VarString) * (VSCRange * SymbolString) 
> list
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### top_inl_or_let_process
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let top_inl_or_let_process comments is_top_down = function
>     | (r,PatVar(r',name),body),is_rec -> 
>         let rec loop = function
>             | RawAnnot(r,body,t) -> loop body
>             | RawForall _ | RawFun _ ->
>                 if is_rec then 
> Ok(TopRecInl(comments,r,(r',name),body,is_top_down))
>                 else Ok(TopInl(comments,r,(r',name),body,is_top_down))
>             | _ -> Error [[r, ExpectedGlobalFunction]]
>         loop body
>     | (_,x,_),_ -> Error [[range_of_pattern x, 
> ExpectedVarOrOpAsNameOfGlobalStatement]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### top_inl_or_let
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let top_inl_or_let d = ((comments .>>. inl_or_let root_term root_pattern_pair 
> root_type_annot) >>= fun (comments,x) d -> top_inl_or_let_process comments 
> d.is_top_down x) d
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### process_union
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let process_union (r,(layout,n,a,(r',b))) _ =
>     let this = (RawTVar n,a) ||> List.fold (fun s x -> 
> RawTApply(r',s,RawTVar(r',hovar_name x)))
>     match layout with
>     | UHeap -> Ok(TopNominalRec(r,n,a,RawTUnion(r',b,layout,this)))
>     | UStack -> Ok(TopNominal(r,n,a,RawTUnion(r',b,layout,this)))
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### union_clauses
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let union_clauses d = root_type_union root_type_defaults d
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### top_union
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let top_union d = ((rangeBlockParsing (tuple4 (skip_keyword SpecUnion >>. 
> ((skip_keyword SpecRec >>% UHeap) <|>% UStack)) read_small_type_var' (many 
> ho_var .>> skip_op "=") union_clauses)) >>= process_union) d
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### top_nominal
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let top_nominal d = 
>     (rangeBlockParsing (tuple3 (skip_keyword SpecNominal >>. 
> read_small_type_var') (many ho_var .>> skip_op "=") (root_type 
> {root_type_defaults with allow_term=true}))
>     |>> fun (r,(n,a,b)) -> TopNominal(r,n,a,b)) d
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### type_forall
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline type_forall next d = (pipe2 (forall <|>% [[]]) next (List.foldBack 
> (fun x s -> RawTForall(range_of_typevar x +. range_of_texpr s,x,s)))) d 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### top_prototype
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let top_prototype d = 
>     (rangeBlockParsing 
>         (tuple5 comments
>             (skip_keyword SpecPrototype >>. (read_small_var' <|> rounds 
> read_op')) read_small_type_var' (many forall_var) 
>             (skip_op ":" >>. type_forall (root_type root_type_defaults)))
>     |>> fun (r,(com,a,b,c,d)) -> TopPrototype(com,r,a,b,c,d)) d
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### top_instance
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let top_instance d =
>     (rangeBlockParsing
>         (tuple4 (skip_keyword SpecInstance >>. (read_small_var' <|> rounds 
> read_op')) read_small_type_var' (many forall_var) (skip_op "=" >>. root_term))
>     >>= fun (r,(prototype_name, nominal_name, nominal_foralls, body)) _ ->
>             Ok(TopInstance(r,prototype_name,nominal_name,nominal_foralls,body))
>             ) d
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### top_type
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let top_type d = (rangeBlockParsing (tuple3 (skip_keyword SpecType >>. 
> read_small_type_var') (many ho_var) (skip_op "=" >>. root_type 
> root_type_defaults)) |>> fun (r,(a,b,c)) -> TopType(r,a,b,c)) d
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### top_and_inl_or_let
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let top_and_inl_or_let d = 
>     (comments .>>. restore 1 (rangeBlockParsing (and_inl_or_let root_term 
> root_pattern_pair root_type_annot)) 
>     >>= fun (comments,(r,x)) d -> top_inl_or_let_process comments d.is_top_down 
> x |> Result.map (fun x -> TopAnd(r,x))) d
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### top_and
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline top_and f = restore 1 (rangeBlockParsing (skip_keyword SpecAnd >>. 
> f)) |>> TopAnd
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### top_and_union
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let top_and_union d = top_and ((rangeBlockParsing (tuple4 (skip_keyword 
> SpecUnion >>% UHeap) read_small_type_var' (many ho_var .>> skip_op "=") 
> union_clauses)) >>= process_union) d
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### top_open
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let top_open d = (module_openBlockParsing |>> fun (r,(name,acs)) -> 
> TopOpen(r,name,acs)) d
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### top_statement
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let top_statement s =
>     let (+) = alt (indexBlockParsing s)
>     (top_inl_or_let + top_union + top_nominal + top_prototype + top_type + 
> top_instance + top_and_inl_or_let + top_and_union + top_open) s
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### ParserErrorsList
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type ParserErrorsList = (VSCRange * ParserErrors) list
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### ParseResult
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type ParseResult = Result<TopStatement,ParserErrorsList>
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### parseBlockParsing
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let parseBlockParsing (s : BlockParsingEnv) : ParseResult =
>     if 0 < s.tokens.Length then
>         match top_statement s with
>         | Ok _ as x -> if s.Index = s.tokens.Length then x else Error [[fst 
> s.tokens.[[s.Index]], ExpectedEob]]
>         | Error [[]] ->
>             if s.Index = s.tokens.Length then Error [[fst (Array.last s.tokens),
> UnexpectedEob]]
>             else Error [[fst s.tokens.[[s.Index]], ExpectedEob]]
>         | Error _ as l -> l
>     else
>         Error [[]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### show_parser_error
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let show_parser_error = function
>     | TypeVarsNeedToBeExplicitForExists -> "The type vars for the exists body 
> have to be specified up front in the bottom-up segment."
>     | DuplicateExistsVar -> "Duplicate variable in the exists type."
>     | ExistsNotAllowedInTypecase -> "The existential type is not allowed in 
> typecase."
>     | ForallNotAllowedInTypecase -> "The type lambda is not allowed in 
> typecase."
>     | MetavarShadowedByVar -> "The metavariable is shadowed by a variable."
>     | VarShadowedByMetavar -> "The variable is shadowed by a metavariable."
>     | ExpectedPairedSymbolInUnion -> "The union clause should be pair whose left
> side is a symbol."
>     | ExpectedEscapedChar false -> "escaped character"
>     | ExpectedEscapedChar true -> "escaped character or the escaped variable 
> (\\v)"
>     | ExpectedUnescapedChar -> "unescaped character"
>     | ExpectedMacroVar -> "variable"
>     | ExpectedMacroTypeVar -> "type variable"
>     | ExpectedMacroTypeLitVar -> "type literal variable"
>     | ExpectedText -> "text"
>     | ExpectedMacroOpen -> "$\""
>     | ExpectedStringOpen -> "\""
>     | ExpectedMacroClose | ExpectedStringClose -> "\""
>     | ExpectedKeyword x ->
>         match x with
>         | SpecExists -> "exists"
>         | SpecIn -> "in"
>         | SpecAnd -> "and"
>         | SpecFun -> "fun"
>         | SpecMatch -> "match"
>         | SpecTypecase -> "typecase"
>         | SpecFunction -> "function"
>         | SpecWith -> "with"
>         | SpecWithout -> "without"
>         | SpecAs -> "as"
>         | SpecWhen -> "when"
>         | SpecInl -> "inl"
>         | SpecLet -> "let"
>         | SpecForall -> "forall"
>         | SpecInm -> "inm"
>         | SpecInb -> "inb"
>         | SpecRec -> "rec"
>         | SpecIf -> "if"
>         | SpecThen -> "then"
>         | SpecElif -> "elif"
>         | SpecElse -> "else"
>         | SpecJoin -> "join"
>         | SpecJoinBackend -> "join_backend"
>         | SpecType -> "type"
>         | SpecNominal -> "nominal"
>         | SpecReal -> "real"
>         | SpecUnion -> "union"
>         | SpecOpen -> "open"
>         | SpecWildcard -> "_"
>         | SpecInstance -> "instance"
>         | SpecPrototype -> "prototype"
>     | ExpectedParenthesis(Round,Open) -> "("
>     | ExpectedParenthesis(Curly,Open) -> "{"
>     | ExpectedParenthesis(Square,Open) -> "[["
>     | ExpectedParenthesis(Round,Close) -> ")"
>     | ExpectedParenthesis(Curly,Close) -> "}"
>     | ExpectedParenthesis(Square,Close) -> "]]"
>     | ExpectedMacroExpression(MTerm,Open) -> "`("
>     | ExpectedMacroExpression(MType,Open) -> "!("
>     | ExpectedMacroExpression(MTypeLit,Open) -> "@("
>     | ExpectedMacroExpression(MTerm,Close) -> ")"
>     | ExpectedMacroExpression(MType,Close) -> ")"
>     | ExpectedMacroExpression(MTypeLit,Close) -> ")"
>     | ExpectedOpenParenthesis -> "(, { or [["
>     | ExpectedOperator' -> "operator"
>     | ExpectedOperator x -> x
>     | ExpectedUnaryOperator' -> "unary operator"
>     | ExpectedUnaryOperator x -> x
>     | ExpectedUnit -> "()"
>     | ExpectedSmallVar -> "lowercase variable"
>     | ExpectedBigVar -> "uppercase variable"
>     | ExpectedVar -> "variable"
>     | ExpectedLit -> "literal"
>     | ExpectedSymbol -> "symbol"
>     | ExpectedSymbolPaired -> "paired symbol"
>     | ExpectedStatement -> "statement"
>     | ExpectedFunctionAsBodyOfRecStatement -> "Rec statements should all return 
> functions known at parse time."
>     | ExpectedGlobalFunction -> "Global inl/let statements should all return 
> functions known at parse time."
>     | ExpectedSinglePatternWhenStatementNameIsNorVarOrOp -> "Unexpected 
> pattern."
>     | ExpectedVarOrOpAsNameOfGlobalStatement -> "The first pattern of a global 
> statement should either be a variable or compile down to it."
>     | ExpectedVarOrOpAsNameOfRecStatement -> "The first pattern of a recursive 
> statement should either be a variable or compile down to it."
>     | ExpectedExpression -> "A sequence of statements should end in an 
> expression."
>     | InbuiltOpNotFound -> "Not found among the inbuilt operations."
>     | UnknownOperator -> "Operator does not have known precedence and 
> associativity."
>     | ForallNotAllowed -> "Forall not allowed here."
>     | InvalidPattern DisjointOrPatternVar -> "Both branches of an or pattern 
> need to have the same variables. This one is disjoint."
>     | InvalidPattern DuplicateTermVar -> "Duplicate term variable in pattern."
>     | InvalidPattern DuplicateTypeVar -> "Duplicate type variable in pattern."
>     | InvalidPattern ShadowedVar -> "Shadowed pattern variable."
>     | MetavarNotAllowed -> "Metavariable is not allowed here."
>     | SymbolPairedShouldStartWithUppercaseInTypeScope -> "Paired symbol should 
> start with uppercase in type scope."
>     | TermNotAllowed -> "The term is not allowed here."
>     | TypecaseNotAllowed -> "Typecase is not allowed here."
>     | UnexpectedAndInlRec -> "The first statement of a recursive block has to be
> marked as recursive."
>     | ExpectedEob -> "Failed to parse this token."
>     | UnexpectedEob -> "Unexpected end of block past this token."
>     | UnknownError -> "Compiler error: Parsing failed at this position with no 
> error message and without consuming all the tokens in a block."
>     | DuplicateRecordTypeVar -> "Duplicate record type variable."
>     | DuplicateForallVar -> "Duplicate forall variable."
>     | DuplicateConstraint -> "Duplicate constraint."
>     | InvalidPattern DuplicateRecordSymbol
>     | DuplicateTermRecordSymbol -> "Duplicate record symbol."
>     | InvalidPattern DuplicateRecordInjection
>     | DuplicateTermRecordInjection -> "Duplicate record injection."
>     | DuplicateRecFunctionName -> "Shadowing of functions by the members of the 
> same mutually recursive block is not allowed."
>     | BottomUpNumberParseError (x, val_dsc) -> sprintf "The string %s cannot be 
> safely parsed as %s." x val_dsc
>     | DuplicateUnionKey -> "Duplicate union keys are not allowed."
>     | ListLiteralsNotAllowedInBottomUp -> "List literals are not allowed in the 
> bottom-up segment."
>     | ArrayLiteralsNotAllowedInBottomUp -> "Array literals are not allowed in 
> the bottom-up segment."
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## HopacInfixes
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #r 
> @"../../../../../../../.nuget/packages/hopac/0.5.1/lib/netstandard2.0/Hopac.dll"
> #r 
> @"../../../../../../../.nuget/packages/hopac/0.5.1/lib/netstandard2.0/Hopac.Core
> .dll"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> open Hopac
> open Hopac.Infixes
> 
> let (>>**) x f =
>     if x |> Hopac.Promise.Now.isFulfilled
>     then x |> Hopac.Promise.Now.get |> f
>     else Hopac.Infixes.(>>=*) x f
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## BlockBundling
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> open Hopac.Extensions
> open Hopac.Stream
> 
> // open FSharpx.Collections
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### Bundle
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> // These bundles are top statements that have their range offsets distributed 
> into them.
> type [[<ReferenceEquality>]] Bundle =
>     | BundleType of VSCRange * (VSCRange * VarString) * HoVar list * RawTExpr
>     | BundleNominal of VSCRange * (VSCRange * VarString) * HoVar list * RawTExpr
>     | BundleNominalRec of (VSCRange * (VSCRange * VarString) * HoVar list * 
> RawTExpr) list
>     | BundleInl of Comments * VSCRange * (VSCRange * VarString) * RawExpr * 
> is_top_down: bool
>     | BundleRecInl of (Comments * VSCRange * (VSCRange * VarString) * RawExpr) 
> list * is_top_down: bool
>     | BundlePrototype of Comments * VSCRange * (VSCRange * VarString) * 
> (VSCRange * VarString) * TypeVar list * RawTExpr
>     | BundleInstance of VSCRange * (VSCRange * VarString) * (VSCRange * 
> VarString) * TypeVar list * RawExpr
>     | BundleOpen of VSCRange * (VSCRange * VarString) * (VSCRange * 
> SymbolString) list
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### bundle_range
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let bundle_range = function
>     | BundleType(r,_,_,_) | BundleNominal(r,_,_,_) | BundleInl(_,r,_,_,_) 
>     | BundlePrototype(_,r,_,_,_,_) | BundleInstance(r,_,_,_,_) | 
> BundleOpen(r,_,_) -> r
>     | BundleNominalRec l -> List.head l |> fun (r,_,_,_) -> r
>     | BundleRecInl(l,_) -> List.head l |> fun (_,r,_,_) -> r
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### add_offset
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let add_offset offset (range : VSCRange) : VSCRange = 
>     let f (a : VSCPos) = {|a with line=offset + a.line|}
>     let a,b = range
>     f a, f b
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### add_offset_hovar
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let add_offset_hovar offset (a,b) = add_offset offset a, b
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### add_offset_hovar_list
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let add_offset_hovar_list offset x = List.map (add_offset_hovar offset) x
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### add_offset_typevar
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let add_offset_typevar offset ((a,b),c) = (add_offset offset a, b), 
> add_offset_hovar_list offset c
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### add_offset_typevar_list
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let add_offset_typevar_list offset x = List.map (add_offset_typevar offset) x
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### fold_offset_ty
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rec fold_offset_ty offset x = 
>     let f = fold_offset_ty offset
>     let g = add_offset offset
>     match x with
>     | RawTWildcard r -> RawTWildcard(g r)
>     | RawTLit(r,a) -> RawTLit(g r, a)
>     | RawTB r -> RawTB(g r)
>     | RawTMetaVar(r,a) -> RawTMetaVar(g r,a)
>     | RawTVar(r,a) -> RawTVar(g r,a)
>     | RawTArray(r,a) -> RawTArray(g r,f a)
>     | RawTPair(r,a,b) -> RawTPair(g r,f a,f b)
>     | RawTFun(r,a,b,t) -> RawTFun(g r,f a,f b,t)
>     | RawTRecord(r,a) -> RawTRecord(g r,Map.map (fun _ -> f) a)
>     | RawTUnion(r,a,b,c) -> RawTUnion(g r,Map.map (fun _ (is_gadt,body) -> 
> is_gadt, f body) a,b,f c)
>     | RawTTypecase(r,a,b) -> RawTTypecase(g r,f a,List.map (fun (a,b) -> f a, f 
> b) b)
>     | RawTSymbol(r,a) -> RawTSymbol(g r,a)
>     | RawTApply(r,a,b) -> RawTApply(g r,f a,f b)
>     | RawTForall(r,a,b) -> RawTForall(g r,add_offset_typevar offset a,f b)
>     | RawTExists(r,a,b) -> RawTExists(g r,add_offset_typevar_list offset a,f b)
>     | RawTPrim(r,a) -> RawTPrim(g r,a)
>     | RawTTerm(r,a) -> RawTTerm(g r,fold_offset_term offset a)
>     | RawTMacro(r,a) -> RawTMacro(g r,fold_offset_macro offset a)
>     | RawTFilledNominal(r,a) -> RawTFilledNominal(g r,a)
>     | RawTLayout(r,a,b) -> RawTLayout(g r,f a,b)
> and fold_offset_macro offset a =
>     let g = add_offset offset
>     List.map (function
>         | RawMacroText(r,a) -> RawMacroText(g r,a)
>         | RawMacroTerm(r,a) -> RawMacroTerm(g r,fold_offset_term offset a)
>         | RawMacroType(r,a) -> RawMacroType(g r,fold_offset_ty offset a)
>         | RawMacroTypeLit(r,a) -> RawMacroTypeLit(g r,fold_offset_ty offset a)
>         ) a
> and fold_offset_term offset x = 
>     let f = fold_offset_term offset
>     let ty = fold_offset_ty offset
>     let g = add_offset offset
>     match x with
>     | RawB r -> RawB (g r)
>     | RawV(r,a,b) -> RawV (g r,a,b)
>     | RawLit(r,a) -> RawLit (g r,a)
>     | RawDefaultLit(r,a) -> RawDefaultLit (g r,a)
>     | RawSymbol(r,a) -> RawSymbol (g r,a)
>     | RawType(r,a) -> RawType(g r, ty a)
>     | RawMatch(r,a,b) -> RawMatch(g r,f a,List.map (fun (a,b) -> 
> fold_offset_pattern offset a,f b) b)
>     | RawFun(r,a) -> RawFun(g r,List.map (fun (a,b) -> fold_offset_pattern 
> offset a,f b) a)
>     | RawForall(r,a,b) -> RawForall(g r,add_offset_typevar offset a,f b)
>     | RawExists(r,(r',a),b) -> RawExists(g r,(g r',Option.map (List.map ty) a),f
> b)
>     | RawFilledForall(r,a,b) -> RawFilledForall(g r,a,f b)
>     | RawRecBlock(r,a,b) -> RawRecBlock(g r,List.map (fun ((r,a),b) -> (g r,a),f
> b) a,f b)
>     | RawRecordWith(r,a,b,c) -> 
>         let b =
>             b |> List.map (function
>                 | RawRecordWithSymbol((r,a),b) -> RawRecordWithSymbol((g r,a),f 
> b)
>                 | RawRecordWithSymbolModify((r,a),b) -> 
> RawRecordWithSymbolModify((g r,a),f b)
>                 | RawRecordWithInjectVar((r,a),b) -> RawRecordWithInjectVar((g 
> r,a),f b)
>                 | RawRecordWithInjectVarModify((r,a),b) -> 
> RawRecordWithInjectVarModify((g r,a),f b)
>                 )
>         let c =
>             c |> List.map (function
>                 | RawRecordWithoutSymbol(r,a) -> RawRecordWithoutSymbol(g r,a)
>                 | RawRecordWithoutInjectVar(r,a) -> RawRecordWithoutInjectVar(g 
> r,a)
>                 )
>         RawRecordWith(g r, List.map f a,b,c)
>     | RawOp(r,a,b) -> RawOp(g r,a,List.map f b)
>     | RawJoinPoint(r,q,a,b) -> RawJoinPoint(g r,Option.map (fun (r',w) -> g 
> r',w) q,f a,b)
>     | RawAnnot(r,a,b) -> RawAnnot(g r,f a,ty b)
>     | RawTypecase(r,a,b) -> RawTypecase(g r,ty a,List.map (fun (a,b) -> ty a,f 
> b) b)
>     | RawOpen(r,a,b,c) -> RawOpen(g r,add_offset_hovar offset 
> a,add_offset_hovar_list offset b,f c)
>     | RawApply(r,a,b) -> RawApply(g r,f a,f b)
>     | RawIfThenElse(r,a,b,c) -> RawIfThenElse(g r,f a,f b,f c)
>     | RawIfThen(r,a,b) -> RawIfThen(g r,f a,f b)
>     | RawPair(r,a,b) -> RawPair(g r,f a,f b)
>     | RawSeq(r,a,b) -> RawSeq(g r,f a,f b)
>     | RawHeapMutableSet(r,a,b,c) -> RawHeapMutableSet(g r,f a,List.map f b,f c)
>     | RawReal(r,a) -> RawReal(g r,f a)
>     | RawMissingBody r -> RawMissingBody(g r)
>     | RawMacro(r,a) -> RawMacro(g r,fold_offset_macro offset a)
>     | RawArray(r,a) -> RawArray(g r,List.map f a)
> and fold_offset_pattern offset x = 
>     let f = fold_offset_pattern offset
>     let term = fold_offset_term offset
>     let ty = fold_offset_ty offset
>     let g = add_offset offset
>     let g' x = add_offset_hovar offset x
>     match x with
>     | PatFilledDefaultValue _ -> failwith "Compiler error: Later stages only."
>     | PatB r -> PatB(g r)
>     | PatE r -> PatE(g r)
>     | PatVar(r,a) -> PatVar(g r,a)
>     | PatDyn(r,a) -> PatDyn(g r,f a)
>     | PatUnbox(r,q,a) -> PatUnbox(g r,q,f a)
>     | PatAnnot(r,a,b) -> PatAnnot(g r,f a,ty b)
>     | PatPair(r,a,b) -> PatPair(g r,f a,f b)
>     | PatSymbol(r,a) -> PatSymbol(g r,a)
>     | PatRecordMembers(r,a) ->
>         let a = a |> List.map (function
>             | PatRecordMembersSymbol((r,a),b) -> PatRecordMembersSymbol((g 
> r,a),f b)
>             | PatRecordMembersInjectVar((r,a),b) -> PatRecordMembersInjectVar((g
> r,a),f b)
>             )
>         PatRecordMembers(g r,a)
>     | PatOr(r,a,b) -> PatOr(g r,f a,f b)
>     | PatAnd(r,a,b) -> PatAnd(g r,f a,f b)
>     | PatValue(r,a) -> PatValue(g r,a)
>     | PatDefaultValue(r,a) -> PatDefaultValue(g r,a)
>     | PatWhen(r,a,b) -> PatWhen(g r,f a,term b)
>     | PatNominal(r,a,b,c) -> PatNominal(g r,g' a,List.map g' b,f c)
>     | PatExists(r,a,b) -> PatExists(g r,List.map g' a,f b)
>     | PatArray(r,a) -> PatArray(g r,List.map f a)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### bundle_blocks
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let bundle_blocks (blocks : TopStatement Block list) =
>     match blocks with
>     | [[]] -> None
>     | {block=TopAnd _} :: x' -> failwith "Compiler error: TopAnd should be 
> eliminated during the first bundling step."
>     | {block=TopRecInl _} :: _ as l ->
>         l |> List.mapFold (fun _ -> function
>             | {offset=i; block=TopRecInl(com,r,a,b,c)} -> (com, add_offset i r, 
> add_offset_hovar i a, fold_offset_term i b), c
>             | _ -> failwith "Compiler error: Recursive inl statements can only 
> be followed by statements of the same type."
>             ) true
>         |> BundleRecInl |> Some
>     | {block=TopNominalRec _} :: _ as l ->
>         l |> List.map (function 
>             | {offset=i; block=TopNominalRec(r,a,b,c)} -> (add_offset i r, 
> add_offset_hovar i a, add_offset_hovar_list i b, fold_offset_ty i c)
>             | _ -> failwith "Compiler error: Recursive type statements can only 
> be followed by statements of the same type."
>             )
>         |> BundleNominalRec |> Some
>     | [[{offset=i; block=TopInl(com,r,a,b,c)}]] -> BundleInl(com, add_offset i 
> r, add_offset_hovar i a, fold_offset_term i b, c) |> Some
>     | [[{offset=i; block=TopPrototype(com,r,a,b,c,d)}]] -> 
> BundlePrototype(com,add_offset i r, add_offset_hovar i a, add_offset_hovar i b, 
> add_offset_typevar_list i c, fold_offset_ty i d) |> Some
>     | [[{offset=i; block=TopNominal(r,a,b,c)}]] -> BundleNominal(add_offset i r,
> add_offset_hovar i a, add_offset_hovar_list i b, fold_offset_ty i c) |> Some
>     | [[{offset=i; block=TopType(r,a,b,c)}]] -> BundleType(add_offset i r, 
> add_offset_hovar i a, add_offset_hovar_list i b, fold_offset_ty i c) |> Some
>     | [[{offset=i; block=TopInstance(r,a,b,c,d)}]] -> BundleInstance(add_offset 
> i r, add_offset_hovar i a, add_offset_hovar i b, add_offset_typevar_list i c, 
> fold_offset_term i d) |> Some
>     | [[{offset=i; block=TopOpen(r,a,b)}]] -> BundleOpen(add_offset i r, 
> add_offset_hovar i a, add_offset_hovar_list i b) |> Some
>     | {block=TopInl _ | TopPrototype _ | TopNominal _ | TopType _ | TopInstance 
> _ | TopOpen _} :: _ -> failwith "Compiler error: Regular top level statements 
> should be singleton bundles."
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### add_line_to_range
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let add_line_to_range line ((a,b) : VSCRange) = {|a with line=line+a.line|}, {|b
> with line=line+b.line|}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### process_error
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let process_error v = 
>     let messages, expecteds = v |> List.distinct |> List.partition (fun x -> 
> System.Char.IsUpper(x,0))
>     let ex () = match expecteds with [[x]] -> sprintf "Expected: %s" x | x -> 
> sprintf "Expected one of: %s" (String.concat ", " x)
>     let f l = String.concat "\n" l
>     if List.isEmpty expecteds then f messages
>     elif List.isEmpty messages then ex ()
>     else f (ex () :: "" :: "Other error messages:" :: messages)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### show_block_parsing_error
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let show_block_parsing_error line (l : ParserErrorsList) : RString list =
>     l |> List.groupBy fst
>     |> List.map (fun (k,v) -> 
>         let k = add_line_to_range line k
>         let v = List.map (snd >> show_parser_error) v
>         k, process_error v
>         )
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### ParsedBlock
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type ParsedBlock = {result : ParseResult; semantic_tokens : LineTokens}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### ParserState
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type ParserState = {
>     is_top_down : bool
>     blocks : (LineTokens * ParsedBlock Promise Block) list
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### BlockBundleValue
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type BlockBundleValue = {bundle : Bundle option; errors : RString list}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### BlockBundleState
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type BlockBundleState = (TopStatement Block list * BlockBundleValue) Stream
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### BlockBundleStateInner
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type BlockBundleStateInner = {errors : RString list; tmp : TopStatement Block 
> list; state : BlockBundleState}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### wdiff_block_bundle_init
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let wdiff_block_bundle_init : BlockBundleState = Promise.Now.never()
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### wdiff_block_bundle
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> /// Bundles the blocks with the `and` statements. Also collects the parser 
> errors.
> /// Does diffing to ref preserve the bundles.
> let wdiff_block_bundle (state : BlockBundleState) (l : ParserState) : 
> BlockBundleState =
>     let (+.) a b = add_line_to_range a b
> 
>     let empty = {state=wdiff_block_bundle_init; tmp=[[]]; errors=[[]]}
>     let move_temp (s : BlockBundleStateInner) next =
>         let o' = List.rev s.tmp
>         let fl () = (o',{bundle=bundle_blocks o'; errors=Seq.toList s.errors}), 
> next empty
>         if Promise.Now.isFulfilled s.state then
>             match Promise.Now.get s.state with
>             | Cons((o,q),xs) when o = o' -> (o,{bundle=q.bundle; 
> errors=Seq.toList s.errors}), next {state=xs; tmp=[[]]; errors=[[]]}
>             | _ -> fl ()
>         else fl ()
>         |> Cons |> Promise.Now.withValue
> 
>     let inline iter (s : BlockBundleStateInner) l f = 
>         match l with
>         | (_,x) :: x' -> let offset = x.offset in x.block >>** fun {result=a} ->
> f (offset,a,x')
>         | [[]] -> move_temp s (fun _ -> Promise.Now.withValue Nil)
>     let rec init (s : BlockBundleStateInner) l = iter s l <| fun (offset,x,x') 
> -> 
>         match x with
>         | Ok (TopAnd(r,_)) -> init {s with errors = (offset +. r, "Invalid `and`
> statement.") :: s.errors} x'
>         | Ok (TopRecInl _ as a) -> recinl {s with tmp = {offset=offset; block=a}
> :: s.tmp} x'
>         | Ok (TopNominalRec _ as a) -> rectype {s with tmp = {offset=offset; 
> block=a} :: s.tmp} x'
>         | Ok a -> move_temp {s with tmp = {offset=offset; block=a} :: s.tmp} 
> (fun s -> init s x')
>         | Error er -> init {s with errors = List.append 
> (show_block_parsing_error offset er) s.errors} x'
>     and recinl (s : BlockBundleStateInner) l = iter s l <| fun (offset,x,x') -> 
>         match x with
>         | Ok (TopAnd(_, TopRecInl _ & a)) -> recinl {s with tmp = 
> {offset=offset; block=a} :: s.tmp} x'
>         | Ok (TopAnd(r, _)) -> recinl {s with errors = (offset +. r, "inl/let 
> recursive statements can only be followed by `and` inl/let statements.") :: 
> s.errors} x'
>         | Ok _ -> move_temp s (fun s -> init s l)
>         | Error er -> recinl {s with errors = List.append 
> (show_block_parsing_error offset er) s.errors} x'
>     and rectype (s : BlockBundleStateInner) l = iter s l <| fun (offset,x,x') ->        match x with
>         | Ok (TopAnd(_, TopNominalRec _ & a)) -> rectype {s with tmp = 
> {offset=offset; block=a} :: s.tmp} x'
>         | Ok (TopAnd(r, _)) -> rectype {s with errors = (offset +. r, "`union 
> rec` can only be followed by `and union`.") :: s.errors} x'
>         | Ok _ -> move_temp s (fun s -> init s l)
>         | Error er -> rectype {s with errors = List.append 
> (show_block_parsing_error offset er) s.errors} x'
> 
>     init {empty with state=state} l.blocks
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### semantic_tokens
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let semantic_tokens (l : ParserState) = 
>     let rec loop s = function
>         | (_,x) :: xs -> x.block >>= fun x -> loop 
> (FSharpx.Collections.PersistentVector.append s x.semantic_tokens) xs
>         | [[]] -> Job.result s
>     loop FSharpx.Collections.PersistentVector.empty l.blocks
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## Infer
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### 'a ref'
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type [[<ReferenceEquality>]] 'a ref' = {mutable contents' : 'a}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### TT
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type TT =
>     | KindType
>     | KindFun of TT * TT
>     | KindMetavar of TT option ref'
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### Constraint
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Constraint =
>     | CUInt
>     | CSInt
>     | CInt
>     | CFloat
>     | CNumber
>     | CPrim
>     | CSymbol
>     | CRecord
>     | CPrototype of GlobalId
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### ConstraintOrModule
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type ConstraintOrModule = C of Constraint | M of Map<string,ConstraintOrModule>
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### Var
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type [[<ReferenceEquality>]] Var = {
>     scope : int
>     constraints : Constraint Set // Must be stated up front and needs to be 
> static in forall vars
>     kind : TT // Is not supposed to have metavars.
>     name : string // Is what gets printed.
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### MVar
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type [[<ReferenceEquality>]] MVar = {
>     mutable scope : int
>     mutable constraints : Constraint Set // Must be stated up front and needs to
> be static in forall vars
>     kind : TT // Has metavars, and so is mutable.
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### TM
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type TM =
>     | TMText of string
>     | TMVar of T
>     | TMLitVar of T
> and T =
>     | TyB
>     | TyLit of Literal
>     | TyPrim of PrimitiveType
>     | TySymbol of string
>     | TyPair of T * T
>     | TyRecord of Map<int * string, T>
>     | TyModule of Map<string, T>
>     | TyComment of Comments * T
>     | TyFun of T * T * FunType
>     | TyArray of T
>     | TyNominal of GlobalId
>     | TyUnion of Map<int * string,bool * T> * UnionLayout // The boolean arg 
> determines whether the union case is generalized.
>     | TyApply of T * T * TT // Regular type functions (TyInl) get reduced, while
> this represents the staged reduction of nominals.
>     | TyInl of Var * T
>     | TyForall of Var * T
>     | TyExists of Var list * T
>     | TyMetavar of MVar * T option ref
>     | TyVar of Var * T option ref
>     | TyMacro of TM list
>     | TyLayout of T * Layout
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### tyvar
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let tyvar x = TyVar(x, ref None)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### TypeError
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type TypeError =
>     | KindError of TT * TT
>     | KindErrorInConstraint of TT * TT
>     | ExpectedSymbolAsRecordKey of T
>     | ExpectedSymbolAsModuleKey of T
>     | UnboundVariable of string
>     | UnboundModule
>     | ModuleIndexFailedInOpen
>     | ModuleIndexWouldShadowLocalVars of string [[]]
>     | TermError of T * T
>     | TypeVarScopeError of string * T * T
>     | RecursiveMetavarsNotAllowed of T * T
>     | RecursiveTypevarsNotAllowed of T * T
>     | ForallVarConstraintError of string * Constraint Set * Constraint Set
>     | MetavarsNotAllowedInRecordWith
>     | ExpectedRecord of T
>     | ExpectedExistentialInTerm of T
>     | ExpectedExistentialInPattern of T
>     | UnexpectedNumberOfArgumentsInExistsPattern of got: int * expected: int
>     | UnexpectedNumberOfArgumentsInExistsBody of got: int * expected: int
>     | ExistsShouldntHaveMetavars of T list
>     | ExpectedRecordInsideALayout of T
>     | UnionsCannotBeApplied
>     | ExpectedNominalInApply of T
>     | MalformedNominal
>     | LayoutSetMustBeAnnotated
>     | ExpectedMutableLayout of T
>     | ExpectedRecordAsResultOfIndex of T
>     | RecordIndexFailed of string
>     | ModuleIndexFailed of string
>     | ExpectedModule of T
>     | ExpectedSymbol' of T
>     | ExpectedSymbolInRecordWith of T
>     | RealFunctionInTopDown
>     | ModuleMustBeImmediatelyApplied
>     | MissingRecordFieldsInPattern of T * string list
>     | CasePatternNotFoundForType of GlobalId * string
>     | CasePatternNotFound of string
>     | CannotInferCasePatternFromTermInEnv of T
>     | NominalInPatternUnbox of GlobalId
>     | TypeInEnvIsNotNominal of T
>     | UnionInPatternNominal of GlobalId
>     | ConstraintError of Constraint * T
>     | PrototypeConstraintCannotPropagateToMetavar of GlobalId * T
>     | PrototypeConstraintCannotPropagateToVar of GlobalId * T
>     | ExpectedAnnotation
>     | ExpectedSinglePattern
>     | RecursiveAnnotationHasMetavars of T
>     | ValueRestriction of T
>     | DuplicateRecInlName
>     | DuplicateKeyInRecUnion
>     | ExpectedConstraintInsteadOfModule
>     | InstanceNotFound of prototype: GlobalId * instance: GlobalId
>     | ExpectedPrototypeConstraint of Constraint
>     | ExpectedPrototypeInsteadOfModule
>     | ExpectedHigherOrder of T
>     | InstanceArityError of prototype_arity: int * instance_arity: int
>     | InstanceCoreVarsShouldMatchTheArityDifference of got: int * expected: int
>     | InstanceKindError of TT * TT
>     | KindNotAllowedInInstanceForall
>     | InstanceVarShouldNotMatchAnyOfPrototypes
>     | MissingBody
>     | MacroIsMissingAnnotation
>     | ArrayIsMissingAnnotation
>     | ExistsIsMissingAnnotation
>     | ShadowedForall
>     | ShadowedExists
>     | UnionTypesMustHaveTheSameLayout
>     | OrphanInstance
>     | ShadowedInstance
>     | UnusedTypeVariable of string list
>     | CompilerError of string
>     | IncorrectGADTConstructorType
>     | IncorrectRecursiveNominal
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### shorten'<'a>
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline shorten'<'a> (x : 'a) link next =
>     let x' : 'a = next x
>     if System.Object.ReferenceEquals(x,x') = false then link.contents' <- Some 
> x'
>     x'
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### visit_tt
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rec visit_tt = function
>     | KindMetavar({contents'=Some x} & link) -> shorten' x link visit_tt
>     | a -> a
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### shorten<'a>
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline shorten<'a> (x : 'a) (link : ref<option<'a>>) next =
>     let x' : 'a = next x
>     if System.Object.ReferenceEquals(x,x') = false then link.Value <- Some x'
>     x'
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### visit_t_mvar
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rec visit_t_mvar = function
>     | TyComment(_,a) -> visit_t_mvar a
>     | TyMetavar(_,{contents=Some x} & link) -> shorten x link visit_t_mvar
>     | a -> a
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### visit_t
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rec visit_t x = 
>     match visit_t_mvar x with
>     | TyVar(_,{contents=Some x}) -> visit_t x
>     | x -> x
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### InferTypeErrorException
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> exception InferTypeErrorException of (VSCRange * TypeError) list
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### metavars
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rec metavars = function
>     | RawTTypecase _ | RawTExists _ | RawTFilledNominal _ | RawTMacro _ | 
> RawTVar _ | RawTTerm _ 
>     | RawTPrim _ | RawTWildcard _ | RawTLit _ | RawTB _ | RawTSymbol _ -> 
> Set.empty
>     | RawTMetaVar(_,a) -> Set.singleton a
>     | RawTArray(_,a) | RawTLayout(_,a,_) | RawTForall(_,_,a) -> metavars a
>     | RawTPair(_,a,b) | RawTApply(_,a,b) | RawTFun(_,a,b,_) -> metavars a + 
> metavars b
>     | RawTUnion(_,l,_,this) -> Map.fold (fun s _ (_,v) -> s + metavars v) 
> (metavars this) l
>     | RawTRecord(_,l) -> Map.fold (fun s _ v -> s + metavars v) Set.empty l
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### TopEnv
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type TopEnv = {
>     nominals_next_tag : int
>     nominals_aux : Map<GlobalId, {|name : string; kind : TT|}>
>     nominals : Map<GlobalId, {|vars : Var list; body : T|}>
>     prototypes_next_tag : int
>     prototypes_instances : Map<GlobalId * GlobalId, Constraint Set list>
>     prototypes : Map<GlobalId, {|name : string; signature: T; kind : TT|}>
>     ty : Map<string,T>
>     term : Map<string,T>
>     constraints : Map<string,ConstraintOrModule>
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### top_env_emptyInfer
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let top_env_emptyInfer = {
>     nominals_next_tag = 0
>     nominals_aux = Map.empty
>     nominals = Map.empty
>     prototypes_next_tag = 0
>     prototypes_instances = Map.empty
>     prototypes = Map.empty
>     ty = Map.empty
>     term = Map.empty
>     constraints = Map.empty
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### unionInfer
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let unionInfer small big = {
>     nominals_next_tag = max small.nominals_next_tag big.nominals_next_tag
>     nominals_aux = Map.foldBack Map.add small.nominals_aux big.nominals_aux
>     nominals = Map.foldBack Map.add small.nominals big.nominals
>     prototypes_next_tag = max small.prototypes_next_tag big.prototypes_next_tag
>     prototypes_instances = Map.foldBack Map.add small.prototypes_instances 
> big.prototypes_instances
>     prototypes = Map.foldBack Map.add small.prototypes big.prototypes
>     ty =
>         Map.foldBack (fun k v s ->
>             let v =
>                 match v, s |> Map.tryFind k with
>                 | TyModule x, Some (TyModule x') -> Map.foldBack Map.add x x' |>
> TyModule
>                 | _ -> v
>             s |> Map.add k v
>         ) small.ty big.ty
>     term =
>         Map.foldBack (fun k v s ->
>             let v =
>                 match v, s |> Map.tryFind k with
>                 | TyModule x, Some (TyModule x') -> Map.foldBack Map.add x x' |>
> TyModule
>                 | _ -> v
>             s |> Map.add k v
>         ) small.term big.term
>     constraints =
>         Map.foldBack (fun k v s ->
>             let v =
>                 match v, s |> Map.tryFind k with
>                 | M x, Some (M x') -> Map.foldBack Map.add x x' |> M
>                 | _ -> v
>             s |> Map.add k v
>         ) small.constraints big.constraints
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### in_moduleInfer
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let in_moduleInfer m a : TopEnv =
>     {a with
>         ty = Map.add m (TyModule a.ty) Map.empty
>         term = Map.add m (TyModule a.term) Map.empty
>         constraints = Map.add m (M a.constraints) Map.empty
>         }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### Env_
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Env_ = { ty : Map<string,T>; term : Map<string,T>; constraints : 
> Map<string,ConstraintOrModule> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### InferEnv
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type InferEnv = Env_
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### kind_get
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let kind_get x =
>     let rec loop = function
>         | KindFun(a,b) -> a :: loop b
>         | a -> [[a]]
>     let l = loop x
>     {|arity=List.length l; args=l|}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### prototype_init_forall_kind
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let prototype_init_forall_kind = function
>     | TyForall(a,_) -> a.kind
>     | _ -> failwith "Compiler error: The prototype should have at least one 
> forall."
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### show_primt
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let show_primt = function
>     | UInt8T -> "u8"
>     | UInt16T -> "u16"
>     | UInt32T -> "u32"
>     | UInt64T -> "u64"
>     | Int8T -> "i8"
>     | Int16T -> "i16"
>     | Int32T -> "i32"
>     | Int64T -> "i64"
>     | Float32T -> "f32"
>     | Float64T -> "f64"
>     | BoolT -> "bool"
>     | StringT -> "string"
>     | CharT -> "char"
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### constraint_name
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rec constraint_name (env : TopEnv) = function
>     | CSInt -> "sint" | CUInt -> "uint" | CInt -> "int"
>     | CFloat -> "float" | CNumber -> "number" | CPrim -> "prim"
>     | CSymbol -> "symbol" | CRecord -> "record"
>     | CPrototype i -> env.prototypes.[[i]].name
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### constraint_kind
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let constraint_kind (env : TopEnv) = function
>     | CSInt | CUInt | CInt | CFloat | CNumber | CPrim | CSymbol | CRecord -> 
> KindType
>     | CPrototype i -> env.prototypes.[[i]].kind
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### tt
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rec tt (env : TopEnv) = function
>     | TyComment(_,x) | TyMetavar(_,{contents=Some x}) -> tt env x
>     | TyNominal i -> env.nominals_aux.[[i]].kind
>     | TyApply(_,_,x) | TyMetavar({kind=x},_) | TyVar({kind=x},_) -> x
>     | TyExists _ | TyLit _ | TyUnion _ | TyLayout _ | TyMacro _ | TyB | TyPrim _
> | TyForall _ | TyFun _ | TyRecord _ | TyModule _ | TyPair _ | TySymbol _ | 
> TyArray _ -> KindType
>     | TyInl(v,a) -> KindFun(v.kind,tt env a)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### has_metavars
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rec has_metavars x =
>     let f = has_metavars
>     match visit_t x with
>     | TyMetavar _ -> true
>     | TyVar _ | TyNominal _ | TyB | TyLit _ | TyPrim _ | TySymbol _ | TyModule _
> -> false
>     | TyExists(_,a) | TyComment(_,a) | TyLayout(a,_) | TyForall(_,a) | 
> TyInl(_,a) | TyArray a -> f a
>     | TyApply(a,b,_) | TyFun(a,b,_) | TyPair(a,b) -> f a || f b
>     | TyUnion(l,_) -> Map.exists (fun _ -> snd >> f) l
>     | TyRecord l -> Map.exists (fun _ -> f) l
>     | TyMacro a -> List.exists (function TMVar x -> has_metavars x | _ -> false)
> a
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### term_subst
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> // Eliminates the metavars in the type if possible.
> let term_subst a =
>     let h = System.Collections.Generic.HashSet(HashIdentity.Reference)
>     // 'a = 'b = ('c = int * 'd = float)
>     // visit_t shortens to:
>     // 'a = ('c = int * 'd = float)
>     // visit_t returns:
>     // ('c = int * 'd = float)
>     // term_subst returns:
>     // int * float
>     let inline g a f =
>         let _ = h.Add(a)
>         let x = f()
>         let _ = h.Remove(a)
>         x
>     let rec f a =
>         match visit_t a with
>         | TyMetavar _ | TyNominal _ | TyB | TyLit _ | TyPrim _ | TySymbol _ as x
> -> x
>         | TyVar(x,r) -> TyVar(x, if h.Contains x then ref None else r)
>         | TyComment(a,b) -> TyComment(a,f b)
>         | TyPair(a,b) -> TyPair(f a, f b)
>         | TyRecord a -> TyRecord(Map.map (fun _ -> f) a)
>         | TyModule a -> TyModule(Map.map (fun _ -> f) a)
>         | TyUnion(a,b) -> TyUnion(Map.map (fun _ (is_gadt, x) -> is_gadt, f x) 
> a,b)
>         | TyFun(a,b,t) -> TyFun(f a, f b, t)
>         | TyForall(a,b) -> g a <| fun () -> TyForall(a,f b)
>         | TyExists(a,b) -> TyExists(a,f b)
>         | TyArray a -> TyArray(f a)
>         | TyApply(a,b,c) -> TyApply(f a, f b, c)
>         | TyInl(a,b) -> g a <| fun () -> TyInl(a,f b)
>         | TyMacro a -> TyMacro(List.map (function TMVar x -> TMVar(f x) | x -> 
> x) a)
>         | TyLayout(a,b) -> TyLayout(f a,b)
>     f a
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### HoverTypes
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type HoverTypes() =
>     // This is to allocate less trash for code that doesn't use GADTs. 
>     // Unfortunately, we cannot use memoization instead as term_subst is not 
> functionally pure.
>     let rec has_substituted_tvars x = 
>         let f = has_substituted_tvars
>         match x with
>         | TyMetavar(_,{contents=Some _}) -> true
>         | TyVar (_, {contents=Some x}) | TyComment(_,x) -> f x
>         | TyVar _ | TyMetavar _ | TyNominal _ | TyB | TyLit _ | TyPrim _ | 
> TySymbol _ | TyModule _ -> false
>         | TyExists(_,a) | TyComment(_,a) | TyLayout(a,_) | TyForall(_,a) | 
> TyInl(_,a) | TyArray a -> f a
>         | TyApply(a,b,_) | TyFun(a,b,_) | TyPair(a,b) -> f a || f b
>         | TyUnion(l,_) -> Map.exists (fun _ -> snd >> f) l
>         | TyRecord l -> Map.exists (fun _ -> f) l
>         | TyMacro a -> List.exists (function TMVar x -> has_metavars x | _ -> 
> false) a
>     let hover_types = ResizeArray()
>     member _.AddHover((r : VSCRange),(x,(com : string))) =
>         hover_types.Add(r,((if has_substituted_tvars x then term_subst x else 
> x), com))
>     member _.ToArray() = hover_types.ToArray()
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### module_openInfer
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let module_openInfer (hover_types : HoverTypes option) (top_env : InferEnv) 
> (local_env_ty : Map<string,T>) (r : VSCRange) b l =
>     let tryFind env x =
>         match Map.tryFind x env.term, Map.tryFind x env.ty, Map.tryFind x 
> env.constraints with
>         | Some (TyModule a), Some (TyModule b), Some (M c) -> ValueSome {term=a;
> ty=b; constraints=c}
>         | _ -> ValueNone
>     match tryFind top_env b with
>     | ValueNone -> Result.Error(r, UnboundModule)
>     | ValueSome env ->
>         hover_types |> Option.iter (fun hover_types -> 
> hover_types.AddHover(r,(TyModule env.term,"")))
>         let rec loop env = function
>             | (r,x) :: x' ->
>                 match tryFind env x with
>                 | ValueSome env ->
>                     hover_types |> Option.iter (fun hover_types -> 
> hover_types.AddHover(r,(TyModule env.term,"")))
>                     loop env x'
>                 | _ -> Result.Error(r, ModuleIndexFailedInOpen)
>             | [[]] -> Result.Ok env
>         loop env l |> Result.bind (fun env ->
>             let h = ResizeArray()
>             local_env_ty |> Map.iter (fun k _ -> if env.ty.ContainsKey k then 
> h.Add k)
>             if h.Count > 0 then Result.Error(r, 
> ModuleIndexWouldShadowLocalVars(h.ToArray()))
>             else Result.Ok env
>             )
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### validate_bound_vars
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let validate_bound_vars (top_env : InferEnv) constraints term ty x =
>     let errors = ResizeArray()
>     let check_term term (a,b) = if Set.contains b term = false && 
> Map.containsKey b top_env.term = false then errors.Add(a,UnboundVariable b)
>     let check_ty ty (a,b) = if Set.contains b ty = false && Map.containsKey b 
> top_env.ty = false then errors.Add(a,UnboundVariable b)
>     let check_cons constraints (a,b) =
>         match Map.tryFind b constraints |> Option.orElseWith (fun () -> 
> Map.tryFind b top_env.constraints) with
>         | Some (C _) -> ()
>         | Some (M _) -> errors.Add(a,ExpectedConstraintInsteadOfModule)
>         | None -> errors.Add(a,UnboundVariable b)
>     let rec cterm constraints (term, ty) x =
>         match x with
>         | RawSymbol _ | RawDefaultLit _ | RawLit _ | RawB _ -> ()
>         | RawV(a,b,_) -> check_term term (a,b)
>         | RawType(_,x) -> ctype constraints term ty x
>         | RawMatch(_,body,l) -> cterm constraints (term, ty) body; List.iter 
> (fun (a,b) -> cterm constraints (cpattern constraints term ty a) b) l
>         | RawFun(_,l) -> List.iter (fun (a,b) -> cterm constraints (cpattern 
> constraints term ty a) b) l
>         | RawForall(_,((_,(a,_)),l),b) -> List.iter (check_cons constraints) l; 
> cterm constraints (term, Set.add a ty) b
>         | RawFilledForall _ -> failwith "Compiler error: Should not appear 
> during variable validation."
>         | RawRecBlock(_,l,on_succ) ->
>             let term = List.fold (fun s ((_,x),_) -> Set.add x s) term l
>             List.iter (fun (_,x) -> cterm constraints (term, ty) x) l
>             cterm constraints (term, ty) on_succ
>         | RawRecordWith(_,a,b,c) ->
>             List.iter (cterm constraints (term, ty)) a
>             List.iter (function
>                 | RawRecordWithSymbol(_,e) | RawRecordWithSymbolModify(_,e) -> 
> cterm constraints (term, ty) e
>                 | RawRecordWithInjectVar(v,e) | 
> RawRecordWithInjectVarModify(v,e) -> check_term term v; cterm constraints (term,
> ty) e
>                 ) b
>             List.iter (function RawRecordWithoutSymbol _ -> () | 
> RawRecordWithoutInjectVar (a,b) -> check_term term (a,b)) c
>         | RawOp(_,_,l) -> List.iter (cterm constraints (term, ty)) l
>         | RawReal(_,x) | RawJoinPoint(_,_,x,_) -> cterm constraints (term, ty) x
>         | RawExists(_,(_,a),b) -> Option.iter (List.iter (ctype constraints term
> ty)) a; cterm constraints (term, ty) b
>         | RawAnnot(_,RawMacro(_,a),b) -> cmacro constraints term ty a; ctype 
> constraints term ty b
>         | RawMacro(r,a) -> errors.Add(r,MacroIsMissingAnnotation); cmacro 
> constraints term ty a
>         | RawAnnot(_,RawArray(_,a),b) -> List.iter (cterm constraints (term, 
> ty)) a; ctype constraints term ty b
>         | RawArray(r,a) -> errors.Add(r,ArrayIsMissingAnnotation); List.iter 
> (cterm constraints (term, ty)) a
>         | RawAnnot(_,a,b) -> cterm constraints (term, ty) a; ctype constraints 
> term ty b
>         | RawTypecase(_,a,b) ->
>             ctype constraints term ty a
>             List.iter (fun (a,b) ->
>                 ctype constraints term ty a
>                 cterm constraints (term, ty + metavars a) b
>                 ) b
>         | RawOpen(_,(a,b),l,on_succ) ->
>             match module_openInfer None top_env Map.empty a b l with
>             | Result.Ok x ->
>                 let combine e m = Map.fold (fun s k _ -> Set.add k s) e m
>                 cterm (Map.foldBack Map.add x.constraints constraints) (combine 
> term x.term, combine ty x.ty) on_succ
>             | Result.Error e -> errors.Add(e)
>         | RawHeapMutableSet(_,a,b,c) -> cterm constraints (term, ty) a; 
> List.iter (cterm constraints (term, ty)) b; cterm constraints (term, ty) c
>         | RawSeq(_,a,b) | RawPair(_,a,b) | RawIfThen(_,a,b) | RawApply(_,a,b) ->
> cterm constraints (term, ty) a; cterm constraints (term, ty) b
>         | RawIfThenElse(_,a,b,c) -> cterm constraints (term, ty) a; cterm 
> constraints (term, ty) b; cterm constraints (term, ty) c
>         | RawMissingBody r -> errors.Add(r,MissingBody)
>     and cmacro constraints term ty a =
>         List.iter (function
>             | RawMacroText _ -> ()
>             | RawMacroTerm(r,a) -> cterm constraints (term, ty) a
>             | RawMacroType(r,a) | RawMacroTypeLit(r,a) -> ctype constraints term
> ty a
>             ) a
>     and ctype constraints term ty x =
>         match x with
>         | RawTFilledNominal(_,_) | RawTPrim _ | RawTWildcard _ | RawTLit _ | 
> RawTB _ | RawTSymbol _ | RawTMetaVar _ -> ()
>         | RawTTypecase(_,a,b) -> 
>             ctype constraints term ty a
>             List.iter (fun (a,b) -> 
>                 ctype constraints term ty a
>                 ctype constraints term (ty + metavars a) b
>                 ) b
>         | RawTVar(a,b) -> check_ty ty (a,b)
>         | RawTArray(_,a) | RawTLayout(_,a,_) -> ctype constraints term ty a
>         | RawTPair(_,a,b) | RawTApply(_,a,b) | RawTFun(_,a,b,_) -> ctype 
> constraints term ty a; ctype constraints term ty b
>         | RawTUnion(_,l,_,this) -> Map.iter (fun _ (_,x) -> ctype constraints 
> term ty x) l; ctype constraints term ty this
>         | RawTRecord(_,l) -> Map.iter (fun _ -> ctype constraints term ty) l
>         | RawTForall(_,((_,(a,_)),l),b) -> List.iter (check_cons constraints) l;
> ctype constraints term (Set.add a ty) b
>         | RawTExists(_,a,b) -> 
>             let ty =
>                 List.fold (fun ty ((_,(a,_)),l) ->
>                     List.iter (check_cons constraints) l
>                     Set.add a ty
>                     ) ty a
>             ctype constraints term ty b
>         | RawTTerm (_,a) -> cterm constraints (term, ty) a
>         | RawTMacro(_,a) -> cmacro constraints term ty a
>     and cpattern constraints term ty x =
>         //let is_first = System.Collections.Generic.HashSet()
>         let rec loop (term, ty) x = 
>             let f = loop (term, ty)
>             match x with
>             | PatDefaultValue _ | PatFilledDefaultValue _ | PatValue _ | 
> PatSymbol _ | PatB _ | PatE _ -> term, ty
>             | PatExists(_,a,b) ->
>                 let ty = List.fold (fun s (_,x) -> Set.add x s) ty a
>                 loop (term, ty) b
>             | PatVar(_,b) ->
>                 //if is_first.Add b then () // TODO: I am doing it like this so 
> I can reuse this code later for variable highlighting.
>                 Set.add b term, ty
>             | PatDyn(_,x) | PatUnbox(_,_,x) -> f x
>             | PatPair(_,a,b) -> loop (f a) b
>             | PatRecordMembers(_,l) ->
>                 List.fold (fun s -> function
>                     | PatRecordMembersSymbol(_,x) -> loop s x
>                     | PatRecordMembersInjectVar((a,b),x) -> check_term term 
> (a,b); loop s x
>                     ) (term, ty) l
>             | PatAnd(_,a,b) | PatOr(_,a,b) -> loop (loop (term, ty) a) b
>             | PatAnnot(_,a,b) -> ctype constraints term ty b; f a
>             | PatWhen(_,a,b) -> let r = f a in cterm constraints r b; r
>             | PatNominal(_,(r,a),_,b) -> check_ty ty (r,a); f b
>             | PatArray(_,a) -> List.fold loop (term, ty) a
>         loop (term, ty) x
> 
>     match x with
>     | Choice1Of2 x -> cterm constraints (term, ty) x
>     | Choice2Of2 x -> ctype constraints term ty x
>     errors
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### assert_bound_vars
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let assert_bound_vars (top_env : InferEnv) constraints term ty x =
>     let errors = validate_bound_vars top_env constraints term ty x
>     if 0 < errors.Count then raise (InferTypeErrorException (Seq.toList errors))
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### subst
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rec subst (m : (Var * T) list) x =
>     let f = subst m
>     if List.isEmpty m then x 
>     else 
>         match x with
>         | TyComment(_,x)
>         | TyMetavar(_,{contents=Some x}) 
>         | TyVar (_,{contents=Some x}) -> f x // Don't do path shortening here.
>         | TyMetavar _ | TyNominal _ | TyB | TyLit _ | TyPrim _ | TySymbol _ -> x
>         | TyPair(a,b) -> TyPair(f a, f b)
>         | TyRecord a -> TyRecord(Map.map (fun _ -> f) a)
>         | TyModule a -> TyModule(Map.map (fun _ -> f) a)
>         | TyUnion(a,b) -> TyUnion(Map.map (fun _ (is_gadt,body) -> is_gadt, f 
> body) a,b)
>         | TyFun(a,b,t) -> TyFun(f a, f b, t)
>         | TyArray a -> TyArray(f a)
>         | TyApply(a,b,c) -> TyApply(f a, f b, c)
>         | TyVar (a,_) -> List.tryPick (fun (v,x) -> if a = v then Some x else 
> None) m |> Option.defaultValue x
>         | TyForall(a,b) -> TyForall(a, f b)
>         | TyExists(a,b) -> TyExists(a, f b)
>         | TyInl(a,b) -> TyInl(a, f b)
>         | TyMacro a -> TyMacro(List.map (function TMVar x -> TMVar(f x) | x -> 
> x) a)
>         | TyLayout(a,b) -> TyLayout(f a,b)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### type_apply_split
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let type_apply_split x =
>     let rec loop s x =
>         match visit_t x with
>         | TyApply(a,b,_) -> loop (b :: s) a
>         | x -> x, s
>     loop [[]] x
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### kind_subst
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rec kind_subst = function
>     | KindMetavar ({contents'=Some x} & link) -> shorten' x link kind_subst
>     | KindMetavar _ | KindType as x -> x
>     | KindFun(a,b) -> KindFun(kind_subst a,kind_subst b)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### foralls_get
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rec foralls_get = function
>     | RawForall(_,a,b) -> let a', b = foralls_get b in a :: a', b
>     | b -> [[]], b
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### foralls_ty_get
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rec foralls_ty_get = function
>     | TyForall(a,b) -> let a', b = foralls_ty_get b in a :: a', b
>     | b -> [[]], b
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### kind_force
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rec kind_force = function
>     | KindMetavar ({contents'=Some x} & link) -> shorten' x link kind_force
>     | KindMetavar link -> let x = KindType in link.contents' <- Some x; x
>     | KindType as x -> x
>     | KindFun(a,b) -> KindFun(kind_force a,kind_force b)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### p
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let p prec prec' x =
>     if prec < prec' then x else sprintf "(%s)" x
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### show_kind
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let show_kind x =
>     let rec f prec x =
>         let p = p prec
>         match x with
>         | KindMetavar {contents'=Some x} -> f prec x
>         | KindMetavar _ -> "?"
>         | KindType -> "*"
>         | KindFun(a,b) -> p 20 (sprintf "%s -> %s" (f 20 a) (f 19 b))
>     f -1 x
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### show_constraints
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let show_constraints env x = Set.toList x |> List.map (constraint_name env) |> 
> String.concat "; " |> sprintf "{%s}"
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### show_nominal
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let show_nominal (env : TopEnv) i = match Map.tryFind i env.nominals_aux with 
> Some x -> x.name | None -> "?"
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### show_layout_type
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let show_layout_type = function Heap -> "heap" | HeapMutable -> "mut" | 
> StackMutable -> "stack_mut"
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### show_t
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let show_t (env : TopEnv) x =
>     let show_var (a : Var) =
>         let n = match a.kind with KindType -> a.name | _ -> sprintf "(%s : %s)" 
> a.name (show_kind a.kind)
>         if Set.isEmpty a.constraints then n
>         else sprintf "%s %s" n (show_constraints env a.constraints)
>     let rec f prec x =
>         let p = p prec
>         match x with
>         | TyVar (_, {contents=Some x}) | TyComment(_,x) | 
> TyMetavar(_,{contents=Some x}) -> f prec x
>         | TyMetavar _ -> "_"
>         | TyVar (a, _) -> a.name
>         | TyNominal i ->
>             match Map.tryFind i env.nominals_aux with
>             | Some x when prec < 0 -> sprintf "(%s : %s)" x.name (show_kind 
> x.kind)
>             | Some x -> x.name
>             | _ -> "?"
>         | TyB -> "()"
>         | TyLit x -> show_lit x
>         | TyPrim x -> show_primt x
>         | TySymbol x -> sprintf ".%s" x
>         | TyExists(a,b) -> 
>             let a = List.map show_var a |> String.concat " "
>             p 0 (sprintf "exists %s. %s" a (f -1 b))
>         | TyForall _ ->
>             let a, b =
>                 let rec loop = function
>                     | TyForall(a,b) -> let a',b = loop b in (a :: a'), b
>                     | b -> [[]], b
>                 loop x
>             let a = List.map show_var a |> String.concat " "
>             p 0 (sprintf "forall %s. %s" a (f -1 b))
>         | TyInl _ ->
>             let a, b =
>                 let rec loop = function
>                     | TyInl(a,b) -> let a',b = loop b in (a :: a'), b
>                     | b -> [[]], b
>                 loop x
>             let a = List.map show_var a |> String.concat " "
>             p 0 (sprintf "%s => %s" a (f -1 b))
>         | TyArray a -> p 30 (sprintf "array_base %s" (f 30 a))
>         | TyApply(a,b,_) -> p 30 (sprintf "%s %s" (f 29 a) (f 30 b))
>         | TyPair(a,b) -> p 25 (sprintf "%s * %s" (f 25 a) (f 24 b))
>         | TyFun(a,b,FT_Vanilla) -> p 20 (sprintf "%s -> %s" (f 20 a) (f 19 b))
>         | TyFun(a,b,FT_Pointer) -> p 20 (sprintf "fptr (%s -> %s)" (f 20 a) (f 
> 19 b))
>         | TyFun(a,b,FT_Closure) -> p 20 (sprintf "closure (%s -> %s)" (f 20 a) 
> (f 19 b))
>         | TyModule l ->
>             if prec = -2 then
>                 l |> Map.toList |> List.map (fun (k,v) ->
>                     let a,b = k, f -1 v
>                     match v with
>                     | TyComment(com,_) -> sprintf "%s : %s\n---\n%s\n---\n" a b 
> com
>                     | _ -> sprintf "%s : %s" a b
>                     )
>                 |> String.concat "\n"
>             else "module"
>         | TyRecord l -> sprintf "{%s}" (l |> Map.toList |> List.map (fun 
> ((_,k),v) -> sprintf "%s : %s" k (f -1 v)) |> String.concat "; ")
>         | TyUnion(l,_) -> sprintf "{%s}" (l |> Map.toList |> List.map (fun 
> ((_,k),(_,v)) -> sprintf "%s : %s" k (f -1 v)) |> String.concat "| ")
>         | TyMacro a -> p 30 (List.map (function TMLitVar a | TMVar a -> f -1 a |
> TMText a -> a) a |> String.concat "")
>         | TyLayout(a,b) -> p 30 (sprintf "%s %s" (show_layout_type b) (f 30 a))
> 
>     f -2 x
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### show_type_error
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let show_type_error (env : TopEnv) x =
>     let f = show_t env
>     match x with
>     | IncorrectRecursiveNominal -> "The non-recursive nominals should not use 
> their own type in the clause."
>     | IncorrectGADTConstructorType -> "The GADT case in the union has to result 
> in an instance of the union being constructed. Any type other than the self 
> being in the range of the union is not allowed."
>     | ExistsShouldntHaveMetavars a -> sprintf "The variables of the exists body 
> shouldn't have metavariables left over in them.\nGot: [[%s]]"  (List.map f a |> 
> String.concat ", ")
>     | ExpectedExistentialInPattern a -> sprintf "The variable being destructured
> in the pattern match need to be explicitly annotated and with an existential 
> type.\nGot: %s" (f a)
>     | UnexpectedNumberOfArgumentsInExistsPattern(got,exp) -> sprintf "The number
> of arguments in the existential pattern doesn't match the one in the type.\nGot:
> %i\nExpected: %i" got exp
>     | UnexpectedNumberOfArgumentsInExistsBody(got,exp) -> sprintf "The number of
> arguments in the existential body doesn't match the one in the type.\nGot: 
> %i\nExpected: %i" got exp
>     | ExpectedExistentialInTerm a -> sprintf "The body of `expects` need to be 
> explicitly annotated and with an existential type.\nGot: %s" (f a)
>     | UnionsCannotBeApplied -> "Unions cannot be applied."
>     | ExpectedNominalInApply a -> sprintf "Expected a nominal.\nGot: %s" (f a)
>     | MalformedNominal -> "Malformed nominal."
>     | ModuleMustBeImmediatelyApplied -> "Module must be immediately applied."
>     | ExpectedSymbol' a -> sprintf "Expected a symbol.\nGot: %s" (f a)
>     | KindError(a,b) -> sprintf "Kind unification failure.\nGot:      
> %s\nExpected: %s" (show_kind a) (show_kind b)
>     | KindErrorInConstraint(a,b) -> sprintf "Kind unification failure when 
> propagating them from constraints.\nGot:      %s\nExpected: %s" (show_kind a) 
> (show_kind b)
>     | TermError(a,b) -> sprintf "Unification failure.\nGot:      %s\nExpected: 
> %s" (f a) (f b)
>     | RecursiveMetavarsNotAllowed(a,b) -> sprintf "Recursive metavariables are 
> not allowed. A metavar cannot be unified with a type that has itself.\nGot:
> %s\nExpected: %s" (f a) (f b)
>     | RecursiveTypevarsNotAllowed(a,b) -> sprintf "Recursive type variables are 
> not allowed. A type variable cannot be unified with a type that has 
> itself.\nGot:      %s\nExpected: %s" (f a) (f b)
>     | ExpectedSymbolAsRecordKey a -> sprintf "Expected symbol as a record 
> key.\nGot: %s" (f a)
>     | ExpectedSymbolAsModuleKey a -> sprintf "Expected symbol as a module 
> key.\nGot: %s" (f a)
>     | UnboundVariable x -> sprintf "Unbound variable: %s." x
>     | UnboundModule -> sprintf "Unbound module."
>     | ModuleIndexFailedInOpen -> sprintf "Module does not have a submodule with 
> that key."
>     | ModuleIndexWouldShadowLocalVars [[|v|]] -> $"The module open would shadow 
> a local variable: {v}."
>     | ModuleIndexWouldShadowLocalVars vars -> let v = String.concat ", " vars in
> $"The module open would shadow the local variables: {v}."
>     | TypeVarScopeError(a,_,_) -> sprintf "Tried to unify the type variable %s 
> with a metavar outside its scope." a
>     | ForallVarConstraintError(n,a,b) -> sprintf "Metavariable's constraints 
> must be a subset of the forall var %s's.\nGot: %s\nExpected: %s" n 
> (show_constraints env a) (show_constraints env b)
>     | MetavarsNotAllowedInRecordWith -> sprintf "In the top-down segment the 
> record keys need to be fully known. Please add an annotation."
>     | LayoutSetMustBeAnnotated -> sprintf "The layout type being set must be 
> annotated."
>     | ExpectedMutableLayout a -> sprintf "Expected a mutable layout type.\nGot: 
> %s" (f a)
>     | ExpectedRecord a -> sprintf "Expected a record.\nGot: %s" (f a)
>     | ExpectedRecordInsideALayout a -> sprintf "Expected a record inside a 
> layout type.\nGot: %s" (f a)
>     | ExpectedRecordAsResultOfIndex a -> sprintf "Expected a record as result of
> index.\nGot: %s" (f a)
>     | RecordIndexFailed a -> sprintf "The record does not have the key: %s" a
>     | ModuleIndexFailed a -> sprintf "The module does not have the key: %s" a
>     | ExpectedModule a -> sprintf "Expected a module.\nGot: %s" (f a)
>     | ExpectedSymbolInRecordWith a -> sprintf "Expected a symbol.\nGot: %s" (f 
> a)
>     | RealFunctionInTopDown -> sprintf "Real segment functions are forbidden in 
> the top-down segment. They can only be used in `real` expressions or .spir 
> modules."
>     | MissingRecordFieldsInPattern(a,b) -> sprintf "The record is missing the 
> following fields: %s.\nGot: %s" (String.concat ", " b) (f a)
>     | CasePatternNotFoundForType(i,n) -> sprintf "%s does not have the %s case."
> (show_nominal env i) n
>     | CasePatternNotFound n -> sprintf "Cannot find a function with the same 
> name as the %s case in the environment." n
>     | CannotInferCasePatternFromTermInEnv a -> sprintf "Cannot infer the higher 
> order type that has this case from the following type.\nGot: %s" (f a)
>     | NominalInPatternUnbox i -> sprintf "Expected an union type, but %s is a 
> nominal." (show_nominal env i)
>     | TypeInEnvIsNotNominal a -> sprintf "Expected a nominal type.\nGot: %s" (f 
> a)
>     | UnionInPatternNominal i -> sprintf "Expected a nominal type, but %s is an 
> union." (show_nominal env i)
>     | ConstraintError(a,b) -> sprintf "Constraint satisfaction error.\nGot: 
> %s\nFails to satisfy: %s" (f b) (constraint_name env a)
>     | ExpectedAnnotation -> sprintf "Recursive functions with foralls must be 
> fully annotated."
>     | ExpectedSinglePattern -> sprintf "Recursive functions with foralls must 
> not have multiple clauses in their patterns."
>     | RecursiveAnnotationHasMetavars a -> sprintf "Recursive functions with 
> foralls must not have metavars.\nGot: %s" (f a)
>     | ValueRestriction a -> sprintf "Metavars that are not part of the enclosing
> function's signature are not allowed. They need to be values.\nGot: %s" (f a)
>     | DuplicateRecInlName -> "Shadowing of functions by the members of the same 
> mutually recursive block is not allowed."
>     | DuplicateKeyInRecUnion -> "Mutually recursive unions should not have 
> overlapping keys."
>     | ExpectedConstraintInsteadOfModule -> sprintf "Expected a constraint 
> instead of module."
>     | InstanceNotFound(prot,ins) -> sprintf "The higher order type instance %s 
> does not have the prototype %s." (show_nominal env ins) 
> env.prototypes.[[prot]].name
>     | ExpectedPrototypeConstraint a -> sprintf "Expected a prototype 
> constraint.\nGot: %s" (constraint_name env a)
>     | PrototypeConstraintCannotPropagateToMetavar(a,b) -> sprintf "Cannot 
> propagate the %s prototype constraint to the applied metavariable as the kinds 
> would not match. If this is not intended to be a type var, provide a type 
> annotation to a concrete type.\nGot: %s" env.prototypes.[[a]].name (f b)
>     | PrototypeConstraintCannotPropagateToVar(a,b) -> sprintf "Cannot propagate 
> the %s prototype constraint to the applied type variable as the kinds would not 
> match.\nGot: %s" env.prototypes.[[a]].name (f b)
>     | ExpectedPrototypeInsteadOfModule -> "Expected a prototype instead of 
> module."
>     | ExpectedHigherOrder a -> sprintf "Expected a higher order type.\nGot: %s" 
> (f a)
>     | InstanceArityError(prot,ins) -> sprintf "The arity of the instance must be
> greater or equal to that of the prototype.\nInstance arity:  %i\nPrototype 
> arity: %i" ins prot
>     | InstanceCoreVarsShouldMatchTheArityDifference(num_vars,expected) -> 
> sprintf "The number of forall variables in the instance needs to be specified so
> it equals the difference between the instance arity and the prototype 
> arity.\nInstance variables specified: %i\nExpected:                     %i" 
> num_vars expected
>     | InstanceKindError(a,b) -> sprintf "The kinds of the instance foralls are 
> incompatible with those of the prototype.\nGot:      %s\nExpected: %s" 
> (show_kind a) (show_kind b)
>     | KindNotAllowedInInstanceForall -> "Kinds should not be explicitly stated 
> in instance foralls."
>     | InstanceVarShouldNotMatchAnyOfPrototypes -> "Instance forall must not have
> the same name as any of the prototype foralls."
>     | MissingBody -> "The function body is missing."
>     | MacroIsMissingAnnotation -> "The macro needs an annotation."
>     | ArrayIsMissingAnnotation -> "The array needs an annotation."
>     | ExistsIsMissingAnnotation -> "The existential type needs an annotation."
>     | ShadowedForall -> "Shadowing of foralls is not allowed in the top-down 
> segment."
>     | ShadowedExists -> "Shadowing of existential type variables is not allowed 
> in the top-down segment."
>     | UnionTypesMustHaveTheSameLayout -> "The two union types must have the same
> layout."
>     | OrphanInstance -> "The instance has to be defined in the same package as 
> either the prototype or the nominal."
>     | ShadowedInstance -> "The instance cannot be defined twice."
>     | UnusedTypeVariable [[x]] -> sprintf "The type variable %s is unused in the
> function's type signature." x
>     | UnusedTypeVariable vars -> sprintf "The type variables %s are unused in 
> the function's type signature." (vars |> String.concat ", ")
>     | CompilerError x -> x
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### loc_env
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let loc_env (x : TopEnv) = {term=x.term; ty=x.ty; constraints=x.constraints}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### names_of
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let names_of vars = List.map (fun x -> x.name) vars |> Set
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### lit
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let lit = function
>     | LitUInt8 _ -> TyPrim UInt8T
>     | LitUInt16 _ -> TyPrim UInt16T
>     | LitUInt32 _ -> TyPrim UInt32T
>     | LitUInt64 _ -> TyPrim UInt64T
>     | LitInt8 _ -> TyPrim Int8T
>     | LitInt16 _ -> TyPrim Int16T
>     | LitInt32 _ -> TyPrim Int32T
>     | LitInt64 _ -> TyPrim Int64T
>     | LitFloat32 _ -> TyPrim Float32T
>     | LitFloat64 _ -> TyPrim Float64T
>     | LitBool _ -> TyPrim BoolT
>     | LitString _ -> TyPrim StringT
>     | LitChar _ -> TyPrim CharT
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### autogen_name_in_fun
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let autogen_name_in_fun (i : int) = let x = char i + 'a' in if 'z' < x then 
> sprintf "'%i" i else sprintf "'%c" x
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### autogen_name_in_typecase
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let autogen_name_in_typecase (i : int) = let x = char i + 'a' in if 'z' < x then
> sprintf "'t%i" i else sprintf "'t%c" x
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### trim_kind
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let trim_kind = function KindFun(_,k) -> k | _ -> failwith "impossible"
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### FilledTop
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> // Similar to BundleTop except with type annotations and type application filled
> in.
> type FilledTop =
>     | FType of VSCRange * RString * HoVar list * RawTExpr
>     | FNominal of VSCRange * RString * HoVar list * RawTExpr
>     | FNominalRec of (VSCRange * RString * HoVar list * RawTExpr) list
>     | FInl of VSCRange * RString * RawExpr
>     | FRecInl of (VSCRange * RString * RawExpr) list
>     | FPrototype of VSCRange * RString * RString * TypeVar list * RawTExpr
>     | FInstance of VSCRange * RGlobalId * RGlobalId * RawExpr
>     | FOpen of VSCRange * RString * RString list
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### 'a AdditionType
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type 'a AdditionType =
>     | AOpen of 'a
>     | AInclude of 'a
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### InferScope
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type InferScope = int
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### InferResult
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type [[<ReferenceEquality>]] InferResult = {
>     filled_top : FilledTop Hopac.Promise
>     top_env_additions : TopEnv AdditionType
>     offset : int
>     hovers : RString [[]]
>     errors : RString list
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### dispose_gadt_links
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let dispose_gadt_links gadt_links = Seq.iter (fun (x : ref<option<'a>>) -> 
> x.Value <- None) gadt_links
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### assert_foralls_used'
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let assert_foralls_used' (errors : (VSCRange * TypeError) ResizeArray) 
> outside_foralls r x =
>     let h = HashSet()
>     let rec f x =
>         match visit_t x with
>         | TyVar (v,_) -> Set.singleton v.name
>         | TyExists(v,a) ->
>             List.fold (fun a v -> 
>                 if Set.contains v.name a = false then h.Add(v.name) |> ignore; a
>                 else Set.remove v.name a
>                 ) (f a) v
>         | TyForall(v,a) ->
>             let a = f a
>             if Set.contains v.name a = false then h.Add(v.name) |> ignore; a
>             else Set.remove v.name a
>         | TyUnion _ | TyModule _ | TyMetavar _ | TyNominal _ | TyB | TyLit _ | 
> TyPrim _ | TySymbol _ -> Set.empty
>         | TyPair(a,b) | TyApply(a,b,_) | TyFun(a,b,_) -> f a + f b
>         | TyRecord a -> Map.fold (fun s _ x -> Set.union s (f x)) Set.empty a
>         | TyComment(_,a) | TyLayout(a,_) | TyInl(_,a) | TyArray a -> f a
>         | TyMacro a -> 
>             List.fold (fun s x ->
>                 match x with
>                 | TMLitVar a | TMVar a -> f a 
>                 | TMText _ -> Set.empty
>                 ) Set.empty a
>     let used_vars = f x
>     Seq.iter (h.Add >> ignore) (outside_foralls - used_vars)
>     if 0 < h.Count then
>         errors.Add(r, UnusedTypeVariable (Seq.toList h))
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### assert_foralls_used
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let assert_foralls_used errors r x = assert_foralls_used' errors Set.empty r x
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### validate_nominal
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let validate_nominal (errors : _ ResizeArray) global_id body v =
>     // Stack union types and regular nominals must not be recursive.
>     // Unlike in the previous version of Spiral which simply didn't put the 
> nominal type in the environment
>     // this one has to do it becaus the GADT constructors need access to it.
>     let rec assert_nominal_non_recursive v =
>         let f = assert_nominal_non_recursive
>         match visit_t v with
>         | TyNominal global_id' -> if global_id = global_id' then 
> errors.Add(range_of_texpr_gadt_body body, IncorrectRecursiveNominal)
>         | TyMetavar _ | TyVar _ | TyModule _ | TyUnion _ | TyB | TyLit _ | 
> TyPrim _ | TySymbol _ -> ()
>         | TyPair(a,b) | TyApply(a,b,_) | TyFun(a,b,_) -> f a; f b
>         | TyRecord a -> Map.iter (fun _ -> f) a
>         | TyExists(_,a) | TyComment(_,a) | TyLayout(a,_) | TyForall(_,a) | 
> TyInl(_,a) | TyArray a -> f a
>         | TyMacro a -> List.iter (function TMLitVar a | TMVar a -> f a | TMText 
> _ -> ()) a
>     match v with // Validates the union type.
>     | TyUnion(a,b) ->
>         a |> Map.iter (fun name (is_gadt, v) -> 
>             let body =
>                 match body with
>                 | RawTUnion(_,a,_,_) -> Map.find name a |> snd
>                 | _ -> failwith "Compiler error: Expected an union."
>             let is_stack = b = UStack
> 
>             // Makes sure that the GADT constructor is resulting in its own 
> type.
>             // Also make sure that it's not using an instance of itself in its 
> constructor other than in first position.
>             let rec assert_gadt_has_proper_specialized_constructor = function
>                 | TyNominal global_id' -> if global_id <> global_id' then 
> errors.Add(range_of_texpr_gadt_constructor body, IncorrectGADTConstructorType)
>                 | TyApply(a,b,_) -> 
>                     assert_gadt_has_proper_specialized_constructor a
>                     if is_stack then assert_nominal_non_recursive b
>                 | _ -> errors.Add(range_of_texpr_gadt_constructor body, 
> IncorrectGADTConstructorType)
> 
>             let assert_gadt_is_valid v =
>                 let rec find_gadt_constructor outside_foralls = function
>                     | TyForall(n,t) -> find_gadt_constructor (Set.add n.name 
> outside_foralls) t
>                     | TyFun(a,b,_) -> 
>                         if is_stack then assert_nominal_non_recursive a
>                         assert_gadt_has_proper_specialized_constructor b
>                         assert_foralls_used errors (range_of_texpr_gadt_body 
> body) a
>                         assert_foralls_used' errors outside_foralls 
> (range_of_texpr_gadt_constructor body) b
>                     | b ->
>                         assert_gadt_has_proper_specialized_constructor b
>                         assert_foralls_used' errors outside_foralls 
> (range_of_texpr_gadt_constructor body) b
>                         
>                 find_gadt_constructor Set.empty v
>                     
>             if is_gadt then assert_gadt_is_valid v
>             else
>                 if is_stack then assert_nominal_non_recursive v
>                 assert_foralls_used errors (range_of_texpr body) v // We need to
> assert that the foralls in regular union bodies are checked.
>             )
>     | _ ->
>         assert_nominal_non_recursive v
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### kind_to_rawkind
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rec kind_to_rawkind (x : TT) : RawKindExpr =
>     match visit_tt x with
>     | KindMetavar _ | KindType -> RawKindStar
>     | KindFun(a,b) -> RawKindFun(kind_to_rawkind a, kind_to_rawkind b)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### var_to_hovar
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let var_to_hovar r (x : Var) : HoVar = r,(x.name,kind_to_rawkind x.kind)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### var_to_typevar
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let var_to_typevar r (x : Var) : TypeVar = var_to_hovar r x, [[]] // In the 
> bottom up segment the constrains aren't checked anywhere so we'll put an empty 
> list here.
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### infer
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let infer package_id module_id (top_env' : TopEnv) expr =
>     let at_tag i = {package_id=package_id; module_id=module_id; tag=i}
>     let mutable top_env = top_env' // Is mutated only in two places at the top 
> level. During actual inference can otherwise be thought of as immutable.
>     let errors = ResizeArray()
>     let generalized_statements = Dictionary(HashIdentity.Reference)
>     let type_apply_args = Dictionary(HashIdentity.Reference)
>     let module_type_apply_args = Dictionary(HashIdentity.Reference)
>     let annotations = Dictionary<obj,_>(HashIdentity.Reference)
>     let exists_vars = Dictionary<obj,_>(HashIdentity.Reference)
>     let gadt_typecases = Dictionary<obj,_>(HashIdentity.Reference)
>     let mutable autogened_forallvar_count_in_typecase = 0
>     let mutable autogened_forallvar_count_in_funs = 0
>     let hover_types = HoverTypes()
> 
>     /// Fills in the type applies and annotations, and generalizes statements. 
> Also strips annotations from terms and patterns.
>     /// Dealing with recursive statement type applies requires some special 
> consideration.
>     let fill r rec_term expr =
>         assert (0 = errors.Count)
>         let t_to_rawtexpr r vars_to_metavars expr =
>             let rec f x =
>                 match visit_t x with
>                 | TyUnion _ | TyMetavar _  | TyInl _  | TyModule _ as x -> 
> failwithf "Compiler error: These cases should not appear in fill.\nGot: %A" x
>                 | TyForall(a,b) -> RawTForall(r,var_to_typevar r a,f b)
>                 | TyComment(_,x) -> f x
>                 | TyB -> RawTB r
>                 | TyLit x -> RawTLit(r,x)
>                 | TyPrim x -> RawTPrim(r,x)
>                 | TySymbol x -> RawTSymbol(r,x)
>                 | TyPair(a,b) -> RawTPair(r,f a,f b)
>                 | TyRecord l -> RawTRecord(r,Map.map (fun _ -> f) l)
>                 | TyFun(a,b,t) -> RawTFun(r,f a,f b,t)
>                 | TyExists(a,b) -> RawTExists(r,a |> List.map (fun n -> 
> (r,(n.name,RawKindWildcard)),[[]]), f b)
>                 | TyArray a -> RawTArray(r,f a)
>                 | TyNominal i -> RawTFilledNominal(r,i)
>                 | TyApply(a,b,_) -> RawTApply(r,f a,f b)
>                 | TyVar (a,_) -> 
>                     let is_typecase_metavar = List.tryFind (function TyVar(b,_) 
> -> a = b | _ -> failwith "Compiler error: Expected a TyVar.") vars_to_metavars 
> |> Option.isSome
>                     if is_typecase_metavar then RawTMetaVar(r,a.name) else 
> RawTVar(r,a.name)
>                 | TyMacro l -> l |> List.map (function TMText x -> 
> RawMacroText(r,x) | TMVar x -> RawMacroType(r,f x) | TMLitVar x -> 
> RawMacroTypeLit(r,f x)) |> fun l -> RawTMacro(r,l)
>                 | TyLayout(a,b) -> RawTLayout(r,f a,b)
>             f expr
>         let annot r x = t_to_rawtexpr r [[]] (snd annotations.[[x]])
>         let rec fill_typecases rec_term x =
>             match gadt_typecases.TryGetValue(x) with
>             | true, typecase_data ->
>                 Seq.foldBack (fun 
> (typecase_cond,forall_vars,typecase_constructor) typecase_body ->
>                     let r = range_of_expr typecase_body
>                     RawTypecase(r, t_to_rawtexpr r [[]] typecase_cond, 
> [[t_to_rawtexpr r forall_vars typecase_constructor, typecase_body]])
>                     ) typecase_data (term rec_term x)
>             | _ ->
>                 term rec_term x
>         and fill_foralls r rec_term body = 
>             let _,body = foralls_get body
>             let l,_ = foralls_ty_get generalized_statements.[[body]]
>             List.foldBack (fun (x : Var) s -> RawFilledForall(r,x.name,s)) l 
> (term rec_term body)
>         and term rec_term x =
>             let f = term rec_term
>             let clauses l = 
>                 List.map (fun (a, b) -> 
>                     let rec_term,a = pattern rec_term a 
>                     a,fill_typecases rec_term b
>                     ) l
>             match x with
>             | RawFilledForall _ | RawMissingBody _ | RawType _ as x -> failwithf
> "Compiler error: These cases should not appear in fill. It is intended to be 
> called on top level statements only.\nGot: %A" x
>             | RawTypecase _
>             | RawSymbol _ | RawB _ | RawLit _ | RawOp _ -> x
>             | RawReal(_,x) -> x
>             | RawV(r,n,false) -> x
>             | RawV(r,n,true) ->
>                 match type_apply_args.TryGetValue(n) with
>                 | true, type_apply_args ->
>                     match Map.tryFind n rec_term with
>                     | None -> fst type_apply_args
>                     | Some t -> t |> snd type_apply_args
>                     |> List.fold (fun s x -> 
> RawApply(r,s,RawType(r,t_to_rawtexpr r [[]] x))) x
>                 | _ -> x
>             | RawDefaultLit(r,_) -> RawAnnot(r,x,annot r x)
>             | RawForall(r,a,b) -> RawForall(r,a,f b)
>             | RawMatch(r'',(RawForall _ | RawFun _) & body,[[PatVar(r,name), 
> on_succ]]) ->
>                 let _,body = foralls_get body
>                 RawMatch(r'',fill_foralls r rec_term body,[[PatVar(r,name), 
> fill_typecases (Map.remove name rec_term) on_succ]])
>             | RawMatch(r,a,b) -> RawMatch(r,f a,clauses b)
>             | RawFun(r,a) -> RawAnnot(r,RawFun(r,clauses a),annot r x)
>             | RawExists(r,(r',a),b) -> RawExists(r,(r',Some(Option.defaultWith 
> (fun () -> List.map (t_to_rawtexpr r [[]]) exists_vars.[[x]]) a)),f b)
>             | RawRecBlock(r,l,on_succ) ->
>                 let has_foralls = List.exists (function (_,RawForall _) -> true 
> | _ -> false) l
>                 if has_foralls then RawRecBlock(r,List.map (fun (a,b) -> a, f b)
> l,f on_succ)
>                 else
>                     let rec_term = List.fold (fun s ((_,name),b) -> Map.add name
> generalized_statements.[[foralls_get b |> snd]] s) rec_term l
>                     let l = List.map (fun (a,b) -> a, fill_foralls (fst a) 
> rec_term b) l
>                     RawRecBlock(r,l,f on_succ)
>             | RawRecordWith(r,a,b,c) ->
>                 let b = b |> List.map (function
>                     | RawRecordWithSymbol(a,b) -> RawRecordWithSymbol(a,f b)
>                     | RawRecordWithSymbolModify(a,b) -> 
> RawRecordWithSymbolModify(a,f b)
>                     | RawRecordWithInjectVar(a,b) -> RawRecordWithInjectVar(a,f 
> b)
>                     | RawRecordWithInjectVarModify(a,b) -> 
> RawRecordWithInjectVarModify(a,f b)
>                     )
>                 RawRecordWith(r,List.map f a,b,c)
>             | RawJoinPoint(r,q,a,b) -> RawAnnot(r,RawJoinPoint(r,q,f a,b),annot 
> r x)
>             | RawAnnot(r,a,_) -> f a
>             | RawOpen(r,a,b,c) ->
>                 let f = function TyModule s -> s | _ -> failwith "Compiler 
> error: Module open should always succeed in fill."
>                 List.fold (fun s x -> (f s).[[snd x]]) top_env.term.[[snd a]] b 
> |> f
>                 |> Map.fold (fun s k _ -> Map.remove k s) rec_term
>                 |> fun rec_term -> RawOpen(r,a,b,term rec_term c)
>             | RawApply(r,a,b) ->
>                 let q = RawApply(r,f a,f b)
>                 match module_type_apply_args.TryGetValue(x) with
>                 | true, typevars -> List.fold (fun a b -> 
> RawApply(r,a,RawType(r,t_to_rawtexpr r [[]] b))) q typevars
>                 | _ -> q
>             | RawIfThenElse(r,a,b,c) -> RawIfThenElse(r,f a,f b,f c)
>             | RawIfThen(r,a,b) -> RawIfThen(r,f a,f b)
>             | RawPair(r,a,b) -> RawPair(r,f a,f b)
>             | RawSeq(r,a,b) -> RawSeq(r,f a,f b)
>             | RawHeapMutableSet(r,a,b,c) -> RawHeapMutableSet(r,f a,List.map f 
> b,f c)
>             | RawMacro(r,l) ->
>                 let l = l |> List.map (function RawMacroTerm(r,x) -> 
> RawMacroTerm(r,f x) | x -> x )
>                 RawAnnot(r,RawMacro(r,l),annot r x)
>             | RawArray(r,a) -> RawAnnot(r,RawArray(r,List.map f a),annot r x)
>         and pattern rec_term x' =
>             let mutable rec_term = rec_term
>             let rec f = function
>                 | PatFilledDefaultValue _ -> failwith "Compiler error: 
> PatDefaultValueFilled should not appear in fill."
>                 | PatValue _ | PatSymbol _ | PatE _ | PatB _ as x -> x
>                 | PatVar(r,name) as x -> rec_term <- Map.remove name rec_term; x
>                 | PatDyn(r,a) -> PatDyn(r,f a)
>                 | PatUnbox(r,q,a) -> PatUnbox(r,q,f a)
>                 | PatExists(r,q,a) -> PatExists(r,q,f a)
>                 | PatAnnot(_,a,_) -> f a
>                 | PatPair(r,a,b) -> PatPair(r,f a,f b)
>                 | PatRecordMembers(r,a) ->
>                     let a = a |> List.map (function
>                         | PatRecordMembersSymbol(a,b) -> 
> PatRecordMembersSymbol(a,f b)
>                         | PatRecordMembersInjectVar(a,b) -> 
> PatRecordMembersInjectVar(a,f b)
>                         )
>                     PatRecordMembers(r,a)
>                 | PatOr(r,a,b) -> PatOr(r,f a,f b)
>                 | PatAnd(r,a,b) -> PatAnd(r,f a,f b)
>                 | PatDefaultValue(r,a) as x -> PatFilledDefaultValue(r,a,annot r
> x)
>                 | PatWhen(r,a,b) -> PatWhen(r,f a,term rec_term b)
>                 | PatNominal(r,a,b,c) -> PatNominal(r,a,b,f c)
>                 | PatArray(r,a) -> PatArray(r,List.map f a)
>             rec_term, f x'
> 
>         let x = fill_foralls r rec_term expr
>         assert (0 = errors.Count)
>         x
> 
>     let fresh_kind () = KindMetavar {contents'=None}
>     let fresh_var'' x = TyMetavar (x, ref None)
>     let fresh_var' scope kind = fresh_var'' {scope=scope; constraints=Set.empty;
> kind=kind}
>     let fresh_subst_var scope cons kind = fresh_var'' {scope=scope; 
> constraints=cons; kind=kind}
>     let forall_subst_all scope x =
>         let rec loop m x =
>             match visit_t x with
>             | TyForall(a,b) ->
>                 let v = fresh_subst_var scope a.constraints a.kind
>                 let type_apply_args,b = loop ((a, v) :: m) b
>                 v :: type_apply_args, b
>             | x -> [[]], subst m x
>         loop [[]] x
> 
>     let exists_subst_term scope (l : Var list, body) =
>         let vars = l |> List.map (fun a -> fresh_subst_var scope a.constraints 
> a.kind)
>         vars, subst (List.zip l vars) body
> 
>     let assert_exists_hasnt_metavars r vars =
>         if List.exists has_metavars vars then errors.Add(r, 
> ExistsShouldntHaveMetavars vars)
> 
>     let generalize r scope (forall_vars : Var list) (body : T) =
>         let h = HashSet(HashIdentity.Reference)
>         List.iter (h.Add >> ignore) forall_vars
>         let generalized_metavars = ResizeArray()
>         let rec replace_metavars x =
>             let f = replace_metavars
>             match x with
>             | TyVar (_,{contents=Some x})
>             | TyMetavar(_,{contents=Some x}) -> f x
>             | TyMetavar(x, link) when scope = x.scope ->
>                 let v = tyvar {scope=x.scope; constraints=x.constraints; 
> kind=kind_force x.kind; name=autogen_name_in_fun 
> autogened_forallvar_count_in_funs}
>                 autogened_forallvar_count_in_funs <- 
> autogened_forallvar_count_in_funs+1
>                 link.Value <- Some v
>                 replace_metavars v
>             // This scheme with the HashSet is so generalize works for mutually 
> recursive statements.
>             | TyVar (v,_) -> if scope = v.scope && h.Add(v) then 
> generalized_metavars.Add(v)
>             | TyMetavar _ | TyNominal _ | TyB | TyLit _ | TyPrim _ | TySymbol _ 
> -> ()
>             | TyPair(a,b) | TyApply(a,b,_) | TyFun(a,b,_) -> f a; f b
>             | TyUnion(a,_) -> Map.iter (fun _ -> snd >> f) a
>             | TyRecord a -> Map.iter (fun _ -> f) a
>             | TyExists(v,a) -> List.iter (h.Add >> ignore) v; f a
>             | TyForall(v,a) -> (h.Add >> ignore) v; f a
>             | TyComment(_,a) | TyLayout(a,_) | TyArray a -> f a
>             | TyMacro a -> List.iter (function TMLitVar a | TMVar a -> f a | 
> TMText _ -> ()) a
>             | TyModule _ | TyInl _ -> ()
> 
>         let f x s = TyForall(x,s)
>         replace_metavars body
>         let x = Seq.foldBack f generalized_metavars body |> List.foldBack f 
> forall_vars |> term_subst
>         if List.isEmpty forall_vars = false then assert_foralls_used errors r x
>         x
> 
>     let gadt_extract scope (v : T) =
>         let forall_subst_all_gadt x =
>             let rec loop m x = 
>                 match visit_t x with
>                 | TyForall(a,b) ->
>                     let v = tyvar {a with name=autogen_name_in_typecase 
> autogened_forallvar_count_in_typecase; scope=scope}
>                     autogened_forallvar_count_in_typecase <- 
> autogened_forallvar_count_in_typecase+1
>                     let type_apply_args,b = loop ((a, v) :: m) b
>                     v :: type_apply_args, b
>                 | x -> [[]], subst m x
>             loop [[]] x
>         let forall_vars,v = forall_subst_all_gadt v
>         match v with
>         | TyFun(a,b,_) -> forall_vars,a,b
>         | b -> forall_vars,TyB,b
> 
>     let inline unify_kind' er r got expected =
>         let rec loop (a'',b'') =
>             match visit_tt a'', visit_tt b'' with
>             | KindType, KindType -> ()
>             | KindFun(a,a'), KindFun(b,b') -> loop (a,b); loop (a',b')
>             | KindMetavar a, KindMetavar b & b' -> if a <> b then a.contents' <-
> Some b'
>             | KindMetavar link, b | b, KindMetavar link -> link.contents' <- 
> Some b
>             | _ -> raise (InferTypeErrorException [[r, er (got, expected)]])
>         loop (got, expected)
>     let unify_kind r got expected = try unify_kind' KindError r got expected 
> with :? InferTypeErrorException as e -> errors.AddRange e.Data0
>     let unify_gadt (gadt_links : T option ref ResizeArray option) (r : VSCRange)
> (got : T) (expected : T) : unit =
>         let unify_kind got expected = unify_kind' KindError r got expected
>         let er () = raise (InferTypeErrorException [[r, TermError(got, 
> expected)]])
> 
>         let rec constraint_process (con : Constraint Set) b =
>             let unify_kind got expected = unify_kind' KindErrorInConstraint r 
> got expected
>             let body = function
>                 | CUInt, TyPrim (UInt8T | UInt16T | UInt32T | UInt64T)
>                 | CSInt, TyPrim (Int8T | Int16T | Int32T | Int64T)
>                 | CInt, TyPrim (UInt8T | UInt16T | UInt32T | UInt64T | Int8T | 
> Int16T | Int32T | Int64T)
>                 | CFloat, TyPrim (Float32T | Float64T)
>                 | CNumber, TyPrim (UInt8T | UInt16T | UInt32T | UInt64T | Int8T 
> | Int16T | Int32T | Int64T | Float32T | Float64T)
>                 | CPrim, TyPrim _
>                 | CSymbol, TySymbol _
>                 | CRecord, TyRecord _ -> [[]]
>                 | con, TyMetavar(x,_) -> x.constraints <- Set.add con 
> x.constraints; [[]]
>                 | CPrototype prot & con, x ->
>                     match type_apply_split x with
>                     | TyNominal ins, x' ->
>                         match Map.tryFind (prot,ins) 
> top_env.prototypes_instances with
>                         | Some cons ->
>                             try List.fold2 (fun ers con x -> List.append 
> (constraint_process con (visit_t x)) ers) [[]] cons x'
>                             with :? System.ArgumentException -> [[]] // This 
> case can occur due when kind application overflows in a previous expression.
>                         | None -> [[InstanceNotFound(prot,ins)]]
>                     | TyMetavar _ & x, _ -> 
> [[PrototypeConstraintCannotPropagateToMetavar(prot,x)]]
>                     | TyVar _ & x, _ -> 
> [[PrototypeConstraintCannotPropagateToVar(prot,x)]]
>                     | _ -> [[ConstraintError(con,x)]]
>                 | con, x -> [[ConstraintError(con,x)]]
> 
>             match b with
>             | TyVar (_,{contents=Some x}) -> constraint_process con x
>             | TyVar (b,_) -> if con.IsSubsetOf b.constraints = false then 
> [[ForallVarConstraintError(b.name,con,b.constraints)]] else [[]]
>             | b ->
>                 let b_kind = tt top_env b
>                 Set.fold (fun ers con ->
>                     unify_kind b_kind (constraint_kind top_env con)
>                     List.append (body (con,b)) ers
>                     ) [[]] con
> 
>         // Does occurs checking for recursive metavariables.
>         // Does scope checking in forall vars.
>         let validate_mvar_unification i x =
>             let nested_tvars = HashSet(HashIdentity.Reference)
>             let rec f x =
>                 match visit_t x with
>                 | TyModule _ | TyNominal _ | TyB | TyLit _ | TyPrim _ | TySymbol
> _ -> ()
>                 | TyMacro a -> a |> List.iter (function TMText _ -> () | 
> TMLitVar a | TMVar a -> f a)
>                 | TyForall(v,a) | TyInl(v,a) ->
>                     let _ = nested_tvars.Add(v)
>                     f a
>                     let _ = nested_tvars.Remove(v)
>                     ()
>                 | TyExists(v,a) ->
>                     v |> List.iter (nested_tvars.Add >> ignore)
>                     f a
>                     v |> List.iter (nested_tvars.Remove >> ignore)
>                 | TyComment(_,a) | TyArray a -> f a
>                 | TyApply(a,b,_) | TyFun(a,b,_) | TyPair(a,b) -> f a; f b
>                 | TyUnion(l,_) -> Map.iter (fun _ -> snd >> f) l
>                 | TyRecord l -> Map.iter (fun _ -> f) l
>                 | TyVar(b,_) -> if nested_tvars.Contains b = false && i.scope < 
> b.scope then raise (InferTypeErrorException 
> [[r,TypeVarScopeError(b.name,got,expected)]])
>                 | TyMetavar(x,_) -> if i = x then raise (InferTypeErrorException
> [[r,RecursiveMetavarsNotAllowed(got,expected)]]) elif i.scope < x.scope then 
> x.scope <- i.scope
>                 | TyLayout(a,_) -> f a
>             f x
> 
>         // Does occurs checking for recursive type variables.
>         let rec validate_tvar_unification i x =
>             let f = validate_tvar_unification i
>             match visit_t x with
>             | TyMetavar _ | TyModule _ | TyNominal _ | TyB | TyLit _ | TyPrim _ 
> | TySymbol _ -> ()
>             | TyMacro a -> a |> List.iter (function TMText _ -> () | TMLitVar a 
> | TMVar a -> f a)
>             | TyExists(_,a) | TyComment(_,a) | TyForall(_,a) | TyInl(_,a) | 
> TyArray a -> f a
>             | TyApply(a,b,_) | TyFun(a,b,_) | TyPair(a,b) -> f a; f b
>             | TyUnion(l,_) -> Map.iter (fun _ -> snd >> f) l
>             | TyRecord l -> Map.iter (fun _ -> f) l
>             | TyVar(x,_) -> if i = x then raise (InferTypeErrorException 
> [[r,RecursiveTypevarsNotAllowed(got,expected)]])
>             | TyLayout(a,_) -> f a
> 
>         let rec loop (a'',b'') = 
>             match visit_t a'', visit_t b'' with
>             | TyComment(_,a), b | a, TyComment(_,b) -> loop (a,b)
>             | TyMetavar(a,link), TyMetavar(b,_) & b' ->
>                 if a <> b then
>                     unify_kind a.kind b.kind
>                     b.scope <- min a.scope b.scope
>                     b.constraints <- a.constraints + b.constraints
>                     link.Value <- Some b'
>             | TyMetavar(a,link), b | b, TyMetavar(a,link) ->
>                 validate_mvar_unification a b
>                 unify_kind a.kind (tt top_env b)
>                 match constraint_process a.constraints b with
>                 | [[]] -> link.Value <- Some b
>                 | constraint_errors -> raise (InferTypeErrorException (List.map 
> (fun x -> r,x) constraint_errors))
>             | TyVar (a,_), TyVar (b,_) when a = b -> ()
>             | TyVar (a,link), b | b, TyVar (a,link) when gadt_links.IsSome ->
>                 validate_tvar_unification a b
>                 unify_kind a.kind (tt top_env b)
>                 match constraint_process a.constraints b with
>                 | [[]] -> link.Value <- Some b; gadt_links.Value.Add(link)
>                 | constraint_errors -> raise (InferTypeErrorException (List.map 
> (fun x -> r,x) constraint_errors))
>             | TyFun(a,a',ta), TyFun(b,b',tb) when ta = tb -> loop (a,b); loop 
> (a',b')
>             | TyPair(a,a'), TyPair(b,b') -> loop (a,b); loop (a',b')
>             | TyApply(a,a',_), TyApply(b,b',_) -> loop (a',b'); loop (a,b)
>             | TyUnion(l,q), TyUnion(l',q') -> 
>                 if q = q' then
>                     let a,b = Map.toArray l, Map.toArray l'
>                     if a.Length <> b.Length then er ()
>                     else Array.iter2 (fun (ka,a) (kb,b) -> if ka = kb && fst a =
> fst b then loop (snd a,snd b) else er()) a b
>                 else raise (InferTypeErrorException 
> [[r,UnionTypesMustHaveTheSameLayout]])
>             | TyRecord l, TyRecord l' -> 
>                 let a,b = Map.toArray l, Map.toArray l'
>                 if a.Length <> b.Length then er ()
>                 else
>                     let a = a |> Array.sortBy (fun ((_,k),_) -> k)
>                     let b = b |> Array.sortBy (fun ((_,k),_) -> k)
>                     Array.iter2 (fun (ka,a) (kb,b) ->
>                         if (ka |> snd) = (kb |> snd)
>                         then loop (a,b)
>                         else er()
>                     ) a b
>             | TyNominal i, TyNominal i' when i = i' -> ()
>             | TyB, TyB -> ()
>             | TyPrim x, TyPrim x' when x = x' -> ()
>             | TyLit a, TyLit b when a = b -> ()
>             | TySymbol x, TySymbol x' when x = x' -> ()
>             | TyArray a, TyArray b -> loop (a,b)
>             // Note: Unifying these 3 only makes sense if the `expected` is 
> fully inferred already.
>             | TyExists(a,b), TyExists(a',b') when 
>                     List.length a = List.length a'
>                     && List.forall2 (fun (a : Var) (a' : Var) -> a.kind = 
> a'.kind && a.constraints = a'.constraints) a a' -> 
>                 loop (b, subst (List.map2 (fun a a' -> a', tyvar a) a a') b')
>             | TyForall(a,b), TyForall(a',b') 
>             | TyInl(a,b), TyInl(a',b') when a.kind = a'.kind && a.constraints = 
> a'.constraints -> loop (b, subst [[a',tyvar a]] b')
>             | TyMacro a, TyMacro b ->
>                 List.iter2 (fun a b ->
>                     match a,b with
>                     | TMText a, TMText b when System.Object.ReferenceEquals(a,b)
> || a = b -> ()
>                     | TMVar a, TMVar b -> loop(a,b)
>                     | _ -> er ()
>                     ) a b
>             | TyLayout(a,a'), TyLayout(b,b') when a' = b' -> loop (a,b)
>             | _ -> er ()
> 
>         try loop (got, expected)
>         with :? InferTypeErrorException as e -> errors.AddRange e.Data0
> 
>     let unify range got expected = unify_gadt None range got expected
> 
>     let apply_record r s l x =
>         match visit_t x with
>         | TySymbol x ->
>             match l |> Map.tryPick (fun (_, k) v -> if k = x then Some v else 
> None) with
>             | Some x ->
>                 let com = match x with TyComment(com,_) -> com | _ -> ""
>                 unify r s x
>                 hover_types.AddHover (r,(x,com))
>             | None -> errors.Add(r,RecordIndexFailed x)
>         | x -> errors.Add(r,ExpectedSymbolAsRecordKey x)
> 
>     let assert_bound_vars env a =
>         let keys_of m = Map.fold (fun s k _ -> Set.add k s) Set.empty m
>         validate_bound_vars (loc_env top_env) env.constraints (keys_of env.term)
> (keys_of env.ty) (Choice1Of2 a) |> errors.AddRange
> 
>     let fresh_var scope = fresh_var' scope KindType
> 
>     let v_cons env a = Map.tryFind a env |> Option.orElseWith (fun () -> 
> Map.tryFind a top_env.constraints)
>     let v env top_env a = Map.tryFind a env |> Option.orElseWith (fun () -> 
> Map.tryFind a top_env)
>     let v_term env a = v env.term top_env.term a |> Option.map (function 
> TyComment(com,x) -> com, visit_t x | x -> "", visit_t x)
>     let v_ty env a = v env.ty top_env.ty a
> 
>     let typevar_to_var scope cons (((_,(name,kind)),constraints) : TypeVar) : 
> Var =
>         let rec typevar = function
>             | RawKindWildcard -> fresh_kind()
>             | RawKindStar -> KindType
>             | RawKindFun(a,b) -> KindFun(typevar a, typevar b)
>         let kind = typevar kind
>         let cons =
>             constraints |> List.choose (fun (r,x) ->
>                 match v_cons cons x with
>                 | Some (M _) -> errors.Add(r,ExpectedConstraintInsteadOfModule);
> None
>                 | Some (C x) -> unify_kind r kind (constraint_kind top_env x); 
> Some x
>                 | None -> errors.Add(r,UnboundVariable x); None
>                 ) |> Set.ofList
> 
>         {scope=scope; constraints=cons; kind=kind_force kind; name=name}
> 
>     let typevars scope env (l : TypeVar list) =
>         List.mapFold (fun s x ->
>             let v = typevar_to_var scope env.constraints x
>             v, Map.add v.name (tyvar v) s
>             ) env.ty l
> 
>     let rec term scope env s x = term' scope false env s x
>     and term' scope is_in_left_apply (env : InferEnv) s x =
>         let f = term scope env
>         let f' x = let v = fresh_var scope in f v x; visit_t v
>         let f'' x = let v = fresh_var scope in term' scope true env v x; visit_t
> v
>         let inline rawv (r,name,is_tvar_applied) =
>             match v_term env name with
>             | None -> errors.Add(r,UnboundVariable name)
>             | Some (_,TySymbol "<real>") -> errors.Add(r,RealFunctionInTopDown)
>             | Some (com,TyModule _ & m) when is_in_left_apply = false ->
>                 hover_types.AddHover(r,(m,com))
>                 errors.Add(r,ModuleMustBeImmediatelyApplied)
>             | Some (com,a) ->
>                 if is_tvar_applied then
>                     match a with TyForall _ -> annotations.Add(x,(r,s)) | _ -> 
> ()
>                     let f a = let l,v = forall_subst_all scope a in unify r s v;
> l
>                     let l = f a
>                     hover_types.AddHover(r,(s,com))
>                     type_apply_args.Add(name,(l,f))
>                 else
>                     unify r s a
>                     hover_types.AddHover(r,(s,com))
>         let match_clause (q,w) (a,b) =
>             let gadt_links, gadt_typecases', (scope, env) = pattern scope env q 
> a
>             term scope env w b
>             dispose_gadt_links gadt_links
>             gadt_typecases.Add(b,gadt_typecases')
>         match x with
>         | RawB r -> unify r s TyB
>         | RawV(r,a,is_tvar_applied) -> rawv (r,a,is_tvar_applied)
>         | RawDefaultLit(r,_) -> unify r s (fresh_subst_var scope (Set.singleton 
> CNumber) KindType); hover_types.AddHover(r,(s,"")); annotations.Add(x,(r,s))
>         | RawLit(r,a) -> unify r s (lit a)
>         | RawSymbol(r,x) -> unify r s (TySymbol x)
>         | RawIfThenElse(_,cond,tr,fl) -> f (TyPrim BoolT) cond; f s tr; f s fl
>         | RawIfThen(r,cond,tr) -> f (TyPrim BoolT) cond; unify r s TyB; f TyB tr
>         | RawPair(r,a,b) ->
>             let q,w = fresh_var scope, fresh_var scope
>             unify r s (TyPair(q, w))
>             f q a; f w b
>         | RawSeq(_,a,b) -> f TyB a; f s b
>         | RawReal(_,a) -> assert_bound_vars env a
>         | RawOp(_,_,l) -> List.iter (assert_bound_vars env) l
>         | RawJoinPoint(r,None,a,_) -> annotations.Add(x,(r,s)); f s a
>         | RawJoinPoint(r,Some _,a,_) ->
>             unify r s (TyPair(TyPrim Int32T, TySymbol "tuple_of_free_vars"))
>             let s = fresh_var scope
>             annotations.Add(x,(r,s))
>             f s a
>         | RawApply(r,a',b) ->
>             let rec loop = function
>                 | TyNominal _ | TyApply _ as a ->
>                     match type_apply_split a with
>                     | TyNominal i, l ->
>                         let n = top_env.nominals.[[i]]
>                         match n.body with
>                         | TyUnion _ -> errors.Add(r,UnionsCannotBeApplied)
>                         | _ ->
>                             match list_try_zip n.vars l with
>                             | Some l -> loop (subst l n.body)
>                             | None -> errors.Add(r,MalformedNominal)
>                     | _ -> errors.Add(r,ExpectedNominalInApply a)
>                 | TyLayout(a,_) ->
>                     match visit_t a with
>                     | TyRecord l -> apply_record r s l (f' b)
>                     | a -> errors.Add(r,ExpectedRecordInsideALayout a)
>                 | TyRecord l -> apply_record r s l (f' b)
>                 | TyModule l ->
>                     match f' b with
>                     | TySymbol n ->
>                         match Map.tryFind n l with
>                         | Some (TyModule _ as a) ->
>                             if is_in_left_apply then 
>                                 match b with RawSymbol(r,_) -> 
> hover_types.AddHover(r,(a,"")) | _ -> ()
>                                 unify r s a
>                             else errors.Add(r,ModuleMustBeImmediatelyApplied)
>                         | Some a' ->
>                             let typevars,a = forall_subst_all scope a'
>                             if List.isEmpty typevars = false then
>                                 annotations.Add(x,(r,s))
>                                 module_type_apply_args.Add(x,typevars)
>                             unify r s a
>                             match b with 
>                             | RawSymbol(r,_) -> 
>                                 let com = match a' with TyComment(com,_) -> com 
> | _ -> ""
>                                 hover_types.AddHover(r,(a,com))
>                             | _ -> ()
>                         | None -> errors.Add(r,ModuleIndexFailed n)
>                     | b -> errors.Add(r,ExpectedSymbolAsModuleKey b)
>                 | TyFun(domain,range,_) -> unify (range_of_expr a') range s; f 
> domain b
>                 | a -> let v = fresh_var scope in unify (range_of_expr a') a 
> (TyFun(v,s,FT_Vanilla)); f v b
>             loop (f'' a')
>         | RawAnnot(r,a,b) ->  ty_init scope env s b; f s a
>         | RawOpen(_,(r,a),l,on_succ) ->
>             match module_openInfer (Some hover_types) (loc_env top_env) env.ty r
> a l with
>             | Result.Ok x ->
>                 let combine big small = Map.foldBack Map.add small big
>                 term scope {term = combine env.term x.term; ty = combine env.ty 
> x.ty; constraints = combine env.constraints x.constraints} s on_succ
>             | Result.Error e -> errors.Add(e)
>         | RawRecordWith(r,l,withs,withouts) ->
>             let i = errors.Count
>             let withouts,fields =
>                 List.foldBack (fun x (l,s as state) ->
>                     match x with
>                     | RawRecordWithoutSymbol(r,a) -> {|range=r; symbol = a|} :: 
> l, Set.add a s
>                     | RawRecordWithoutInjectVar(r,a) ->
>                         match v_term env a with
>                         | Some (com, TySymbol a & x) -> 
> hover_types.AddHover(r,(x,com)); {|range=r; symbol = a|} :: l, Set.add a s
>                         | Some (_,x) -> errors.Add(r, ExpectedSymbolAsRecordKey 
> x); state
>                         | None -> errors.Add(r, UnboundVariable a); state
>                     ) withouts ([[]],Set.empty)
>             let withs,_ =
>                 List.foldBack (fun x (l,s as state) ->
>                     let with_symbol ((r,a),b) = {|range=r; symbol = a; 
> is_blocked=Set.contains a s; is_modify=false; var=fresh_var scope; body=b|} :: 
> l, Set.add a s
>                     let with_symbol_modify ((r,a),b) = {|range=r; symbol = a; 
> is_blocked=Set.contains a s; is_modify=true; var=TyFun(fresh_var scope,fresh_var
> scope,FT_Vanilla); body=b|} :: l, Set.add a s
>                     let inline with_inject next ((r,a),b) =
>                         match v_term env a with
>                         | Some (com, TySymbol a & x) -> 
> hover_types.AddHover(r,(x,com)); next ((r,a),b)
>                         | Some (_, x) -> errors.Add(r, ExpectedSymbolAsRecordKey
> x); f' b |> ignore; state
>                         | None -> errors.Add(r, UnboundVariable a); f' b |> 
> ignore; state
>                     match x with
>                     | RawRecordWithSymbol(a,b) -> with_symbol (a,b)
>                     | RawRecordWithSymbolModify(a,b) -> with_symbol_modify (a,b)
>                     | RawRecordWithInjectVar(a,b) -> with_inject with_symbol 
> (a,b)
>                     | RawRecordWithInjectVarModify(a,b) -> with_inject 
> with_symbol_modify (a,b)
>                     ) withs ([[]],fields)
> 
>             let eval m =
>                 let m = (m,withs) ||> List.fold (fun m x ->
>                     if x.is_modify then
>                         let i, q =
>                             match m |> Map.tryPick (fun (i, k) v -> if k = 
> x.symbol then Some (i, v) else None) with
>                             | Some q -> q
>                             | None -> errors.Add(x.range,RecordIndexFailed 
> x.symbol); m.Count, fresh_var scope
>                         let w = fresh_var scope
>                         unify x.range (TyFun(q,w,FT_Vanilla)) x.var
>                         f x.var x.body
>                         Map.add (i, x.symbol) w m
>                     else
>                         f x.var x.body
>                         let i =
>                             m
>                             |> Map.tryPick (fun (i, k) v -> if k = x.symbol then
> Some i else None)
>                             |> Option.defaultValue m.Count
>                         Map.add (i, x.symbol) x.var m
>                     )
>                 withouts |> List.fold (fun m x -> m |> Map.filter (fun (_, k) _ 
> -> k <> x.symbol)) m
> 
>             let bind s = withs |> List.iter (fun x ->
>                 if x.is_blocked = false then
>                     if x.is_modify then
>                         s
>                         |> Map.tryPick (fun (i, k') v -> if k' = x.symbol then 
> Some (i, v) else None)
>                         |> Option.iter (fun (_, k) -> unify x.range x.var 
> (TyFun(fresh_var scope,k,FT_Vanilla)))
>                     else
>                         s
>                         |> Map.tryPick (fun (i, k') v -> if k' = x.symbol then 
> Some (i, v) else None)
>                         |> Option.iter (fun (_, k) -> k |> unify x.range x.var)
>                 )
> 
>             let rec tail' m = function
>                 | x :: xs ->
>                     match f' x with
>                     | TySymbol k ->
>                         match m |> Map.tryPick (fun (i, k') v -> if k' = k then 
> Some (i, v) else None) with
>                         | Some (i, m) ->
>                             match visit_t m with
>                             | TyRecord m -> tail' m xs
>                             | m -> errors.Add(range_of_expr x, 
> ExpectedRecordAsResultOfIndex m); eval Map.empty
>                         | _ -> errors.Add(range_of_expr x, RecordIndexFailed k);
> eval Map.empty
>                         |> fun v ->
>                             let i = m |> Map.tryPick (fun (i, k') v -> if k' = k
> then Some (i, v) else None)
>                             match i with
>                             | Some (i, _) -> Map.add (i, k) (TyRecord v) m
>                             | None -> Map.add (m.Count, k) (TyRecord v) m
>                     | TyMetavar _ -> errors.Add(range_of_expr x, 
> MetavarsNotAllowedInRecordWith); eval Map.empty
>                     | a -> errors.Add(range_of_expr x, 
> ExpectedSymbolInRecordWith a); eval Map.empty
>                 | [[]] -> eval m
> 
>             let rec tail (m,s) = function
>                 | x :: xs ->
>                     match f' x with
>                     | TySymbol k ->
>                         match
>                             m |> Map.tryPick (fun (i, k') v -> if k' = k then 
> Some (i, v) else None),
>                             s |> Map.tryPick (fun (i, k') v -> if k' = k then 
> Some (i, v) else None)
>                         with
>                         | Some (i,m), Some (_i',s) ->
>                             match visit_t m, visit_t s with
>                             | TyRecord m, TyRecord s -> i, tail (m,s) xs
>                             | TyRecord m, _ -> i, tail' m xs
>                             | m, _ -> errors.Add(range_of_expr x, 
> ExpectedRecordAsResultOfIndex m); i, eval Map.empty
>                         | Some (i,m), None ->
>                             match visit_t m with
>                             | TyRecord m -> i, tail' m xs
>                             | m -> errors.Add(range_of_expr x, 
> ExpectedRecordAsResultOfIndex m); i, eval Map.empty
>                         | _ -> errors.Add(range_of_expr x, RecordIndexFailed k);
> i, eval Map.empty
>                         |> fun (i,v) -> Map.add (i,k) (TyRecord v) m
>                     | TyMetavar _ -> errors.Add(range_of_expr x, 
> MetavarsNotAllowedInRecordWith); eval Map.empty
>                     | a -> errors.Add(range_of_expr x, 
> ExpectedSymbolInRecordWith a); eval Map.empty
>                 | [[]] -> bind s; eval m
> 
>             match l with
>             | [[]] ->
>                 match visit_t s with TyRecord s -> bind s | _ -> ()
>                 eval Map.empty
>             | m :: l ->
>                 match f' m, visit_t s with
>                 | TyRecord m, TyRecord s -> tail (m,s) l
>                 | TyRecord m, _ -> tail' m l
>                 | TyMetavar _, _ -> errors.Add(range_of_expr x, 
> MetavarsNotAllowedInRecordWith); eval Map.empty
>                 | a,_ -> errors.Add(range_of_expr x, ExpectedRecord a); eval 
> Map.empty
>             |> fun v -> if errors.Count = i then unify r (TyRecord v) s
>         | RawExists(r,(r',l),body) ->
>             match visit_t s with
>             | TyExists(type_vars,type_body) ->
>                 let vars, s = exists_subst_term scope (type_vars,type_body)
>                 l |> Option.iter (fun l ->
>                     let l1,l2 = vars.Length, l.Length
>                     if l1 = l2 then List.iter2 (ty_init scope env) vars l
>                     else errors.Add(r', 
> UnexpectedNumberOfArgumentsInExistsBody(l1,l2))
>                     )
>                 term scope env s body
>                 assert_exists_hasnt_metavars (range_of_expr x) vars
>                 exists_vars.Add(x,vars)
>             | s -> errors.Add(r, ExpectedExistentialInTerm s); f (fresh_var 
> scope) body
>         | RawFun(r,l) ->
>             annotations.Add(x,(r,s))
>             let q,w = fresh_var scope, fresh_var scope
>             unify r s (TyFun(q,w,FT_Vanilla))
>             List.iter (match_clause (q,w)) l
>         | RawForall _ -> failwith "Compiler error: Should be handled in let 
> statements."
>         | RawMatch(_,(RawForall _ | RawFun _) & body,[[PatVar(r,name), 
> on_succ]]) -> term scope (inl scope env ((r, name), body)) s on_succ
>         | RawRecBlock(_,l',on_succ) -> term scope (rec_block scope env l') s 
> on_succ
>         | RawMatch(_,body,l) ->
>             let body_var = fresh_var scope
>             f body_var body
>             List.iter (match_clause (body_var,s)) l
>         | RawMissingBody r -> errors.Add(r,MissingBody)
>         | RawMacro(r,a) ->
>             annotations.Add(x,(r,s))
>             List.iter (function
>                 | RawMacroText _ -> ()
>                 | RawMacroTerm(_,a) -> term scope env (fresh_var scope) a
>                 | RawMacroType(_,a) | RawMacroTypeLit(_,a) -> ty_init scope env 
> (fresh_var scope) a
>                 ) a
>         | RawHeapMutableSet(r,a,b,c) ->
>             unify r s TyB
>             try let v = fresh_var scope
>                 let i = errors.Count
>                 f v a
>                 match visit_t v with
>                 | TyMetavar _ -> raise (InferTypeErrorException [[r, 
> LayoutSetMustBeAnnotated]])
>                 | TyLayout(v,lay) ->
>                     match lay with
>                     | HeapMutable | StackMutable ->
>                         if i <> errors.Count then raise (InferTypeErrorException
> [[]])
>                         let b = List.map (fun x -> range_of_expr x, f' x) b
>                         List.fold (fun (r,a') (r',b') ->
>                             match visit_t a' with
>                             | TyRecord a ->
>                                 match b' with
>                                 | TySymbol b ->
>                                     match a |> Map.tryPick (fun (_, k) v -> if k
> = b then Some v else None) with
>                                     | Some x -> r', x
>                                     | _ -> raise (InferTypeErrorException [[r, 
> RecordIndexFailed b]])
>                                 | b -> raise (InferTypeErrorException [[r', 
> ExpectedSymbol' b]])
>                             | a -> raise (InferTypeErrorException [[r, 
> ExpectedRecord a]])
>                             ) (range_of_expr a, v) b |> snd
>                     | Heap -> raise (InferTypeErrorException [[r, 
> ExpectedMutableLayout v]])
>                 | v -> raise (InferTypeErrorException [[r, ExpectedMutableLayout
> v]])
>             with :? InferTypeErrorException as e -> errors.AddRange e.Data0; 
> fresh_var scope
>             |> fun v -> f v c
>         | RawArray(r,a) ->
>             annotations.Add(x,(r,s))
>             let v = fresh_var scope
>             unify r s (TyArray v)
>             List.iter (f v) a
>         | RawFilledForall _ -> failwith "Compiler error: Should not manifest 
> during type inference."
>         | RawType _ -> failwith "Compiler error: RawType should not appear in 
> the top down segment."
>         | RawTypecase _ -> failwith "Compiler error: `typecase` should not 
> appear in the top down segment."
>     and inl scope env ((r, name), body) =
>         let scope = scope + 1
>         let vars,body = foralls_get body
>         vars |> List.iter (fun ((r,(name,_)),_) -> if Map.containsKey name 
> env.ty then errors.Add(r,ShadowedForall))
>         let vars,env_ty = typevars scope env vars
>         let body_var = fresh_var scope
>         term scope {env with ty = env_ty} body_var body
>         let t = generalize r scope vars body_var
>         generalized_statements.Add(body,t)
>         hover_types.AddHover(r,(t,""))
>         {env with term = Map.add name t env.term }
>     and rec_block scope env l' =
>         let rec term_annotations scope env x =
>             let f t = 
>                 let i = errors.Count
>                 let v = fresh_var scope
>                 ty_init scope env v t
>                 if i = errors.Count && has_metavars v then 
> errors.Add(range_of_texpr t, RecursiveAnnotationHasMetavars v)
>                 v
>             match x with
>             | RawFun(_,[[(PatAnnot(_,_,t) | PatDyn(_,PatAnnot(_,_,t))),body]]) 
> -> TyFun(f t, term_annotations scope env body,FT_Vanilla)
>             | RawFun(_,[[pat,body]]) -> errors.Add(range_of_pattern pat, 
> ExpectedAnnotation); TyFun(fresh_var scope, term_annotations scope env 
> body,FT_Vanilla)
>             | RawFun(r,_) -> errors.Add(r, ExpectedSinglePattern); 
> TyFun(fresh_var scope, fresh_var scope, FT_Vanilla)
>             | RawJoinPoint(_,_,RawAnnot(_,_,t),_) | RawAnnot(_,_,t) -> f t
>             | x -> errors.Add(range_of_expr x,ExpectedAnnotation); fresh_var 
> scope
>         let scope = scope + 1
>         let has_foralls = List.exists (function (_,RawForall _) -> true | _ -> 
> false) l'
>         let l,m =
>             if has_foralls then
>                 List.mapFold (fun s ((r,name),body) ->
>                     let vars,body = foralls_get body
>                     vars |> List.iter (fun x -> if Map.containsKey (typevar_name
> x) env.ty then errors.Add(range_of_typevar x,ShadowedForall))
>                     let vars, env_ty = typevars scope env vars
>                     let body_var = term_annotations scope {env with ty = env_ty}
> body
>                     let term env = term scope {env with ty = env_ty} body_var 
> body
>                     let gen env : InferEnv =
>                         let t = generalize r scope vars body_var
>                         generalized_statements.Add(body,t)
>                         hover_types.AddHover(r,(t,""))
>                         {env with term = Map.add name t env.term}
>                     let ty = List.foldBack (fun x s -> TyForall(x,s)) vars 
> body_var |> term_subst
>                     (term, gen), Map.add name ty s
>                     ) env.term l'
>             else
>                 List.mapFold (fun s ((r,name),body) ->
>                     let body_var = fresh_var scope
>                     let term env = term scope env body_var body
>                     let gen env : InferEnv =
>                         let t = generalize r scope [[]] body_var
>                         generalized_statements.Add(body,t)
>                         hover_types.AddHover(r,(t,""))
>                         {env with term = Map.add name t env.term}
>                     (term, gen), Map.add name body_var s
>                     ) env.term l'
>         let _ =
>             let env = {env with term = m}
>             List.iter (fun (term, _) -> term env) l
>         List.fold (fun env (_, gen) -> gen env) env l
>     and ty_init scope env s x = 
>         ty scope env s x
>         assert_foralls_used errors (range_of_texpr x) s
>     and ty scope env s x = ty' scope false env s x
>     and ty' scope is_in_left_apply (env : InferEnv) s x =
>         let f s x = ty scope env s x
>         match x with
>         | RawTTypecase _ -> failwith "Compiler error: Type level typecase should
> not appear in the top down segment."
>         | RawTWildcard r -> hover_types.AddHover(r,(s,""))
>         | RawTArray(r,a) ->
>             let v = fresh_var scope
>             unify r s (TyArray v)
>             f v a
>         | RawTVar(r,x) ->
>             match v_ty env x with
>             | Some (TyModule _ & m) when is_in_left_apply = false -> 
> hover_types.AddHover(r,(m,"")); errors.Add(r,ModuleMustBeImmediatelyApplied)
>             | Some x -> unify r s x; hover_types.AddHover(r,(x,""))
>             | None -> errors.Add(r, UnboundVariable x)
>         | RawTB r -> unify r s TyB
>         | RawTLit(r,x) -> unify r s (TyLit x)
>         | RawTSymbol(r,x) -> unify r s (TySymbol x)
>         | RawTPrim(r,x) -> unify r s (TyPrim x)
>         | RawTPair(r,a,b) ->
>             let q,w = fresh_var scope, fresh_var scope
>             unify r s (TyPair(q,w))
>             f q a; f w b
>         | RawTFun(r,a,b,t) ->
>             let q,w = fresh_var scope, fresh_var scope
>             unify r s (TyFun(q,w,t))
>             f q a; f w b
>         | RawTRecord(r,l) ->
>             let l' = Map.map (fun _ _ -> fresh_var scope) l
>             unify r s (TyRecord l')
>             Map.iter (fun k s -> f s l.[[k]]) l'
>         | RawTUnion(r,l,lay,_) ->
>             let l' = Map.map (fun _ (is_gadt,_) -> is_gadt, fresh_var scope) l
>             unify r s (TyUnion(l',lay))
>             Map.iter (fun k (is_gadt,s) -> let x = snd l.[[k]] in if is_gadt 
> then ty scope {env with ty = Map.empty} s x else f s x) l'
>         | RawTExists(r,a,b) ->
>             let a = List.map (typevar_to_var scope env.constraints) a
>             let body_var = fresh_var scope
>             ty scope {env with ty = List.fold (fun s a -> Map.add a.name (tyvar 
> a) s) env.ty a} body_var b
>             unify r s (TyExists(a, body_var))
>         | RawTForall(r,a,b) ->
>             let a = typevar_to_var scope env.constraints a
>             let body_var = fresh_var scope
>             ty scope {env with ty = Map.add a.name (tyvar a) env.ty} body_var b
>             unify r s (TyForall(a, body_var))
>         | RawTApply(r,a',b) ->
>             let f' b k x = let v = fresh_var' scope k in ty' scope b env v x; 
> visit_t v
>             match f' true (fresh_kind ()) a' with
>             | TyModule l ->
>                 match f' false KindType b with
>                 | TySymbol x ->
>                     match Map.tryFind x l with
>                     | Some (TyModule _ as a) ->
>                         if is_in_left_apply then 
>                             unify r s a
>                             match b with RawTSymbol(r,_) -> 
> hover_types.AddHover(r,(a,"")) | _ -> ()
>                         else errors.Add(r,ModuleMustBeImmediatelyApplied)
>                     | Some a -> 
>                         unify r s a
>                         match b with
>                         | RawTSymbol(r,_) ->
>                             let com = match a with TyComment(com,_) -> com | _ 
> -> ""
>                             hover_types.AddHover(r,(a,com))
>                         | _ -> ()
>                     | None -> errors.Add(r,ModuleIndexFailed x)
>                 | b -> errors.Add(r,ExpectedSymbolAsRecordKey b)
>             | TyInl(a,body) -> let v = fresh_var' scope a.kind in f v b; unify r
> s (subst [[a,v]] body)
>             | a ->
>                 let q,w = fresh_kind(), fresh_kind()
>                 unify_kind (range_of_texpr a') (tt top_env a) (KindFun(q,w))
>                 let x = fresh_var' scope q
>                 f x b
>                 unify r s (TyApply(a,x,w))
>         | RawTTerm(r,a) -> assert_bound_vars env a; unify r s (TySymbol 
> "<term>")
>         | RawTMacro(r,a) ->
>             List.map (function
>                 | RawMacroText(_,a) -> TMText a
>                 | RawMacroTerm _ -> failwith "Compiler error: Term vars should 
> never appear at the type level."
>                 | RawMacroType(r,a) | RawMacroTypeLit(r,a) -> let v = fresh_var 
> scope in f v a; TMVar v
>                 ) a
>             |> TyMacro |> unify r s
>         | RawTLayout(r,a,b) ->
>             let v = fresh_var scope
>             unify r s (TyLayout(v,b))
>             f v a
>         | RawTFilledNominal _ -> failwith "Compiler error: RawTNominal should be
> filled in by the inferencer."
>         | RawTMetaVar _ -> failwith "Compiler error: This particular metavar is 
> only for typecase's clauses. This happens during the bottom-up segment."
>     and pattern (scope : InferScope) (env : InferEnv) s a : T option ref 
> ResizeArray * (T * T list * T) ResizeArray * (InferScope * InferEnv) = 
>         let gadt_links = ResizeArray()
>         let gadt_typecases = ResizeArray()
>         let term_vars = Dictionary(HashIdentity.Structural)
>         let ty_vars = Dictionary(HashIdentity.Structural)
>         let mutable scope = scope
>         let update_env () =
>             scope,
>             {env with
>                 ty = (env.ty,ty_vars) ||> Seq.fold (fun s x -> Map.add x.Key 
> x.Value s)
>                 term = (env.term,term_vars) ||> Seq.fold (fun s x -> Map.add 
> x.Key x.Value s)
>                 }
>         let ho_make (i : GlobalId) (l : Var list) =
>             let h = TyNominal i
>             let l' = List.map (fun (x : Var) -> x, fresh_subst_var scope 
> x.constraints x.kind) l
>             List.fold (fun s (_,x) -> match tt top_env s with KindFun(_,k) -> 
> TyApply(s,x,k) | _ -> failwith "impossible") h l', l'
>         let rec ho_index x =
>             match visit_t x with
>             | TyApply(a,_,_) -> ho_index a 
>             | TyNominal i -> ValueSome i
>             | _ -> ValueNone
>         let rec ho_fun x = 
>             match visit_t x with
>             | TyFun(_,a,_) | TyForall(_,a) -> ho_fun a
>             | a -> ho_index a
>         let rec loop s x : unit =
>             let f = loop
>             match x with
>             | PatFilledDefaultValue _ -> failwith "Compiler error: 
> PatDefaultValueFilled should not appear during inference."
>             | PatB r -> unify r s TyB
>             | PatE r -> hover_types.AddHover(r,(s,""))
>             | PatVar(r,a) ->
>                 match term_vars.TryGetValue(a) with
>                 | true, v -> unify r s v
>                 | _ -> term_vars.Add(a,s)
>                 hover_types.AddHover(r,(s,""))
>             | PatDyn(_,a) -> f s a
>             | PatAnnot(_,a,b) -> ty_init scope env s b; f s a
>             | PatWhen(_,a,b) -> 
>                 f s a
>                 let scope,env = update_env()
>                 term scope env (TyPrim BoolT) b
>             | PatPair(r,a,b) ->
>                 let q,w = fresh_var scope, fresh_var scope
>                 unify r s (TyPair(q,w))
>                 loop q a; loop w b
>             | PatSymbol(r,a) -> unify r s (TySymbol a)
>             | PatOr(_,a,b) | PatAnd(_,a,b) -> loop s a; loop s b
>             | PatValue(r,a) -> unify r s (lit a)
>             | PatDefaultValue(r,_) -> 
>                 annotations.Add(x,(r,s))
>                 unify r s (fresh_subst_var scope (Set.singleton CNumber) 
> KindType)
>                 hover_types.AddHover(r,(s,""))
>             | PatRecordMembers(r,l) ->
>                 let l =
>                     List.choose (function
>                         | PatRecordMembersSymbol((r,a),b) -> Some (a,b)
>                         | PatRecordMembersInjectVar((r,a),b) ->
>                             match v_term env a with
>                             | Some (com,TySymbol a & x) -> 
> hover_types.AddHover(r,(x,com)); Some (a,b)
>                             | Some (_,x) -> errors.Add(r, 
> ExpectedSymbolAsRecordKey x); None
>                             | None -> errors.Add(r, UnboundVariable a); None
>                         ) l
>                 match visit_t s with
>                 | TyRecord l' as s ->
>                     let l, missing =
>                         List.mapFoldBack (fun (a,b) missing ->
>                             match l' |> Map.tryPick (fun (i, k) v -> if k = a 
> then Some (i, v) else None) with
>                             | Some (_,x) -> (x,b), missing
>                             | None -> (fresh_var scope,b), a :: missing
>                             ) l [[]]
>                     if List.isEmpty missing = false then errors.Add(r, 
> MissingRecordFieldsInPattern(s, missing))
>                     List.iter (fun (a,b) -> loop a b) l
>                 | s ->
>                     let l =
>                         List.mapi (fun i (a,b) -> 
>                             let v = fresh_var scope
>                             loop v b
>                             (i, a), v
>                             ) l
>                     unify r s (l |> Map |> TyRecord)
>             | PatExists(r,l,p) ->
>                 l |> List.iter (fun (r,name) -> if Map.containsKey name env.ty 
> then errors.Add(r,ShadowedExists))
>                 match visit_t s with
>                 | TyExists(type_var_list,type_body) ->
>                     if l.Length = type_var_list.Length then
>                         scope <- scope + 1
>                         let vars = (l, type_var_list) ||> List.map2 (fun 
> (_,name) l -> 
>                             memoize ty_vars (fun name -> tyvar {l with 
> scope=scope; name=name}) name
>                             )
>                         loop (subst (List.zip type_var_list vars) type_body) p
>                     else
>                     errors.Add(r, 
> UnexpectedNumberOfArgumentsInExistsPattern(l.Length,type_var_list.Length))
>                 | s -> errors.Add(r, ExpectedExistentialInPattern s)
>             | PatUnbox(r,name,a) ->
>                 let assume i =
>                     let n = top_env.nominals.[[i]]
>                     match n.body with
>                     | TyUnion(cases,_) ->
>                         let x,m = ho_make i n.vars
>                         unify r s x
>                         match Map.tryPick (fun (_, name') v -> if name = name' 
> then Some v else None) cases with
>                         | Some (is_gadt, v) -> 
>                             if is_gadt then 
>                                 scope <- scope + 1
>                                 let forall_vars,body,specialized_constructor = 
> gadt_extract scope v
>                                 gadt_typecases.Add(s, forall_vars, 
> specialized_constructor)
>                                 match a with PatE r' when r = r' -> () | _ -> 
> loop body a // This check for PatE is so the hovers for it don't overwrite the 
> main pattern.
>                                 unify_gadt (Some gadt_links) r s 
> specialized_constructor
>                             else
>                                 match a with PatE r' when r = r' -> () | _ -> f 
> (subst m v) a
>                             hover_types.AddHover(r,(s,""))
>                         | None -> 
> errors.Add(r,CasePatternNotFoundForType(i,name)); f (fresh_var scope) a
>                     | _ -> errors.Add(r,NominalInPatternUnbox i); f (fresh_var 
> scope) a
>                 match ho_index s with
>                 | ValueSome i -> assume i
>                 | ValueNone ->
>                     match v_term env name with
>                     | Some (_,x) ->
>                         match ho_fun x with
>                         | ValueSome i -> assume i
>                         | ValueNone -> 
> errors.Add(r,CannotInferCasePatternFromTermInEnv x); f (fresh_var scope) a
>                     | None -> errors.Add(r,CasePatternNotFound name); f 
> (fresh_var scope) a
>             | PatNominal(_,(r,name),l,a) ->
>                 match v_ty env name with
>                 | Some x ->
>                     let rec loop r x = function
>                         | (r,name) :: l ->
>                             match x with
>                             | TyModule x ->
>                                 match Map.tryFind name x with
>                                 | Some x -> loop r x l
>                                 | None -> errors.Add(r,ModuleIndexFailed name); 
> f (fresh_var scope) a
>                             | _ ->
>                                 errors.Add(r,ExpectedModule x); f (fresh_var 
> scope) a
>                         | [[]] ->
>                             match ho_index x with
>                             | ValueSome i ->
>                                 let n = top_env.nominals.[[i]]
>                                 match n.body with
>                                 | TyUnion _ -> 
> errors.Add(r,UnionInPatternNominal i); f (fresh_var scope) a
>                                 | _ -> let x,m = ho_make i n.vars in unify r s 
> x; f (subst m n.body) a
>                             | ValueNone -> errors.Add(r,TypeInEnvIsNotNominal 
> x); f (fresh_var scope) a
>                     loop r x l
>                 | _ -> errors.Add(r,UnboundVariable name); f (fresh_var scope) a
>             | PatArray(r,a) ->
>                 let v = fresh_var scope
>                 unify r s (TyArray v)
>                 List.iter (fun x -> loop v x) a
>         loop s a
>         gadt_links, gadt_typecases, update_env()
> 
>     let nominal_term global_id tt name vars v =
>         let constructor body =
>             let t,_ = List.fold (fun (a,k) b -> let k = trim_kind k in 
> TyApply(a,tyvar b,k),k) (TyNominal global_id,tt) vars
>             let x = match body with TyB -> t | _ -> TyFun(body,t,FT_Vanilla)
>             List.foldBack (fun var ty -> TyForall(var,ty)) vars x
>         match v with
>         | TyUnion(l,_) -> Map.fold (fun s (_,name) (is_gadt,v) -> Map.add name 
> (if is_gadt then v else constructor v) s) Map.empty l
>         | _ -> Map.add name (constructor v) Map.empty
> 
>     let psucc = Hopac.Job.thunk >> Hopac.Hopac.memo
>     let pfail = Hopac.Promise.Now.withFailure (System.Exception "Compiler error:
> Tried to read from a FilledTop that has errors.")
> 
>     let top_env_nominal top_env (global_id : GlobalId) tt name vars v : TopEnv =
>         { top_env with
>             nominals_next_tag = max top_env.nominals_next_tag global_id.tag + 1
>             nominals_aux = Map.add global_id {|kind=tt; name=name|} 
> top_env.nominals_aux
>             nominals = Map.add global_id {|vars=vars; body=v|} top_env.nominals
>             term = Map.foldBack Map.add (nominal_term global_id tt name vars v) 
> top_env.term
>             ty = Map.add name (TyNominal global_id) top_env.ty
>             }
> 
>     let rec typevar = function
>         | RawKindWildcard | RawKindStar -> KindType
>         | RawKindFun(a,b) -> KindFun(typevar a, typevar b)
>     let hovars (x : HoVar list) =
>         List.mapFold (fun s (_,(n,t)) ->
>             let v = {scope=0; kind=typevar t; name=n; constraints=Set.empty}
>             v, Map.add n (tyvar v) s
>             ) Map.empty x
> 
>     let scope = 0
>     let bundle_nominal_rec l' =
>         let l,_ =
>             List.mapFold (fun i (_,name,vars,body) ->
>                 let l,env = hovars vars
>                 let tt = List.foldBack (fun (x : Var) s -> KindFun(x.kind,s)) l 
> KindType
>                 (at_tag i,name,l,env,tt,body), i+1
>                 ) top_env.nominals_next_tag l'
> 
>         top_env <-
>             {top_env with 
>                 nominals_aux = (top_env.nominals_aux, l) ||> List.fold (fun s 
> (i,(_,name),_,_,tt,_) -> Map.add i {|name=name; kind=tt|} s)
>                 ty = (top_env.ty, l) ||> List.fold (fun s (i,(_,name),_,_,_,_) 
> -> Map.add name (TyNominal i) s) 
>                 }
>         
>         List.fold (fun top_env (global_id,(r,name),vars,env_ty,tt,body) ->
>             let v = fresh_var scope
>             ty_init scope {term=Map.empty; ty=env_ty; constraints=Map.empty} v 
> body
>             let v = term_subst v
>             validate_nominal errors global_id body v
>             top_env_nominal top_env global_id tt name vars v
>             ) top_env_emptyInfer l
> 
>     match expr with
>     | BundleType(q,(r,name),vars',expr) ->
>         let vars,env_ty = hovars vars'
>         let v = fresh_var scope
>         ty_init scope {term=Map.empty; ty=env_ty; constraints=Map.empty} v expr
>         let t = List.foldBack (fun x s -> TyInl(x,s)) vars (term_subst v)
>         hover_types.AddHover(r,(t,""))
>         if 0 = errors.Count then psucc (fun () -> FType(q,(r,name),vars',expr)),
> AInclude {top_env_emptyInfer with ty = Map.add name t Map.empty}
>         else pfail, AInclude top_env_emptyInfer
>     | BundleNominal(q,(r,name),vars',expr) ->
>         let x = bundle_nominal_rec [[q,(r,name),vars',expr]]
>         if 0 = errors.Count then psucc (fun () -> 
> FNominal(q,(r,name),vars',expr)), AInclude x
>         else pfail, AInclude top_env_emptyInfer
>     | BundleNominalRec l ->
>         let _ = // Checks that mutually recursive unions do not have duplicates.
>             let h = HashSet()
>             l |> List.iter (fun (_,_,_,x) ->
>                 match x with
>                 | RawTUnion(_,l,_,_) -> l |> Map.iter (fun k v -> if h.Add k = 
> false then errors.Add(range_of_texpr (snd v),DuplicateKeyInRecUnion))
>                 | _ -> ()
>                 )
>         let x = bundle_nominal_rec l
>         if 0 = errors.Count then psucc (fun () -> FNominalRec l), AInclude x
>         else pfail, AInclude top_env_emptyInfer
>     | BundlePrototype(com,r,(r',name),(w,var_init),vars',expr) ->
>         let i = at_tag top_env'.prototypes_next_tag
>         let cons = CPrototype i
>         let scope = 0
>         let vars,env_ty = typevars scope {term=Map.empty; constraints=Map.empty;
> ty=Map.empty} vars'
>         let kind = List.foldBack (fun (k : Var) s -> KindFun(k.kind,s)) vars 
> KindType
>         let v' = {scope=scope; constraints=Set.singleton cons; name=var_init; 
> kind=kind}
>         let env_ty = Map.add var_init (tyvar v') env_ty
>         let vars = v' :: vars
>         let v = fresh_var scope
>         ty_init scope {term=Map.empty; ty=env_ty; constraints=Map.empty} v expr
>         let body = List.foldBack (fun a b -> TyForall(a,b)) vars (term_subst v)
>         if 0 = errors.Count && (assert_foralls_used errors r' body; 0 = 
> errors.Count) then
>             let x =
>                 { top_env_emptyInfer with
>                     prototypes_next_tag = i.tag + 1
>                     prototypes = Map.add i {|name=name; signature=body; 
> kind=v'.kind|} Map.empty
>                     term = Map.add name (if com <> "" then TyComment(com,body) 
> else body) Map.empty
>                     constraints = Map.add name (C cons) Map.empty
>                     }
>             psucc (fun () -> FPrototype(r,(r',name),(w,var_init),vars',expr)), 
> AInclude x
>         else pfail, AInclude top_env_emptyInfer
>     | BundleInl(com,q,(_,name as w),a,true) ->
>         let env = inl scope {term=Map.empty; ty=Map.empty; 
> constraints=Map.empty} (w,a)
>         let term =
>             let x = env.term.[[name]]
>             if com <> "" then TyComment(com, x) else x
>         (if 0 = errors.Count then psucc (fun () -> FInl(q,w,fill q Map.empty a))
> else pfail),
>         AInclude { top_env_emptyInfer with term = Map.add name term Map.empty}
>     | BundleInl(com,q,(_,name as w),a,false) ->
>         assert_bound_vars {term=Map.empty; ty=Map.empty; constraints=Map.empty} 
> a
>         (if 0 = errors.Count then psucc (fun () -> FInl(q,w,a)) else pfail),
>         AInclude { top_env_emptyInfer with term = Map.add name (TySymbol 
> "<real>") Map.empty }
>     | BundleRecInl(l,is_top_down) ->
>         let _ =
>             let h = HashSet()
>             List.iter (fun (_,_,(r,n),_) -> if h.Add n = false then 
> errors.Add(r,DuplicateRecInlName)) l
>         let env_term =
>             if is_top_down then
>                 let l = List.map (fun (com,_,a,b) -> a,b) l
>                 (rec_block scope {term=Map.empty; ty=Map.empty; 
> constraints=Map.empty} l).term
>             else
>                 let env_term = List.fold (fun s (com,_,(_,a),_) -> Map.add a 
> (TySymbol "<real>") s) Map.empty l
>                 l |> List.iter (fun (com,_,_,x) -> assert_bound_vars {term = 
> env_term; ty = Map.empty; constraints=Map.empty} x)
>                 env_term
>         let filled_top =
>             if 0 = errors.Count then
>                 if is_top_down then psucc (fun () -> FRecInl(List.map (fun 
> (_,a,b,c) -> a,b,fill a env_term c) l))
>                 else psucc (fun () -> FRecInl(List.map (fun (_,a,b,c) -> a,b,c) 
> l))
>             else pfail
>         let env_term =
>             List.fold (fun env_term (com,_,(_,n),_) ->
>                 if com <> "" then Map.add n (TyComment(com, Map.find n 
> env_term)) env_term else env_term
>                 ) env_term l
>         filled_top, AInclude (Map.fold (fun s k v -> {s with term = Map.add k v 
> s.term}) top_env_emptyInfer env_term)
>     | BundleInstance(r,prot,ins,vars,body) ->
>         let fail = pfail,AInclude top_env_emptyInfer
>         let assert_no_kind x = x |> List.iter (fun ((r,(_,k)),_) -> match k with
> RawKindWildcard -> () | _ -> errors.Add(r,KindNotAllowedInInstanceForall))
>         let assert_vars_count vars_count vars_expected = if vars_count <> 
> vars_expected then 
> errors.Add(r,InstanceCoreVarsShouldMatchTheArityDifference(vars_count,vars_expec
> ted))
>         let assert_kind_compatibility got expected =
>             try unify_kind' InstanceKindError r got expected
>             with :? InferTypeErrorException as e -> errors.AddRange e.Data0
>         let assert_kind_arity prot_kind_arity ins_kind_arity = if ins_kind_arity
> < prot_kind_arity then 
> errors.Add(r,InstanceArityError(prot_kind_arity,ins_kind_arity))
>         let assert_instance_forall_does_not_shadow_prototype_forall 
> prot_forall_name = List.iter (fun ((r,(a,_)),_) -> if a = prot_forall_name then 
> errors.Add(r,InstanceVarShouldNotMatchAnyOfPrototypes)) vars
>         let assert_orphan_shadow_check (prot_id : GlobalId) (ins_id : GlobalId) 
> =
>             // if Map.containsKey (prot_id, ins_id) top_env.prototypes_instances
>             // then errors.Add(r,ShadowedInstance)
>             ()
>         let assert_orphan_instance_check (prot_id : GlobalId) (ins_id : 
> GlobalId) =
>             // if (prot_id.package_id = package_id || ins_id.package_id = 
> package_id) = false then errors.Add(r,OrphanInstance)
>             ()
>         let body prot_id ins_id =
>             let ins_kind' = top_env.nominals_aux.[[ins_id]].kind
>             let guard next = if 0 = errors.Count then next () else fail
>             let ins_kind = kind_get ins_kind'
>             let prototype = top_env.prototypes.[[prot_id]]
>             hover_types.AddHover(fst prot, (prototype.signature,"")) // TODO: 
> Add the hover for the instance signature.
>             let prototype_init_forall_kind = prototype_init_forall_kind 
> prototype.signature
>             let prot_kind = kind_get prototype_init_forall_kind
>             assert_kind_arity prot_kind.arity ins_kind.arity
>             guard <| fun () ->
>             let vars_expected = ins_kind.arity - prot_kind.arity
>             assert_kind_compatibility (List.skip vars_expected ins_kind.args |> 
> List.reduceBack (fun a b -> KindFun(a,b))) prototype_init_forall_kind
>             guard <| fun () ->
>             assert_vars_count (List.length vars) vars_expected
>             guard <| fun () ->
>             assert_no_kind vars
>             guard <| fun () ->
>             let ins_vars, env_ty =
>                 List.mapFold (fun s (((r,_),_) & x,k) ->
>                     let v = {typevar_to_var scope Map.empty x with kind = k}
>                     let x = tyvar v
>                     hover_types.AddHover(r,(x,""))
>                     x, Map.add v.name x s
>                     ) Map.empty (List.zip vars (List.take vars_expected 
> ins_kind.args))
>             let ins_constraints = ins_vars |> List.map (visit_t >> function 
> TyVar (x,_) -> x.constraints | _ -> failwith "impossible")
>             let ins_core, _ = List.fold (fun (a,k) (b : T) -> let k = trim_kind 
> k in TyApply(a,b,k),k) (TyNominal ins_id,ins_kind') ins_vars
>             let env_ty, prot_body =
>                 match foralls_ty_get prototype.signature with
>                 | (prot_core :: prot_foralls), prot_body ->
>                     List.fold (fun ty x ->
>                         assert_instance_forall_does_not_shadow_prototype_forall 
> x.name
>                         Map.add x.name (tyvar x) ty) env_ty prot_foralls,
>                     let prot_body = subst [[prot_core, ins_core]] prot_body
>                     let _ =
>                         List.foldBack (fun x s -> TyForall(x,s)) prot_foralls 
> prot_body
>                         |> List.foldBack (fun x s -> match visit_t x with 
> TyVar(x,_) -> TyForall(x,s) | _ -> failwith "impossible") ins_vars
>                         |> fun x -> generalized_statements.Add(body,x)
>                     prot_body
>                 | _ -> failwith "impossible"
>             assert_orphan_shadow_check prot_id ins_id
>             assert_orphan_instance_check prot_id ins_id
>             guard <| fun () ->
>             top_env <- {top_env with prototypes_instances = Map.add 
> (prot_id,ins_id) ins_constraints top_env.prototypes_instances}
>             term scope {term=Map.empty; ty=env_ty; constraints=Map.empty} 
> prot_body body
>             (if 0 = errors.Count then psucc (fun () -> FInstance(r,(fst prot, 
> prot_id),(fst ins, ins_id),fill r Map.empty body)) else pfail),
>             AInclude {top_env_emptyInfer with prototypes_instances = Map.add 
> (prot_id,ins_id) ins_constraints Map.empty}
> 
>         let fake _ = fail
>         let check_ins on_succ =
>             match Map.tryFind (snd ins) top_env.ty with
>             | None -> errors.Add(fst ins, UnboundVariable (snd ins)); fail
>             | Some(TyNominal i') -> on_succ i'
>             | Some x -> errors.Add(fst ins, ExpectedHigherOrder x); fail
>         match Map.tryFind (snd prot) top_env.constraints with
>         | None -> errors.Add(fst prot, UnboundVariable (snd prot)); check_ins 
> fake
>         | Some(C (CPrototype i)) -> check_ins (body i)
>         | Some(C x) -> errors.Add(fst prot, ExpectedPrototypeConstraint x); 
> check_ins fake
>         | Some(M _) -> errors.Add(fst prot, ExpectedPrototypeInsteadOfModule); 
> check_ins fake
>     | BundleOpen(q,(r,a),b) ->
>         match module_openInfer (Some hover_types) (loc_env top_env) Map.empty r 
> a b with
>         | Result.Ok x -> psucc (fun () -> FOpen(q,(r,a),b)), AOpen 
> {top_env_emptyInfer with term=x.term; ty=x.ty; constraints=x.constraints}
>         | Result.Error er -> errors.Add(er); pfail, AOpen top_env_emptyInfer
>     |> fun (filled_top, top_env_additions) ->
>         if 0 = errors.Count then
>             annotations |> Seq.iter (fun (KeyValue(_,(r,x))) -> if has_metavars 
> x then errors.Add(r, ValueRestriction x))
>         {
>         filled_top = filled_top
>         top_env_additions = top_env_additions
>         offset = bundle_range expr |> fst |> fun x -> x.line
>         hovers = hover_types.ToArray() |> Array.map (fun ((a:VSCRange),(b,(com :
> string))) -> a, let b = show_t top_env b in if com <> "" then sprintf 
> "%s\n---\n%s" b com else b)
>         errors = errors |> Seq.toList |> List.map (fun (a,b) -> a, 
> show_type_error top_env b)
>         }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### base_types
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let base_types (default_env : DefaultEnv) =
>     let var name = {scope=0; kind=KindType; constraints=Set.empty; name=name} 
>     let inline inl f = let x = var "x" in TyInl(x,f x)
>     let inline inl2 f = let x,y = var "x", var "y" in TyInl(x,TyInl(y,f x y))
>     [[
>     "i8", TyPrim Int8T
>     "i16", TyPrim Int16T
>     "i32", TyPrim Int32T
>     "i64", TyPrim Int64T
>     "u8", TyPrim UInt8T
>     "u16", TyPrim UInt16T
>     "u32", TyPrim UInt32T
>     "u64", TyPrim UInt64T
>     "f32", TyPrim Float32T
>     "f64", TyPrim Float64T
>     "string", TyPrim StringT
>     "bool", TyPrim BoolT
>     "char", TyPrim CharT
>     "array_base", inl (fun x -> TyArray(tyvar x))
>     "heap", inl (fun x -> TyLayout(tyvar x,Layout.Heap))
>     "mut", inl (fun x -> TyLayout(tyvar x,Layout.HeapMutable))
>     "stack_mut", inl (fun x -> TyLayout(tyvar x,Layout.StackMutable))
>     "fptr", inl2 (fun x y -> TyFun(tyvar x,tyvar y,FT_Pointer))
>     "closure", inl2 (fun x y -> TyFun(tyvar x,tyvar y,FT_Closure))
>     "int", TyPrim default_env.default_int
>     "uint", TyPrim default_env.default_uint
>     "float", TyPrim default_env.default_float
>     ]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### top_env_defaultInfer
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let top_env_defaultInfer default_env : TopEnv =
>     // Note: `top_env_default` should have no nominals, prototypes or terms.
>     {top_env_emptyInfer with
>         ty = Map.ofList (base_types default_env)
>         constraints =
>             [[
>             "uint", CUInt
>             "sint", CSInt
>             "int", CInt
>             "float", CFloat
>             "number", CNumber
>             "prim", CPrim
>             "record", CRecord
>             "symbol", CSymbol
>             ]] |> Map.ofList |> Map.map (fun _ -> C)
>         }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## PartEvalPrepass
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### Id
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Id = int32
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### ScopeEnv
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type ScopeEnv = {|free_vars : int [[]]; stack_size : int|}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### Scope
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Scope = {term : ScopeEnv; ty : ScopeEnv}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### Range
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Range = {path : string; range : VSCRange}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### Macro
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Macro =
>     | MText of string
>     | MTerm of E
>     | MType of TPrepass
>     | MLitType of TPrepass
> and TypeMacro =
>     | TMText of string
>     | TMType of TPrepass
>     | TMLitType of TPrepass
> and RecordWith =
>     | RSymbol of (Range * string) * E
>     | RSymbolModify of (Range * string) * E
>     | RVar of (Range * E) * E
>     | RVarModify of (Range * E) * E
> and RecordWithout =
>     | WSymbol of Range * string
>     | WVar of Range * E
> and PatRecordMemberPrepass =
>     | Symbol of (Range * string) * Id
>     | Var of (Range * E) * Id
> and [[<ReferenceEquality>]] E =
>     | EFun of Range * Id * E * TPrepass option
>     | EFun' of Range * Scope * Id * E * TPrepass option
>     | EForall of Range * Id * E
>     | EForall' of Range * Scope * Id * E
>     | ERecursiveFun' of Range * Scope * Id * E ref * TPrepass option
>     | ERecursiveForall' of Range * Scope * Id * E ref
>     | ERecursive of E ref // For global mutually recursive functions
>     | EPatternRef of E ref
>     | EJoinPoint of Range * E * TPrepass option * backend: (Range * string) 
> option * name: string option
>     | EJoinPoint' of Range * Scope * E * TPrepass option * backend: (Range * 
> string) option * name: string option
>     | EB of Range
>     | EV of Id
>     | ELit of Range * Literal
>     | EDefaultLit of Range * string * TPrepass
>     | ESymbol of Range * string
>     | EType of Range * TPrepass
>     | EApply of Range * E * E
>     | EArray of Range * E list * TPrepass
>     | ETypeApply of Range * E * TPrepass
>     | ERecBlock of Range * (Id * E) list * on_succ: E
>     | ERecordWith of Range * (Range * E) list * RecordWith list * RecordWithout 
> list
>     | EModule of Map<string, E>
>     | EOp of Range * Op * E list
>     | EPatternMiss of E
>     | ETypePatternMiss of TPrepass
>     | EAnnot of Range * E * TPrepass
>     | EIfThenElse of Range * E * E * E
>     | EIfThen of Range * E * E
>     | EPair of Range * E * E
>     | ESeq of Range * E * E
>     | EMutableSet of Range * E * (Range * E) list * E
>     | EReal of Range * E
>     | EExists of Range * TPrepass list * E
>     | EMacro of Range * Macro list * TPrepass
>     | EPrototypeApply of Range * prototype_id: GlobalId * TPrepass
>     | EPatternMemo of E
>     | ENominal of Range * E * TPrepass
>     // Regular pattern matching
>     | ELet of Range * Id * E * E
>     | EUnbox of Range * symbol: string * Id * body: E * on_succ: E * on_fail: E
>     | EExistsTest of Range * bind: Id * pat_type: Id [[]] * pat: Id * on_succ: E
> * on_fail: E
>     | EPairTest of Range * bind: Id * pat1: Id * pat2: Id * on_succ: E * 
> on_fail: E
>     | ESymbolTest of Range * string * bind: Id * on_succ: E * on_fail: E
>     | ERecordTest of Range * PatRecordMemberPrepass list * bind: Id * on_succ: E
> * on_fail: E
>     | EAnnotTest of Range * TPrepass * bind: Id * on_succ: E * on_fail: E
>     | EUnitTest of Range * bind: Id * on_succ: E * on_fail: E
>     | ENominalTest of Range * TPrepass * bind: Id * pat: Id * on_succ: E * 
> on_fail: E
>     | ELitTest of Range * Literal * bind: Id * on_succ: E * on_fail: E
>     | EDefaultLitTest of Range * string * TPrepass * bind: Id * on_succ: E * 
> on_fail: E
>     | ETypecase of Range * TPrepass * (TPrepass * E) list
> and [[<ReferenceEquality>]] TPrepass =
>     | TForall' of Range * Scope * Id * TPrepass
>     | TForall of Range * Id * TPrepass
>     | TArrow' of Scope * Id * TPrepass
>     | TArrow of Id * TPrepass
>     | TExists
>     | TJoinPoint' of Range * Scope * TPrepass
>     | TJoinPoint of Range * TPrepass
>     | TPatternRef of TPrepass ref
>     | TB of Range
>     | TLit of Range * Literal
>     | TV of Id
>     | TPair of Range * TPrepass * TPrepass
>     | TFun of TPrepass * TPrepass * FunType
>     | TRecord of Range * Map<int * string,TPrepass>
>     | TModule of Map<string,TPrepass>
>     | TUnion of Range * (Map<int * string,TPrepass * TPrepass option> * 
> UnionLayout)
>     | TSymbol of Range * string
>     | TApply of Range * TPrepass * TPrepass
>     | TPrim of PrimitiveType
>     | TTerm of Range * E
>     | TMacro of Range * TypeMacro list
>     | TNominal of GlobalId
>     | TArray of TPrepass
>     | TLayout of TPrepass * Layout
>     | TMetaV of Id
>     | TTypecase of Range * TPrepass * (TPrepass * TPrepass) list
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### Printable
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> module Printable =
>     type PMacro =
>         | MText of string
>         | MTerm of PE
>         | MType of PT
>         | MLitType of PT
>     and PTypeMacro =
>         | TMText of string
>         | TMType of PT
>         | TMLitType of PT
>     and PRecordWith =
>         | RSymbol of string * PE
>         | RSymbolModify of string * PE
>         | RVar of PE * PE
>         | RVarModify of PE * PE
>     and PRecordWithout =
>         | WSymbol of string
>         | WVar of PE
>     and PPatRecordMember =
>         | Symbol of string * Id
>         | Var of PE * Id
>     and [[<ReferenceEquality>]] PE =
>         | EFun' of Scope * Id * PE * PT option
>         | EForall' of Scope * Id * PE
>         | ERecursiveFun' of Scope * Id * PE * PT option
>         | ERecursiveForall' of Scope * Id * PE
>         | ERecursive of PE
>         | EJoinPoint of PE * PT option * string option
>         | EJoinPoint' of Scope * PE * PT option * string option
>         | EArray of PE list * PT
>         | EFun of Id * PE * PT option
>         | EForall of Id * PE
>         | EB
>         | EV of Id
>         | ELit of Literal
>         | EDefaultLit of string * PT
>         | ESymbol of string
>         | EType of PT
>         | EApply of PE * PE
>         | ETypeApply of PE * PT
>         | ERecBlock of (Id * PE) list * on_succ: PE
>         | ERecordWith of PE list * PRecordWith list * PRecordWithout list
>         | EModule of Map<string, PE>
>         | EOp of Op * PE list
>         | EPatternMiss of PE
>         | ETypePatternMiss of PT
>         | EAnnot of PE * PT
>         | EIfThenElse of PE * PE * PE
>         | EIfThen of PE * PE
>         | EPair of PE * PE
>         | ESeq of PE * PE
>         | EHeapMutableSet of PE * PE list * PE
>         | EReal of PE
>         | EExists of PT list * PE
>         | EMacro of PMacro list * PT
>         | EPrototypeApply of prototype_id: GlobalId * PT
>         | EPatternMemo of PE
>         | ENominal of PE * PT
>         // Regular pattern matching
>         | ELet of Id * PE * PE
>         | EUnbox of Id * string * PE * PE * PE
>         | EExistsTest of bind: Id * pat_type: Id [[]] * pat: Id * on_succ: PE * 
> on_fail: PE
>         | EPairTest of bind: Id * pat1: Id * pat2: Id * on_succ: PE * on_fail: 
> PE
>         | ESymbolTest of string * bind: Id * on_succ: PE * on_fail: PE
>         | ERecordTest of PPatRecordMember list * bind: Id * on_succ: PE * 
> on_fail: PE
>         | EAnnotTest of PT * bind: Id * on_succ: PE * on_fail: PE
>         | EUnitTest of bind: Id * on_succ: PE * on_fail: PE
>         | ENominalTest of PT * bind: Id * pat: Id * on_succ: PE * on_fail: PE
>         | ELitTest of Literal * bind: Id * on_succ: PE * on_fail: PE
>         | EDefaultLitTest of string * PT * bind: Id * on_succ: PE * on_fail: PE
>         | ETypecase of PT * (PT * PE) list
>         | EOmmitedRecursive
>     and [[<ReferenceEquality>]] PT =
>         | TTypecase of PT * (PT * PT) list
>         | TForall' of Scope * Id * PT
>         | TForall of Id * PT
>         | TArrow' of Scope * Id * PT
>         | TArrow of Id * PT
>         | TExists
>         | TJoinPoint' of Scope * PT
>         | TJoinPoint of PT
>         | TB
>         | TLit of Literal
>         | TV of Id
>         | TMetaV of Id
>         | TPair of PT * PT
>         | TFun of PT * PT * FunType
>         | TFunPtr of PT * PT
>         | TRecord of Map<int * string,PT>
>         | TModule of Map<string,PT>
>         | TUnion of Map<int * string,PT> * UnionLayout
>         | TSymbol of string
>         | TApply of PT * PT
>         | TPrim of PrimitiveType
>         | TTerm of PE
>         | TMacro of PTypeMacro list
>         | TNominal of GlobalId
>         | TArray of PT
>         | TLayout of PT * Layout
> 
>     let eval x =
>         let recs = System.Collections.Generic.HashSet(HashIdentity.Reference)
>         let rec term = function
>             | E.ETypecase(r,a,b) -> ETypecase(ty a,b |> List.map (fun (a,b) -> 
> ty a, term b))
>             | E.EPatternRef a -> term a.Value
>             | E.EFun'(_,a,b,c,d) -> EFun'(a,b,term c,Option.map ty d)
>             | E.EForall'(_,a,b,c) -> EForall'(a,b,term c)
>             | E.EArray(_,a,b) -> EArray(List.map term a,ty b)
>             | E.ERecursiveFun'(_,a,b,c,d) -> 
>                 let r = c.Value
>                 let r = if recs.Add(r) then term r else EOmmitedRecursive
>                 ERecursiveFun'(a,b,r,Option.map ty d)
>             | E.ERecursiveForall'(_,a,b,c) -> 
>                 let r = c.Value
>                 let r = if recs.Add(r) then term r else EOmmitedRecursive
>                 ERecursiveForall'(a,b,r)
>             | E.ERecursive a -> 
>                 let r = a.Value
>                 if isNull (box r) then EOmmitedRecursive
>                 else
>                     let r = if recs.Add(r) then term r else EOmmitedRecursive
>                     ERecursive r
>             | E.EJoinPoint(_,a,b,d,_) -> EJoinPoint(term a,Option.map ty 
> b,Option.map snd d)
>             | E.EJoinPoint'(_,a,b,c,d,_) -> EJoinPoint'(a,term b,Option.map ty 
> c,Option.map snd d)
>             | E.EFun(_,a,b,c) -> EFun(a,term b,Option.map ty c)
>             | E.EForall(_,a,b) -> EForall(a,term b)
>             | E.EB _ -> EB
>             | E.EV i -> EV i
>             | E.ELit(_,a) -> ELit(a)
>             | E.EDefaultLit(_,a,b) -> EDefaultLit(a,ty b)
>             | E.ESymbol(_,a) -> ESymbol a
>             | E.EType(_,a) -> EType(ty a)
>             | E.EApply(_,a,b) -> EApply(term a,term b)
>             | E.ETypeApply(_,a,b) -> ETypeApply(term a,ty b)
>             | E.ERecBlock(_,a,b) -> ERecBlock(List.map (fun (a,b) -> a, term b) 
> a,term b)
>             | E.ERecordWith(_,a,b,c) ->
>                 let a = a |> List.map (fun (_,a) -> term a)
>                 let b = b |> List.map (function
>                     | RecordWith.RSymbol((_,a),b) -> RSymbol(a,term b)
>                     | RecordWith.RSymbolModify((_,a),b) -> RSymbolModify(a,term 
> b)
>                     | RecordWith.RVar((_,a),b) -> RVar(term a,term b)
>                     | RecordWith.RVarModify((_,a),b) -> RVarModify(term a,term 
> b)
>                     )
>                 let c = c |> List.map (function
>                     | RecordWithout.WSymbol(_,a) -> WSymbol a
>                     | RecordWithout.WVar(_,a) -> WVar(term a)
>                     )
>                 ERecordWith(a,b,c)
>             | E.EModule a -> EModule(Map.map (fun _ -> term) a)
>             | E.EOp(_,a,b) -> EOp(a,List.map term b)
>             | E.EPatternMiss a -> EPatternMiss(term a)
>             | E.ETypePatternMiss a -> ETypePatternMiss(ty a)
>             | E.EAnnot(_,a,b) -> EAnnot(term a,ty b)
>             | E.EIfThenElse(_,a,b,c) -> EIfThenElse(term a,term b,term c)
>             | E.EIfThen(_,a,b) -> EIfThen(term a,term b)
>             | E.EPair(_,a,b) -> EPair(term a,term b)
>             | E.ESeq(_,a,b) -> ESeq(term a,term b)
>             | E.EMutableSet(_,a,b,c) -> EHeapMutableSet(term a,List.map (snd >> 
> term) b,term c)
>             | E.EReal(_, a) -> EReal(term a)
>             | E.EExists(_, a, b) -> EExists(List.map ty a, term b)
>             | E.EMacro(_,a,b) ->
>                 let a = a |> List.map (function
>                     | Macro.MText a -> MText a
>                     | Macro.MTerm a -> MTerm(term a)
>                     | Macro.MType a -> MType(ty a)
>                     | Macro.MLitType a -> MLitType(ty a)
>                     )
>                 EMacro(a,ty b)
>             | E.EPrototypeApply(_,a,b) -> EPrototypeApply(a,ty b)
>             | E.EPatternMemo a -> EPatternMemo(term a)
>             | E.ENominal(_,a,b) -> ENominal(term a,ty b)
>             // Regular pattern matching
>             | E.ELet(_,a,b,c) -> ELet(a,term b,term c)
>             | E.EUnbox(_,q,a,b,c,d) -> EUnbox(a,q,term b,term c,term d)
>             | E.EExistsTest(_,a,l,q,d,e) -> EExistsTest(a,l,q,term d,term e)
>             | E.EPairTest(_,a,b,c,d,e) -> EPairTest(a,b,c,term d,term e)
>             | E.ESymbolTest(_,a,b,c,d) -> ESymbolTest(a,b,term c,term d)
>             | E.ERecordTest(_,a,b,c,d) ->
>                 let a = a |> List.map (function
>                     | PatRecordMemberPrepass.Symbol((_,a),b) -> Symbol(a,b)
>                     | PatRecordMemberPrepass.Var((_,a),b) -> Var(term a,b)
>                     )
>                 ERecordTest(a,b,term c,term d)
>             | E.EAnnotTest(_,a,b,c,d) -> EAnnotTest(ty a,b,term c,term d)
>             | E.EUnitTest(_,a,b,c) -> EUnitTest(a,term b,term c)
>             | E.ENominalTest(_,a,b,c,d,e) -> ENominalTest(ty a,b,c,term d,term 
> e)
>             | E.ELitTest(_,a,b,c,d) -> ELitTest(a,b,term c,term d)
>             | E.EDefaultLitTest(_,a,b,c,d,e) -> EDefaultLitTest(a,ty b,c,term 
> d,term e)
>         and ty = function
>             | TPrepass.TTypecase(_,a,b) -> TTypecase(ty a,List.map (fun (a,b) ->
> ty a, ty b) b)
>             | TPrepass.TPatternRef a -> ty a.Value
>             | TPrepass.TForall'(_,a,b,c) -> TForall'(a,b,ty c)
>             | TPrepass.TForall(_,a,b) -> TForall(a,ty b)
>             | TPrepass.TArrow'(a,b,c) -> TArrow'(a,b,ty c)
>             | TPrepass.TArrow(a,b) -> TArrow(a,ty b)
>             | TPrepass.TExists -> TExists
>             | TPrepass.TJoinPoint'(_,a,b) -> TJoinPoint'(a,ty b)
>             | TPrepass.TJoinPoint(_,a) -> TJoinPoint(ty a)
>             | TPrepass.TB _ -> TB
>             | TPrepass.TLit(_,x) -> TLit x
>             | TPrepass.TV a -> TV a
>             | TPrepass.TMetaV a -> TMetaV a
>             | TPrepass.TPair(_,a,b) -> TPair(ty a,ty b)
>             | TPrepass.TFun(a,b,t) -> TFun(ty a,ty b,t)
>             | TPrepass.TRecord(_,a) -> TRecord(Map.map (fun _ -> ty) a)
>             | TPrepass.TModule a -> TModule(Map.map (fun _ -> ty) a)
>             | TPrepass.TUnion(_,(a,b)) -> TUnion(Map.map (fun _ x -> ty (fst x))
> a,b)
>             | TPrepass.TSymbol(_,a) -> TSymbol a
>             | TPrepass.TApply(_,a,b) -> TApply(ty a, ty b)
>             | TPrepass.TPrim a -> TPrim a
>             | TPrepass.TTerm(_,a) -> TTerm(term a)
>             | TPrepass.TMacro(_,a) -> 
>                 let a = a |> List.map (function
>                     | TypeMacro.TMText a -> TMText a
>                     | TypeMacro.TMType a -> TMType(ty a)
>                     | TypeMacro.TMLitType a -> TMLitType(ty a)
>                     )
>                 TMacro(a)
>             | TPrepass.TNominal a -> TNominal a
>             | TPrepass.TArray a -> TArray(ty a)
>             | TPrepass.TLayout(a,b) -> TLayout(ty a,b)
> 
>         match x with
>         | Choice1Of2(x,ret) -> ret (term x)
>         | Choice2Of2(x,ret) -> ret (ty x)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### PrepassTopEnv
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type PrepassTopEnv = {
>     prototypes_next_tag : int
>     prototypes_instances : Map<GlobalId * GlobalId,E>
>     nominals_next_tag : int
>     nominals : Map<GlobalId,{|body : TPrepass; name : string|}>
>     term : Map<string,E>
>     ty : Map<string,TPrepass>
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### top_env_emptyPrepass
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let top_env_emptyPrepass = {
>     prototypes_next_tag = 0
>     prototypes_instances = Map.empty
>     nominals_next_tag = 0
>     nominals = Map.empty
>     term = Map.empty
>     ty = Map.empty
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### unionPrepass
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let unionPrepass small big = {
>     prototypes_next_tag = max small.prototypes_next_tag big.prototypes_next_tag
>     prototypes_instances = Map.foldBack Map.add small.prototypes_instances 
> big.prototypes_instances
>     nominals_next_tag = max small.nominals_next_tag big.nominals_next_tag
>     nominals = Map.foldBack Map.add small.nominals big.nominals
>     term =
>         Map.foldBack (fun k v s ->
>             let v =
>                 match v, s |> Map.tryFind k with
>                 | EModule x, Some (EModule x') -> Map.foldBack Map.add x x' |> 
> EModule
>                 | _ -> v
>             s |> Map.add k v
>         ) small.term big.term
>     ty =
>         Map.foldBack (fun k v s ->
>             let v =
>                 match v, s |> Map.tryFind k with
>                 | TModule x, Some (TModule x') -> Map.foldBack Map.add x x' |> 
> TModule
>                 | _ -> v
>             s |> Map.add k v
>         ) small.ty big.ty
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### in_modulePrepass
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let in_modulePrepass m (a : PrepassTopEnv) =
>     {a with 
>         ty = Map.add m (TModule a.ty) Map.empty
>         term = Map.add m (EModule a.term) Map.empty
>         }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### PropagatedVarsEnv
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type PropagatedVarsEnv = {|vars : Set<int>; range : (int * int) option|}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### PropagatedVars
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type PropagatedVars = {term : PropagatedVarsEnv; ty : PropagatedVarsEnv}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### propagate
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> // Attaches scopes to all the nodes.
> let propagate x =
>     let dict = Dictionary(HashIdentity.Reference)
>     let (+*) a b = 
>         match a,b with
>         | Some(min',max'), Some(min'',max'') -> Some(min min' min'', max max' 
> max'')
>         | Some(a,b), _ | _, Some(a,b) -> Some(a,b)
>         | None, None -> None
>     let (+) (a : PropagatedVars) (b : PropagatedVars) : PropagatedVars = {
>         term = {|vars = Set.union a.term.vars b.term.vars; range = a.term.range 
> +* b.term.range |} 
>         ty = {|vars = Set.union a.ty.vars b.ty.vars; range = a.ty.range +* 
> b.ty.range |} 
>         }
>     let (-*) a i =
>         if 0 <= i then 
>             match a with 
>             | Some(min',max') -> Some(min min' i, max max' i)
>             | None -> Some(i,i)
>         else a // Recursive vars are negative and get inlined so they should be 
> ignored when calculating the range of a scope.
>     let (-) (a : PropagatedVars) i = {a with term = {|vars = Set.remove i 
> a.term.vars; range = a.term.range -* i |} }
>     let (-.) (a : PropagatedVars) i = {a with ty = {|vars = Set.remove i 
> a.ty.vars; range = a.ty.range -* i |} }
>     let empty' term ty = let f x = {|vars = x; range=None|} in {term = f term; 
> ty = f ty}
>     let empty = empty' Set.empty Set.empty
>     let singleton_term i = empty' (Set.singleton i) Set.empty
>     let singleton_ty i = empty' Set.empty (Set.singleton i)
> 
>     let scope_dict = Dictionary<obj,_>(HashIdentity.Reference)
>     let scope x (v : PropagatedVars) = scope_dict.Add(x,v); empty' v.term.vars 
> v.ty.vars
>     let rec term x =
>         match x with
>         | EFun' _ | EForall' _ | ERecursiveFun' _ | ERecursiveForall' _ | 
> ERecursive _ | EJoinPoint' _ | EModule _ | ESymbol _ | ELit _ | EB _ -> empty
>         | EPatternRef a -> term a.Value
>         | EV i -> singleton_term i
>         | EPrototypeApply(_,_,a) | EType(_,a) | ETypePatternMiss a | 
> EDefaultLit(_,_,a) -> ty a
>         | ESeq(_,a,b) | EPair(_,a,b) | EIfThen(_,a,b) | EApply(_,a,b) -> term a 
> + term b
>         | EArray(_,a,b) -> List.fold (fun s x -> s + term x) (ty b) a
>         | ENominal(_,a,b) | EAnnot(_,a,b) | ETypeApply(_,a,b) -> term a + ty b
>         | EForall(_,i,a) -> scope x (term a -. i)
>         | EJoinPoint(_,a,t,_,_) -> scope x (match t with Some t -> term a + ty t
> | None -> term a)
>         | EFun(_,i,a,t) -> scope x (match t with Some t -> term a - i + ty t | 
> None -> term a - i)
>         | ERecBlock(_,l,on_succ) ->
>             let s = List.fold (fun s (_,body) -> s + term body) (term on_succ) l
>             List.fold (fun s (id,_) -> s - id) s l
>         | ERecordWith(_,a,b,c) ->
>             let fold f a b = List.fold f b a
>             List.fold (fun s (_,a) -> s + term a) empty a
>             |> fold (fun s -> function
>                     | RSymbolModify(_,a) | RSymbol(_,a) -> s + term a
>                     | RVar((_,a),b) | RVarModify((_,a),b) -> s + term a + term b
>                     ) b
>             |> fold (fun s -> function
>                 | WSymbol _ -> s
>                 | WVar(_,a) -> s + term a
>                 ) c
>         | EOp(_,_,a) -> List.fold (fun s a -> s + term a) empty a
>         | EMutableSet(_,a,b,c) -> term a + List.fold (fun s (_,a) -> s + term a)
> empty b + term c
>         | EIfThenElse(_,a,b,c) -> term a + term b + term c
>         | EExists(_,a,b) -> List.fold (fun s a -> s + ty a) (term b) a
>         | EPatternMiss a | EReal(_,a) -> term a
>         | EMacro(_,a,b) -> List.fold (fun s -> function MLitType x | MType x -> 
> s + ty x | MTerm x -> s + term x | MText _ -> s) (ty b) a
>         | EPatternMemo a -> memoize dict term a
>         // Regular pattern matching
>         | ELet(_,bind,body,on_succ) -> term on_succ - bind + term body
>         | EUnbox(_,_,bind,body,on_succ,on_fail) -> term on_succ - bind + term 
> body + term on_fail
>         | EExistsTest(_,bind,pat_type,pat,on_succ,on_fail) -> singleton_term 
> bind + (Array.fold (-.) (term on_succ) pat_type - pat) + term on_fail
>         | EPairTest(_,bind,pat1,pat2,on_succ,on_fail) -> singleton_term bind + 
> (term on_succ - pat1 - pat2) + term on_fail
>         | ESymbolTest(_,_,bind,on_succ,on_fail) 
>         | EUnitTest(_,bind,on_succ,on_fail) 
>         | ELitTest(_,_,bind,on_succ,on_fail) -> singleton_term bind + term 
> on_succ + term on_fail
>         | ERecordTest(_,a,bind,on_succ,on_fail) ->
>             let on_succ_and_injects =
>                 let on_succ = List.fold (fun s (Symbol(_,a) | Var(_,a)) -> s - 
> a) (term on_succ) a
>                 List.fold (fun s -> function Var((_,a),_) -> s + term a | Symbol
> _ -> s) on_succ a // Though it is less efficient, I am using two passes here to 
> guard against future changes to pattern compilation breaking this part by 
> accident.
>             singleton_term bind + term on_fail + on_succ_and_injects
>         | EDefaultLitTest(_,_,t,bind,on_succ,on_fail)
>         | EAnnotTest(_,t,bind,on_succ,on_fail) -> singleton_term bind + ty t + 
> term on_succ + term on_fail
>         | ENominalTest(_,t,bind,pat,on_succ,on_fail) -> singleton_term bind + ty
> t + (term on_succ - pat) + term on_fail
>         | ETypecase(_,a,b) -> 
>             List.fold (fun s (a,b) -> 
>                 let a = ty a
>                 let mutable b = term b
>                 match a.ty.range with
>                 | Some(a,a') -> for i=a to a' do b <- b -. i
>                 | None -> ()
>                 s + a + b
>                 ) (ty a) b
>     and ty = function
>         | TExists | TJoinPoint' _ | TForall' _ | TArrow' _ | TSymbol _ | TPrim _
> | TNominal _ | TLit _ | TB _ -> empty
>         | TTypecase(_,a,b) -> 
>             List.fold (fun s (a,b) -> 
>                 let a = ty a
>                 let mutable b = ty b
>                 match a.ty.range with
>                 | Some(a,a') -> for i=a to a' do b <- b -. i
>                 | None -> ()
>                 s + a + b
>                 ) (ty a) b
>         | TPatternRef a -> ty a.Value
>         | TV i -> singleton_ty i
>         | TMetaV i -> {empty with ty = {|empty.ty with range = Some(i,i)|} }
>         | TApply(_,a,b) | TPair(_,a,b) | TFun(a,b,_) -> ty a + ty b
>         | TUnion(_,(a,_)) -> a |> Map.fold (fun s k (a,b) -> s + ty a + 
> (Option.map ty b |> Option.defaultValue empty)) empty
>         | TRecord(_,a) -> Map.fold (fun s k v -> s + ty v) empty a
>         | TModule a -> Map.fold (fun s k v -> s + ty v) empty a
>         | TTerm(_,a) -> term a
>         | TMacro(_,a) -> a |> List.fold (fun s -> function TMText _ -> s | 
> TMLitType x | TMType x -> s + ty x) empty
>         | TForall(_,i,a) | TArrow(i,a) as x -> scope x (ty a -. i)
>         | TJoinPoint(_,a) as x -> scope x (ty a)
>         | TArray(a) | TLayout(a,_) -> ty a
>     
>     let _ = match x with Choice1Of2 x -> term x | Choice2Of2 x -> ty x
>     scope_dict
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### ResolveEnvValue
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type ResolveEnvValue = {|term : Set<Id>; ty : Set<Id> |}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### ResolveEnv
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type ResolveEnv = Map<int, ResolveEnvValue>
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### resolve_recursive_free_vars
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let resolve_recursive_free_vars env =
>     Map.fold (fun (env : ResolveEnv) k v ->
>         let has_visited = HashSet()
>         let rec f (s : ResolveEnvValue) k v = 
>             if has_visited.Add(k) then 
>                 let s = Set.fold (fun s k -> if k < 0 then f s k env.[[k]] else 
> {|s with term = Set.add k s.term|}) s v.term
>                 Set.fold (fun s k -> {|s with ty = Set.add k s.ty|}) s v.ty
>             else s
>         Map.add k (f {|term=Set.empty; ty=Set.empty|} k v) env
>         ) env env
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### resolve
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let resolve (scope : Dictionary<obj,PropagatedVars>) x =
>     let dict = Dictionary(HashIdentity.Reference)
>     let subst' (env : ResolveEnv) (x : PropagatedVars) : PropagatedVars = 
>         let f (s : ResolveEnvValue) x = 
>             if x < 0 then 
>                 match Map.tryFind x env with 
>                 | Some x -> {|term=Set.union s.term x.term; ty=Set.union s.ty 
> x.ty|}
>                 | None -> {|s with term=Set.add x s.term|}
>             else {|s with term=Set.add x s.term|}
>         let fv = Set.fold f {|term=Set.empty; ty=Set.empty|} x.term.vars
>         {term = {|x.term with vars = fv.term|}; ty = {|x.ty with vars = 
> Set.union fv.ty x.ty.vars|} }
>     let subst env (x : obj) = match scope.TryGetValue(x) with true, v -> 
> scope.[[x]] <- subst' env v | _ -> ()
>     let rec term (env : ResolveEnv) x =
>         let f = term env
>         match x with
>         | EForall' _ | EFun' _ | ERecursiveForall' _ | ERecursiveFun' _ | 
> ERecursive _ | EJoinPoint' _ | EModule _ | EV _ | ESymbol _ | ELit _ | EB _ -> 
> ()
>         | EPatternRef a -> f a.Value
>         | EDefaultLit(_,_,a) | EPrototypeApply(_,_,a) | EType(_,a) | 
> ETypePatternMiss a -> ty env a
>         | EJoinPoint(_,a,b,_,_) | EFun(_,_,a,b) -> subst env x; f a; Option.iter
> (ty env) b
>         | EForall(_,_,a) -> subst env x; f a
>         | ERecBlock(r,a,b) ->
>             // Goes over all the functions in a recursive block, resolving them.
>             // The reason why this is sound is because the outer blocks are 
> progressively resolved as they go in.
>             let env = 
>                 let l =
>                     List.fold (fun s (id,body) ->
>                         let x = subst' env scope.[[body]]
>                         Map.add id {|term=x.term.vars; ty=x.ty.vars|} s
>                         ) Map.empty a
>                     |> resolve_recursive_free_vars
>                 Map.foldBack Map.add l env
>             a |> List.iter (fun (id,body) ->
>                 scope.[[body]] <- 
>                     let x = env.[[id]]
>                     let v = scope.[[body]]
>                     {term = {|v.term with vars = x.term |}; ty = {|v.ty with 
> vars=x.ty|} }
>                 term env body
>                 )
>             term env b
>         | ERecordWith(_,a,b,c) ->
>             List.iter (snd >> f) a
>             b |> List.iter (function
>                 | RSymbolModify(_,a) | RSymbol(_,a) -> f a
>                 | RVarModify((_,a),b) | RVar((_,a),b) -> f a; f b)
>             c |> List.iter (function 
>                 | WSymbol _ -> ()
>                 | WVar(_,a) -> f a)
>         | ENominal(_,a,b) | ETypeApply(_,a,b) | EAnnot(_,a,b) -> f a; ty env b
>         | EOp(_,_,a) -> List.iter f a
>         | EExists(_,a,b) -> List.iter (ty env) a; f b 
>         | EPatternMiss a | EReal(_,a) -> f a
>         | EArray(_,a,b) -> List.iter f a; ty env b
>         | EExistsTest(_,_,_,_,a,b)
>         | EUnitTest(_,_,a,b) | ESymbolTest(_,_,_,a,b) | EPairTest(_,_,_,_,a,b) |
> ELitTest(_,_,_,a,b)
>         | ELet(_,_,a,b) | EIfThen(_,a,b) | EPair(_,a,b) | ESeq(_,a,b) | 
> EApply(_,a,b) -> f a; f b
>         | EMutableSet(_,a,b,c) -> f a; List.iter (snd >> f) b; f c
>         | EUnbox(_,_,_,a,b,c) | EIfThenElse(_,a,b,c) -> f a; f b; f c
>         | EMacro(_,a,b) ->
>             a |> List.iter (function MLitType a | MType a -> ty env a | MTerm a 
> -> f a | MText _ -> ())
>             ty env b
>         | EPatternMemo a -> memoize dict f a
>         | ERecordTest(_,l,_,a,b) -> 
>             l |> List.iter (function Symbol _ -> () | Var((_,a),_) -> f a)
>             f a; f b
>         | EDefaultLitTest(_,_,t,_,a,b) | ENominalTest(_,t,_,_,a,b) | 
> EAnnotTest(_,t,_,a,b) -> ty env t; f a; f b
>         | ETypecase(_,a,b) -> ty env a; b |> List.iter (fun (a,b) -> ty env a; 
> term env b)
> 
>     and ty (env : ResolveEnv) x = 
>         let f = ty env
>         match x with
>         | TExists | TJoinPoint' _ | TForall' _ | TArrow' _ | TNominal _ | TPrim 
> _ | TSymbol _ | TV _ | TMetaV _ | TLit _ | TB _ -> ()
>         | TTypecase(_,a,b) -> ty env a; b |> List.iter (fun (a,b) -> ty env a; 
> ty env b)
>         | TPatternRef a -> f a.Value
>         | TForall(_,_,a)
>         | TArrow(_,a) -> subst env x; f a
>         | TApply(_,a,b) | TFun(a,b,_) | TPair(_,a,b) -> f a; f b
>         | TUnion(_,(a,_)) -> a |> Map.iter (fun _ (a,b) -> f a; Option.iter f b)
>         | TRecord(_,a) -> Map.iter (fun _ -> f) a
>         | TModule a -> Map.iter (fun _ -> f) a
>         | TTerm(_,a) -> term env a
>         | TMacro(_,a) -> a |> List.iter (function TMText _ -> () | TMLitType a |
> TMType a -> f a)
>         | TJoinPoint(_,a) | TLayout(a,_) | TArray(a) -> f a
> 
>     match x with
>     | Choice1Of2 x -> term Map.empty x
>     | Choice2Of2 x -> ty Map.empty x
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### LowerSubEnv
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type LowerSubEnv = {|var : Map<int,int>; adj : int|}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### LowerEnv
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type LowerEnv = {term : LowerSubEnv; ty : LowerSubEnv }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### LowerEnvRec
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type LowerEnvRec = Map<int,LowerEnv -> E>
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### lower
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let lower (scope : Dictionary<obj,PropagatedVars>) x =
>     let dict = Dictionary(HashIdentity.Reference)
>     let scope (env : LowerEnv) x =
>         let v = scope.[[x]]
>         let fv v env = v |> Set.toArray |> Array.map (fun i -> Map.find i env)
>         let sz = function Some(min',max') -> max' - min' + 1 | None -> 0
>         let scope : Scope = {
>             term = {|free_vars = fv v.term.vars env.term.var; stack_size = sz 
> v.term.range|}
>             ty = {|free_vars = fv v.ty.vars env.ty.var; stack_size = sz 
> v.ty.range|}
>             }
> 
>         let vars v = Set.fold (fun (s,i) x -> Map.add x i s,i+1) (Map.empty, 0) 
> v |> fst
>         let adj len = function Some(min',_) -> len - min' | None -> 0
>         let env : LowerEnv = {
>             term = {|var = vars v.term.vars; adj = adj 
> scope.term.free_vars.Length v.term.range|}
>             ty = {|var = vars v.ty.vars; adj = adj scope.ty.free_vars.Length 
> v.ty.range|}
>             }
> 
>         scope, env
> 
>     let adj_term (env : LowerEnv) i = 
>         let i' = i + env.term.adj
>         i', {env with term = {|env.term with var = Map.add i i' env.term.var|}}
>     let adj_ty (env : LowerEnv) i =
>         let i' = i + env.ty.adj
>         i', {env with ty = {|env.ty with var = Map.add i i' env.ty.var|}}
> 
>     let rec term (env_rec : LowerEnvRec) (env : LowerEnv) x = 
>         let f = term env_rec env
>         let g = ty env_rec
>         match x with
>         | EForall' _ | EJoinPoint' _ | EFun' _ | ERecursiveForall' _ | 
> ERecursiveFun' _ | ERecursive _ | EModule _ | ESymbol _ | ELit _ | EB _ -> x
>         | EPatternRef a -> f a.Value
>         | EFun(r,pat,body,t) -> 
>             let scope, env = scope env x 
>             let pat, env = adj_term env pat
>             assert (scope.term.free_vars.Length = pat)
>             EFun'(r,scope,pat,term env_rec env body,Option.map (g env) t)
>         | EForall(r,pat,body) ->
>             let scope, env = scope env x 
>             let pat, env = adj_ty env pat
>             assert (scope.ty.free_vars.Length = pat)
>             EForall'(r,scope,pat,term env_rec env body)
>         | EJoinPoint(r,body,t,q,name) ->
>             let scope, env = scope env x 
>             EJoinPoint'(r,scope,term env_rec env body,Option.map (g env) 
> t,q,name)
>         | EV i when 0 <= i -> EV env.term.var.[[i]]
>         | EV i -> env_rec.[[i]] env
>         | EDefaultLit(r,a,b) -> EDefaultLit(r,a,g env b)
>         | EType(r,a) -> EType(r,g env a)
>         | ETypePatternMiss a -> ETypePatternMiss(g env a)
>         | EApply(r,a,b) -> EApply(r,f a,f b)
>         | ETypeApply(r,a,b) -> ETypeApply(r,f a,g env b)
>         | ENominal(r,a,b) -> ENominal(r,f a,g env b)
>         | ERecBlock(r,a,b) ->
>             let l,env_rec =
>                 List.mapFold (fun (env_rec : LowerEnvRec) (i,body) ->
>                     let re = ref Unchecked.defaultof<_>
>                     let eval env_rec = 
>                         let _,env = scope env body
>                         re.Value <-
>                             match body with
>                             | EFun(_,i,body,_) ->
>                                 let _,env = adj_term env i
>                                 term env_rec env body
>                             | EForall(_,i,body) -> 
>                                 let _,env = adj_ty env i
>                                 term env_rec env body
>                             | _ -> failwith "Compiler error: Expected a fun or a
> forall."
>                     let body env =
>                         let scope,env = scope env body
>                         match body with
>                         | EFun(r,i,_,d) -> 
>                             let i,_ = adj_term env i
>                             ERecursiveFun'(r,scope,i,re,d)
>                         | EForall(r,i,_) -> 
>                             let i,_ = adj_ty env i
>                             ERecursiveForall'(r,scope,i,re)
>                         | _ -> failwith "Compiler error: Expected a fun or a 
> forall."
>                     eval,Map.add i body env_rec
>                     ) env_rec a
>             List.iter (fun eval -> eval env_rec) l
>             term env_rec env b
>         | ERecordWith(r,a,b,c) ->
>             let a = List.map (fun (r,a) -> r, f a) a
>             let b = b |> List.map (function
>                 | RSymbol(a,b) -> RSymbol(a,f b)
>                 | RSymbolModify(a,b) -> RSymbolModify(a,f b)
>                 | RVar((r,a),b) -> RVar((r,f a),f b)
>                 | RVarModify((r,a),b) -> RVarModify((r,f a),f b)
>                 )
>             let c = c |> List.map (function
>                 | WSymbol _ as x -> x
>                 | WVar(r,a) -> WVar(r,f a)
>                 )
>             ERecordWith(r,a,b,c)
>         | EOp(r,a,b) -> EOp(r,a,List.map f b)
>         | EAnnot(r,a,b) -> EAnnot(r,f a,g env b)
>         | EIfThenElse(r,a,b,c) -> EIfThenElse(r,f a,f b,f c)
>         | EIfThen(r,a,b) -> EIfThen(r,f a,f b)
>         | EArray(r,a,b) -> EArray(r,List.map f a, g env b)
>         | EPair(r,a,b) -> EPair(r,f a,f b)
>         | ESeq(r,a,b) -> ESeq(r,f a,f b)
>         | EMutableSet(r,a,b,c) -> EMutableSet(r,f a,List.map (fun (a,b) -> a, f 
> b) b,f c)
>         | EPatternMiss a -> EPatternMiss(f a)
>         | EReal(r,a) -> EReal(r,f a)
>         | EExists(r,a,b) -> EExists(r,List.map (g env) a,f b)
>         | EMacro(r,a,b) -> 
>             let a = a |> List.map (function
>                 | MText _ as x -> x
>                 | MLitType a -> MLitType(g env a)
>                 | MType a -> MType(g env a)
>                 | MTerm a -> MTerm(f a)
>                 )
>             EMacro(r,a,g env b)
>         | EPrototypeApply(r,a,b) -> EPrototypeApply(r,a,g env b)
>         | EPatternMemo x -> memoize dict f x
>         // Regular pattern matching
>         | ELet(r,pat,body,on_succ) -> 
>             let body = term env_rec env body
>             let pat,env = adj_term env pat
>             let on_succ = term env_rec env on_succ
>             ELet(r,pat,body,on_succ)
>         | EUnbox(r,q,pat,body,on_succ,on_fail) ->
>             let body = term env_rec env body
>             let on_fail = term env_rec env on_fail
>             let pat,env = adj_term env pat
>             let on_succ = term env_rec env on_succ
>             EUnbox(r,q,pat,body,on_succ,on_fail)
>         | EPairTest(r,i,pat1,pat2,on_succ,on_fail) -> 
>             let on_fail = term env_rec env on_fail
>             let i = env.term.var.[[i]]
>             let pat1,env = adj_term env pat1
>             let pat2,env = adj_term env pat2
>             let on_succ = term env_rec env on_succ
>             EPairTest(r,i,pat1,pat2,on_succ,on_fail)
>         | EExistsTest(r,i,pat_type,pat,on_succ,on_fail) -> 
>             let on_fail = term env_rec env on_fail
>             let i = env.term.var.[[i]]
>             let pat,env = adj_term env pat
>             let pat_type,env = Array.mapFold adj_ty env pat_type
>             let on_succ = term env_rec env on_succ
>             EExistsTest(r,i,pat_type,pat,on_succ,on_fail)
>         | ESymbolTest(r,a,i,on_succ,on_fail) -> 
>             let on_fail = term env_rec env on_fail
>             let i = env.term.var.[[i]]
>             let on_succ = term env_rec env on_succ
>             ESymbolTest(r,a,i,on_succ,on_fail)
>         | ERecordTest(r,a,i,on_succ,on_fail) ->
>             let on_fail = term env_rec env on_fail
>             let b = env.term.var.[[i]]
>             let a, env = 
>                 List.mapFold (fun env x ->
>                     match x with
>                     | Symbol(a,b) -> let b,env = adj_term env b in Symbol(a,b), 
> env
>                     | Var((r,a),b) -> let b,env = adj_term env b in Var((r,f 
> a),b), env
>                     ) env a
>             ERecordTest(r,a,b,term env_rec env on_succ,on_fail)
>         | EAnnotTest(r,a,i,on_succ,on_fail) -> EAnnotTest(r,g env 
> a,env.term.var.[[i]],f on_succ,f on_fail)
>         | ELitTest(r,a,i,on_succ,on_fail) -> ELitTest(r,a,env.term.var.[[i]],f 
> on_succ,f on_fail)
>         | EUnitTest(r,i,on_succ,on_fail) -> EUnitTest(r,env.term.var.[[i]],f 
> on_succ,f on_fail)
>         | ENominalTest(r,a,i,pat,on_succ,on_fail) ->
>             let on_fail = term env_rec env on_fail
>             let i = env.term.var.[[i]]
>             let pat, env = adj_term env pat
>             let on_succ = term env_rec env on_succ
>             ENominalTest(r,g env a,i,pat,on_succ,on_fail)
>         | EDefaultLitTest(r,a,b,i,on_succ,on_fail) -> EDefaultLitTest(r,a,g env 
> b,env.term.var.[[i]],f on_succ,f on_fail)
>         | ETypecase(r,a,b) -> 
>             let b = b |> List.map (fun (a,b) -> 
>                 let metavars = Dictionary()
>                 let mutable env_case = env
>                 let a = 
>                     ty' (memoize metavars (fun i ->
>                         let i, env = adj_ty env_case i
>                         env_case <- env
>                         TMetaV i
>                         )) env_rec env_case a
>                 a, term env_rec env_case b
>                 )
>             ETypecase(r,g env a,b)
>     and ty env_rec env x = ty' (fun _ -> failwith "Compiler error: TMetaV should
> not appear here.") env_rec env x
>     and ty' case_tmetav env_rec env x =
>         let f = ty' case_tmetav env_rec env
>         match x with
>         | TMetaV i -> case_tmetav i
>         | TExists | TJoinPoint' _ | TForall' _ | TArrow' _ | TNominal  _ | TPrim
> _ | TSymbol _ | TLit _ | TB _ as x -> x
>         | TTypecase(r,a,b) -> 
>             let b = b |> List.map (fun (a,b) -> 
>                 let metavars = Dictionary()
>                 let mutable env_case = env
>                 let a = 
>                     ty' (memoize metavars (fun i ->
>                         let i, env = adj_ty env_case i
>                         env_case <- env
>                         TMetaV i
>                         )) env_rec env_case a
>                 a, ty env_rec env_case b
>                 )
>             TTypecase(r,ty env_rec env a,b)
>         | TPatternRef a -> f a.Value
>         | TJoinPoint(r,a) as x ->
>             let scope, env = scope env x
>             TJoinPoint'(r,scope,ty env_rec env a)
>         | TForall(r,a,b) as x ->  
>             let scope, env = scope env x
>             let a, env = adj_ty env a
>             TForall'(r,scope,a,ty env_rec env b)
>         | TArrow(a,b) as x ->  
>             let scope, env = scope env x
>             let a, env = adj_ty env a
>             TArrow'(scope,a,ty env_rec env b)
>         | TV i -> TV(env.ty.var.[[i]])
>         | TPair(r,a,b) -> TPair(r,f a,f b)
>         | TFun(a,b,t) -> TFun(f a,f b,t)
>         | TRecord(r,a) -> TRecord(r,Map.map (fun _ -> f) a)
>         | TModule a -> TModule(Map.map (fun _ -> f) a)
>         | TUnion(r,(a,b)) -> TUnion(r,(Map.map (fun _ (a,b) -> f a, Option.map f
> b) a,b))
>         | TApply(r,a,b) -> TApply(r,f a,f b)
>         | TTerm(r,a) -> TTerm(r,term env_rec env a)
>         | TMacro(r,a) ->
>             let a = a |> List.map (function 
>                 | TMText _ as x -> x
>                 | TMType a -> TMType(f a)
>                 | TMLitType a -> TMLitType(f a)
>                 )
>             TMacro(r,a)
>         | TArray(a) -> TArray(f a)
>         | TLayout(a,b) -> TLayout(f a,b)
>     let env : LowerEnv = {
>         term = {|var = Map.empty; adj = 0|}
>         ty = {|var = Map.empty; adj = 0|}
>         }
>     match x with
>     | Choice1Of2(x,ret) -> ret (term Map.empty env x)
>     | Choice2Of2(x,ret) -> ret (ty Map.empty env x)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### Env___
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Env___ = {
>     term : {| env : Map<string,E>; i : Id; i_rec : Id |}
>     ty : {| env : Map<string,TPrepass>; i : Id |}
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### PartEvalPrepassEnv
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type PartEvalPrepassEnv = Env___
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### add_term
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let add_term (e : PartEvalPrepassEnv) k v = let term = e.term in {e with term = 
> {|term with i = term.i+1; env = Map.add k v term.env|} }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### add_term_rec
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let add_term_rec (e : PartEvalPrepassEnv) k v = let term = e.term in {e with 
> term = {|term with i_rec = term.i_rec-1; env = Map.add k v term.env|} }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### add_ty
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let add_ty (e : PartEvalPrepassEnv) k v = let ty = e.ty in {e with ty = {|ty 
> with i = ty.i+1; env = Map.add k v ty.env|} }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### add_wildcard
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let add_wildcard (e : PartEvalPrepassEnv) = let ty = e.ty in {e with ty = {|ty 
> with i = ty.i+1|} }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### add_term_var
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let add_term_var (e : PartEvalPrepassEnv) k = e.term.i, add_term e k (EV 
> e.term.i)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### fresh_term_var
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let fresh_term_var (e : PartEvalPrepassEnv) = e.term.i, (let term = e.term in {e
> with term = {|term with i = term.i+1|} })
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### fresh_ty_var
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let fresh_ty_var (e : PartEvalPrepassEnv) = e.ty.i, (let ty = e.ty in {e with ty
> = {|ty with i = ty.i+1|} })
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### add_term_rec_var
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let add_term_rec_var (e : PartEvalPrepassEnv) k = e.term.i_rec, add_term_rec e k
> (EV e.term.i_rec)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### add_ty_var
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let add_ty_var (e : PartEvalPrepassEnv) k = e.ty.i, add_ty e k (TV e.ty.i)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### add_ty_wildcard
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let add_ty_wildcard (e : PartEvalPrepassEnv) = e.ty.i, add_wildcard e
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### process_term
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let process_term (x : E) =
>     let scope = propagate (Choice1Of2 x)
>     resolve scope (Choice1Of2 x)
>     lower scope (Choice1Of2(x,id))
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### process_ty
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let process_ty (x : TPrepass) =
>     let scope = propagate (Choice2Of2 x)
>     resolve scope (Choice2Of2 x)
>     lower scope (Choice2Of2(x,id))
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### module_openPrepass
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let module_openPrepass (top_env : PrepassTopEnv) env a l =
>     let a,b = 
>         match top_env.term.[[snd a]], top_env.ty.[[snd a]] with
>         | EModule a, TModule b ->
>             List.fold (fun (a,b) (_,x) ->
>                 match Map.find x a, Map.find x b with
>                 | EModule a, TModule b -> a,b
>                 | _ -> failwith "Compiler error: Module open's symbol index 
> should have been validated."
>                 ) (a,b) l
>         | _ -> failwith "Compiler error: Module open should have been 
> validated."
>     {
>     term = {|env.term with env = Map.foldBack Map.add a env.term.env|}
>     ty = {|env.ty with env = Map.foldBack Map.add b env.ty.env|}
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### prepassPrepass
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let prepassPrepass package_id module_id path (top_env : PrepassTopEnv) =
>     let p r = {path=path; range=r}
>     let at_tag i = { package_id = package_id; module_id = module_id; tag = i }
>     let v_term (env : PartEvalPrepassEnv) x = Map.tryFind x env.term.env |> 
> Option.defaultWith (fun () -> top_env.term.[[x]])
>     let v_ty (env : PartEvalPrepassEnv) x = Map.tryFind x env.ty.env |> 
> Option.defaultWith (fun () -> top_env.ty.[[x]])
>     
>     // The functions in this block are basically renaming string id to int ids, 
> in addition to pattern compilation.
>     let rec compile_pattern (id : Id) (env : PartEvalPrepassEnv) (clauses : 
> (Pattern * RawExpr) list) =
>         let mutable term_var_count = env.term.i
>         let mutable ty_var_count = env.ty.i
>         let patvar () = let x = term_var_count in term_var_count <- 
> term_var_count+1; x
>         let ty_patvar () = let x = ty_var_count in ty_var_count <- 
> ty_var_count+1; x
>         let loop (pat, on_succ) on_fail =
>             let mutable dict = Map.empty
>             let mutable dict_type = Map.empty
>             let pat_refs_term = ResizeArray()
>             //let pat_ref_term x = let re = ref Unchecked.defaultof<_> in 
> pat_refs_term.Add(x,dict,re); EPatternRef re
>             let pat_ref_term' x k =
>                 let re = ref Unchecked.defaultof<_>
>                 let r = k (EPatternRef re)
>                 pat_refs_term.Add(x,(dict,dict_type),re)
>                 r
>             let pat_refs_ty = ResizeArray()
>             let pat_ref_ty x = let re = ref Unchecked.defaultof<_> in 
> pat_refs_ty.Add(x,(dict,dict_type),re); TPatternRef re
>             let rec cp id pat on_succ on_fail =
>                 let v x =
>                     match Map.tryFind x dict with
>                     | Some x -> x
>                     | None -> let v = patvar() in dict <- Map.add x v dict; v
>                 let tv x =
>                     match Map.tryFind x dict_type with
>                     | Some x -> x
>                     | None -> let v = ty_patvar() in dict_type <- Map.add x v 
> dict_type; v
>                 let step pat on_succ =
>                     match pat with
>                     | PatVar(_,x) -> v x, on_succ
>                     | _ -> let id = patvar() in id, cp id pat on_succ on_fail
>                 match pat with
>                 | PatDefaultValue _ -> failwith "Compiler error: The default 
> value should be filled."
>                 | PatE _ -> on_succ
>                 | PatB r -> EUnitTest(p r,id,on_succ,on_fail)
>                 | PatVar(r,a) -> ELet(p r,v a,EV id,on_succ)
>                 | PatAnnot(r,a,b) -> EAnnotTest(p r,pat_ref_ty b,id,cp id a 
> on_succ on_fail,on_fail)
>                 | PatPair(r,a,b) -> 
>                     // Evaling the b then a causes the call args to be rotated 
> in join points during peval. 
>                     // This is not a problem, but it might be surprising if you 
> aren't aware why that is happening.
>                     // Swapping the next two statements would fix it for pairs.
>                     let b,on_succ = step b on_succ
>                     let a,on_succ = step a on_succ
>                     EPairTest(p r,id,a,b,on_succ,on_fail)
>                 | PatExists(r,l,b) -> 
>                     let pat_type = List.map (snd >> tv) l |> List.toArray
>                     let pat,on_succ = step b on_succ
>                     EExistsTest(p r,id,pat_type,pat,on_succ,on_fail)
>                 | PatArray(r,a) ->
>                     let r = p r
>                     let ar_ids,on_succ = List.mapFoldBack step a on_succ
>                     let a_length = List.length a
>                     let on_succ,_ = 
>                         List.foldBack (fun id' (on_succ,i) -> 
>                             ELet(r,id',EOp(r,ArrayIndex,[[EV id; ELit(r,LitInt32
> i)]]),on_succ), i-1
>                             ) ar_ids (on_succ, a_length - 1)
>                     let id_length = EOp(r,ArrayLength,[[EType(r,TPrim UInt64T); 
> EV id]])
>                     let pat_length = ELit(r,LitUInt64(uint64 a_length))
>                     
> EIfThenElse(r,EOp(r,EQ,[[id_length;pat_length]]),on_succ,on_fail)
>                 | PatSymbol(r,a) -> ESymbolTest(p r,a,id,on_succ,on_fail)
>                 | PatRecordMembers(r,items) ->
>                     let inject_vars = Dictionary(HashIdentity.Reference)
>                     List.iter (function
>                         | PatRecordMembersSymbol _ -> ()
>                         | PatRecordMembersInjectVar((_,var),_) -> 
>                             match dict.TryGetValue(var) with
>                             | true, x -> inject_vars.[[var]] <- EV x
>                             | _ -> inject_vars.[[var]] <- v_term env var
>                         ) items
>                     let binds, on_succ =
>                         List.mapFoldBack (fun item on_succ ->
>                             match item with
>                             | PatRecordMembersSymbol((r,keyword),name) -> let 
> arg, on_succ = step name on_succ in Symbol((p r,keyword),arg), on_succ
>                             | PatRecordMembersInjectVar((r,var),name) -> let 
> arg, on_succ = step name on_succ in Var((p r,inject_vars.[[var]]),arg), on_succ
>                             ) items on_succ
>                     ERecordTest(p r,binds,id,on_succ,on_fail)
>                 | PatOr(r,a,b) -> let on_succ = EPatternMemo on_succ in cp id a 
> on_succ (cp id b on_succ on_fail)
>                 | PatAnd(r,a,b) -> let on_fail = EPatternMemo on_fail in cp id a
> (cp id b on_succ on_fail) on_fail
>                 | PatValue(r,x) -> ELitTest(p r,x,id,on_succ,on_fail)
>                 | PatWhen(r,p',e) -> pat_ref_term' e (fun e -> cp id p' 
> (EIfThenElse(p r, e, on_succ, on_fail)) on_fail)
>                 | PatNominal(r,(_,a),l,b) -> 
>                     let id', on_succ = step b on_succ
>                     let a = List.fold (fun s (r',x) -> TApply(p (r +. 
> r'),s,TSymbol(p r',x))) (v_ty env a) l
>                     ENominalTest(p r,a,id,id',on_succ,on_fail)
>                 | PatFilledDefaultValue(r,a,b) -> EDefaultLitTest(p 
> r,a,pat_ref_ty b,id,on_succ,on_fail)
>                 | PatDyn(r,a) -> let id' = patvar() in ELet(p r,id',EOp(p 
> r,Dyn,[[EV id]]),cp id' a on_succ on_fail)
>                 | PatUnbox(r,q,a) -> let id' = patvar() in EUnbox(p r,q,id',EV 
> id,cp id' a on_succ on_fail,on_fail)
>             (pat_refs_term, pat_refs_ty), pat_ref_term' on_succ (fun on_succ -> 
> cp id pat on_succ (EPatternMemo on_fail))
> 
>         let l, e = List.mapFoldBack loop clauses (EPatternMiss(EV id))
>         l |> List.iter (fun (terms,tys) -> // The reason I am not evaling it in 
> place is because of the var count which is mutable. I need to deal with the 
> patterns first before replacing the strings in the body.
>             let env (dict,dict_type) = 
>                 {env with 
>                     term = {|env.term with i=term_var_count; env=dict |> 
> Map.fold (fun s k v -> Map.add k (EV v) s) env.term.env|} 
>                     ty = {|env.ty with i=ty_var_count; env=dict_type |> Map.fold
> (fun s k v -> Map.add k (TV v) s) env.ty.env|} 
>                     }
>             terms |> Seq.iter (fun (a,dict,b) -> b.Value <- term (env dict) a)
>             tys |> Seq.iter (fun (a,dict,b) -> b.Value <- ty (env dict) a)
>             )
>         e
>     and pattern_match (env : PartEvalPrepassEnv) r body clauses =
>         match clauses with
>         | [[PatVar(_,x), on_succ]] ->
>             let id,env = add_term_var env x
>             ELet(r,id,body,term env on_succ)
>         | _ ->
>             let id,env = fresh_term_var env
>             ELet(r,id,body,compile_pattern id env clauses)
>     and pattern_function env r clauses annot =
>         match clauses with
>         | [[PatVar(_,x), on_succ]] ->
>             let id,env = add_term_var env x
>             EFun(r,id,term env on_succ,annot)
>         | _ ->
>             let id,env = fresh_term_var env
>             EFun(r,id,compile_pattern id env clauses,annot)
>     and ty env x = ty' (fun _ -> failwith "Compiler error: RawTMetaVar should 
> not appear here.") env x
>     and ty' case_metavar (env : PartEvalPrepassEnv) x =
>         let f = ty' case_metavar env
>         match x with
>         | RawTMetaVar(_,name) -> case_metavar (Some name)
>         | RawTWildcard _ -> case_metavar None
>         | RawTForall(r,a,b) ->
>             let id, env = add_ty_var env (typevar_name a)
>             TForall(p r,id,ty' case_metavar env b)
>         | RawTB r -> TB (p r)
>         | RawTLit (r, x) -> TLit(p r,x)
>         | RawTVar(r,a) -> v_ty env a
>         | RawTPair(r,a,b) -> TPair(p r,f a,f b)
>         | RawTFun(r,a,b,t) -> TFun(f a,f b,t)
>         | RawTExists(r,l,b) -> TExists
>         | RawTRecord(r,l) -> TRecord(p r,Map.map (fun _ -> f) l)
>         | RawTUnion(r,a,b,this) -> 
>             let rec subst_vars_with_metavars vars a =
>                 let f = subst_vars_with_metavars vars
>                 match a with
>                 | RawTTypecase _ | RawTUnion _ -> failwith "Compiler error: Not 
> expecting typecase or union here."
>                 | RawTVar(r,n) -> if List.contains n vars then RawTMetaVar(r,n) 
> else a
>                 | RawTPrim _ | RawTFilledNominal _ | RawTTerm _ | RawTSymbol _ |
> RawTLit _ | RawTMetaVar _ | RawTB _ | RawTWildcard _ -> a
>                 | RawTPair(r,a,b) -> RawTPair(r,f a,f b)
>                 | RawTFun(r,a,b,c) -> RawTFun(r,f a,f b,c)
>                 | RawTArray(r,a) -> RawTArray(r,f a)
>                 | RawTRecord(r,a) -> RawTRecord(r,Map.map (fun _ -> f) a)
>                 | RawTApply(r,a,b) -> RawTApply(r,f a,f b)
>                 | RawTForall(r,a,b) -> RawTForall(r,a,subst_vars_with_metavars 
> (List.removeAt (List.findIndex ((=) (typevar_name a)) vars) vars) b)
>                 | RawTExists(r,a,b) -> 
>                     let f vars a = List.removeAt (List.findIndex ((=) 
> (typevar_name a)) vars) vars
>                     RawTExists(r,a,subst_vars_with_metavars (List.fold f vars a)
> b)
>                 | RawTMacro(r,a) -> 
>                     let f = function (RawMacroText _ | RawMacroTerm _ | 
> RawMacroTypeLit _) as a -> a | RawMacroType(r,a) -> RawMacroType(r,f a)
>                     RawTMacro(r, List.map f a)
>                 | RawTLayout(r,a,b) -> RawTLayout(r,f a,b)
> 
>             let make_typecase x =
>                 let rec loop vars x =
>                     match x with
>                     | RawTForall(_,a,b) -> loop (typevar_name a :: vars) b
>                     | RawTFun(r,a,b,_) -> 
> RawTTypecase(r,this,[[subst_vars_with_metavars vars b,a]])
>                     | b -> let r = range_of_texpr b in 
> RawTTypecase(r,this,[[subst_vars_with_metavars vars b,RawTB r]])
>                 loop [[]] x |> f
>             TUnion(p r,(Map.map (fun _ (is_gadt,x) -> f x, if is_gadt then Some 
> (make_typecase x) else None) a,b))
>         | RawTTypecase(r,a,b) ->
>             let b = b |> List.map (fun (t,e) ->
>                 let metavars = Dictionary()
>                 let mutable env_case = env
>                 let t = 
>                     let f (id,env) = env_case <- env; TMetaV id
>                     ty' (function
>                         | None -> add_ty_wildcard env_case |> f
>                         | Some name -> memoize metavars (add_ty_var env_case >> 
> f) name
>                         ) env t
>                 t, ty env_case e
>                 )
>             TTypecase(p r,ty env a,b)
>         | RawTSymbol(r,a) -> TSymbol(p r,a)
>         | RawTApply(r,a,b) ->
>             match f a, f b with
>             | TRecord(_,a') & a, TSymbol(_,b') & b ->
> 
>                 match a' |> Map.tryPick (fun (_, k) v -> if k = b' then Some v 
> else None) with
>                 | Some x -> x
>                 | None -> TApply(p r,a,b) // TODO: Will be an error during 
> partial evaluation time. Could be substituted for an exception here, but I do 
> not want to have errors during the prepass.
>             | a,b -> TApply(p r,a,b)
>         | RawTPrim(r,a) -> TPrim(a)
>         | RawTTerm(r,a) -> TTerm(p r,term env a)
>         | RawTMacro(r,l) -> 
>             let f = function
>                 | RawMacroText(r,a) -> TMText a
>                 | RawMacroType(r,a) -> TMType(f a)
>                 | RawMacroTypeLit(r,a) -> TMLitType(f a)
>                 | RawMacroTerm _ -> failwith "Compiler error: Term vars should 
> not appear on the type level."
>             TMacro(p r,List.map f l)
>         | RawTArray(r,a) -> TArray(f a)
>         | RawTFilledNominal(r,a) -> TNominal a
>         | RawTLayout(r,a,b) -> TLayout(f a,b)
>     and term env x =
>         let f = term env
>         match x with
>         | RawDefaultLit(r,a) -> failwith "Compiler error: Default values should 
> have been annotated in `fill` by prepass time."
>         | RawAnnot(_,RawDefaultLit(r,a),b) -> EDefaultLit(p r,a,ty env b)
>         | RawAnnot(_,RawLit(r,a),b) -> EDefaultLit(p r,a.LitToString(),ty env b)
>         | RawB r -> EB(p r)
>         | RawV(r,a,_) -> v_term env a
>         | RawLit(r,a) -> ELit(p r,a)
>         | RawSymbol(r,a) -> ESymbol(p r,a)
>         | RawType(r,a) -> EType(p r,ty env a)
>         | RawMatch(r,a,b) -> pattern_match env (p r) (f a) b
>         | RawFun(r,a) -> pattern_function env (p r) a None
>         | RawAnnot(_,RawFun(r,a),t) -> pattern_function env (p r) a (Some (ty 
> env t))
>         | RawArray(r,a) -> failwith "Compiler error: The array should have been 
> annotated in `fill` by prepass time."
>         | RawAnnot(_,RawArray(r,a),b) -> EArray(p r,List.map f a,ty env b)
>         | RawTypecase(r,a,b) ->
>             let b = b |> List.map (fun (t,e) ->
>                 let metavars = Dictionary()
>                 let mutable env_case = env
>                 let t = 
>                     let f (id,env) = env_case <- env; TMetaV id
>                     ty' (function
>                         | None -> add_ty_wildcard env_case |> f
>                         | Some name -> memoize metavars (add_ty_var env_case >> 
> f) name
>                         ) env t
>                 t, term env_case e
>                 )
>             ETypecase(p r,ty env a,b)
>         | RawFilledForall(r,name,b)
>         | RawForall(r,((_,(name,_)),_),b) -> 
>             let id, env = add_ty_var env name
>             EForall(p r,id,term env b)
>         | RawRecBlock(r,l,on_succ) ->
>             let l,env = List.mapFold (fun env ((r,name),body) -> let id,env = 
> add_term_rec_var env name in (id,body), env) env l
>             ERecBlock(p r,List.map (fun (id,body) -> id, term env body) l,term 
> env on_succ)
>         | RawRecordWith(r,a,b,c) ->
>             let a = List.map (fun a -> p (range_of_expr a), f a) a
>             let b = b |> List.map (function
>                 | RawRecordWithSymbol((r,a),b) -> RSymbol((p r,a),f b)
>                 | RawRecordWithSymbolModify((r,a),b) -> RSymbolModify((p r,a),f 
> b)
>                 | RawRecordWithInjectVar((r,a),b) -> RVar((p r,v_term env a),f 
> b)
>                 | RawRecordWithInjectVarModify((r,a),b) -> RVarModify((p 
> r,v_term env a),f b))
>             let c = c |> List.map (function
>                 | RawRecordWithoutSymbol(r,a) -> WSymbol(p r,a)
>                 | RawRecordWithoutInjectVar(r,a) -> WVar(p r,v_term env a))
>             ERecordWith(p r,a,b,c)
>         | RawOp(r,a,b) -> EOp(p r,a,List.map f b)
>         | RawJoinPoint(r,q,a,name) -> EJoinPoint(p r,f a,None,Option.map (fun 
> (r',w) -> p r',w) q,name)
>         | RawAnnot(_,RawJoinPoint(r,q,a,name),b) -> EJoinPoint(p r,f a,Some (ty 
> env b),Option.map (fun (r',w) -> p r',w) q,name)
>         | RawOpen (_,a,l,on_succ) -> term (module_openPrepass top_env env a l) 
> on_succ
>         | RawApply(r,a,b) ->
>             let rec loop = function
>                 | EModule a' & a, EPair(_,ESymbol(_, b'),b'') & b ->
>                     match Map.tryFind b' a' with
>                     | Some a -> loop (a,b'')
>                     | None -> EApply(p r,a,b) // TODO: Will be an error during 
> partial evaluation time. Could be substituted for an exception here, but I do 
> not want to have errors during the prepass.
>                 | EModule a' & a, ESymbol(_,b') & b ->
>                     match Map.tryFind b' a' with
>                     | Some a -> a
>                     | None -> EApply(p r,a,b) // TODO: Ditto.
>                 | a,EType(_,b) -> ETypeApply(p r,a,b)
>                 | a,b -> EApply(p r,a,b)
>             loop (f a, f b)
>         | RawIfThenElse(r,a,b,c) -> EIfThenElse(p r,f a,f b,f c)
>         | RawIfThen(r,a,b) -> EIfThen(p r,f a,f b)
>         | RawPair(r,a,b) -> EPair(p r,f a,f b)
>         | RawSeq(r,a,b) -> ESeq(p r,f a,f b)
>         | RawHeapMutableSet(r,a,b,c) -> EMutableSet(p r,f a,List.map (fun a -> p
> (range_of_expr a), f a) b,f c)
>         | RawReal(r,a) -> f a
>         | RawExists(r,(_,Some a),b) -> EExists(p r, List.map (ty env) a, f b)
>         | RawExists(_,(_,None),_) -> failwith "Compiler error: The exists' vars 
> should have been added during `fill`."
>         | RawMacro _ -> failwith "Compiler error: The macro's annotation should 
> have been added during `fill`."
>         | RawAnnot(_,RawMacro(r,a),b) ->
>             let a = a |> List.map (function
>                 | RawMacroText(r,a) -> MText a
>                 | RawMacroTerm(r,a) -> MTerm(f a)
>                 | RawMacroType(r,a) -> MType(ty env a)
>                 | RawMacroTypeLit(r,a) -> MLitType(ty env a)
>                 )
>             EMacro(p r,a,ty env b)
>         | RawMissingBody _ -> failwith "Compiler error: The missing body cases 
> should have been validated."
>         | RawAnnot(r,a,b) -> EAnnot(p r,f a,ty env b)
> 
>     let env : PartEvalPrepassEnv =
>         {
>         term = {|env=Map.empty; i=0; i_rec= -1|}
>         ty = {|env=Map.empty; i=0|}
>         }
>         
>     let eval_type ((r,(name,kind)) : HoVar) on_succ env =
>         let id, env = add_ty_var env name
>         TArrow(id,on_succ env)
>     let eval_type' env l body = List.foldBack eval_type l body env |> process_ty
> 
>     {|
>     base_type = process_ty
>     filled_top = fun x ->
>         let nominal_rec l =
>             let env,_ = 
>                 List.fold (fun (env,i) (r,(_,name),l,body) -> 
>                     add_ty env name (TNominal (at_tag i)), i+1
>                     ) (env, top_env.nominals_next_tag) l
>             List.fold (fun (term,ty',nominals,i) (r, (_,name),l,body) -> 
>                 let r = p r
>                 let at_tag_i = at_tag i
>                 let nom = TNominal at_tag_i
>                 let bodyt = eval_type' env l (fun env -> TJoinPoint(p 
> (range_of_texpr body), ty env body))
>                 let term =
>                     match body with
>                     | RawTUnion(_,l,_,_) -> 
>                         Map.fold (fun term (_,name) (is_gadt,_) ->
>                             if is_gadt then
>                                 let rec loop_outer = function
>                                     | TArrow'(_,_,t) -> loop_outer t // GADTs 
> have the foralls in their cases' type, not here.
>                                     | TJoinPoint'(r,_,TUnion(_,(l,_))) -> 
>                                         let rec loop vars = function
>                                             | TForall'(r,scope,id,t) -> 
> EForall(r,id,loop (id :: vars) t)
>                                             | TFun(t,t',_) -> 
> EFun(r,0,ENominal(r,EPair(r,ESymbol(r,name),EV 
> 0),t'),Some(TFun(t,t',FT_Vanilla)))
>                                             | t' -> 
> ENominal(r,EPair(r,ESymbol(r,name),EB r),t')
>                                         let t = l |> Map.pick (fun (_, k) v -> 
> if k = name then Some v else None) |> fst
>                                         loop [[]] t
>                                     | _ -> failwith "Compiler error: Expected a 
> join point with a gadt union."
>                                 Map.add name (loop_outer bodyt |> process_term) 
> term
>                             else
>                                 let rec loop vars = function
>                                     | TArrow'(scope,id,t) -> EForall(r,id,loop 
> (id :: vars) t)
>                                     | TJoinPoint'(r,_,TUnion(_,(l,_))) -> 
>                                         let t = l |> Map.pick (fun (_, k) v -> 
> if k = name then Some v else None) |> fst
>                                         let t' = List.foldBack (fun id nom -> 
> TApply(r,nom,TV id)) vars nom
>                                         match t with
>                                         | TB _ -> 
> ENominal(r,EPair(r,ESymbol(r,name),EB r),t')
>                                         | _ -> 
> EFun(r,0,ENominal(r,EPair(r,ESymbol(r,name),EV 
> 0),t'),Some(TFun(t,t',FT_Vanilla)))
>                                     | _ -> failwith "Compiler error: Expected a 
> join point with an union."
>                                 Map.add name (loop [[]] bodyt |> process_term) 
> term
>                             ) term l
>                     | _ ->
>                         let rec loop vars = function
>                             | TArrow'(scope,id,t) -> EForall(r,id,loop (id :: 
> vars) t)
>                             | TJoinPoint'(r,_,t) -> 
>                                 let t' = List.foldBack (fun id nom -> 
> TApply(r,nom,TV id)) vars nom
>                                 match t with
>                                 | TB _ -> ENominal(r,EB r,t')
>                                 | _ -> EFun(r,0,ENominal(r,EV 
> 0,t'),Some(TFun(t,t',FT_Vanilla)))                                
>                             | _ -> failwith "Compiler error: Expected a join 
> point."
>                         Map.add name (loop [[]] bodyt |> process_term) term
>                 term,Map.add name nom ty', Map.add at_tag_i {|body=bodyt; 
> name=name|} nominals, i+1
>                 ) (Map.empty, Map.empty, Map.empty, top_env.nominals_next_tag) l
>         match x with
>         | FType(_,(_,name),l,body) -> AInclude {top_env_emptyPrepass with ty = 
> Map.add name (eval_type' env l (fun env -> ty env body)) Map.empty}
>         | FNominal(r,a,b,c) ->
>             let term,ty,nominals,i = nominal_rec [[r,a,b,c]]
>             AInclude {top_env_emptyPrepass with term = term; ty = ty; nominals =
> nominals; nominals_next_tag=i}
>         | FNominalRec l ->
>             let term,ty,nominals,i = nominal_rec l
>             AInclude {top_env_emptyPrepass with term = term; ty = ty; nominals =
> nominals; nominals_next_tag=i}
>         | FInl(_,(_,name),body) -> AInclude {top_env_emptyPrepass with term = 
> Map.add name (term env body |> process_term) Map.empty}
>         | FRecInl l ->
>             let l, env = 
>                 List.mapFold (fun env (_,(_,name),_ as x) -> 
>                     let r = ref Unchecked.defaultof<_>
>                     (x,r), add_term_rec env name (ERecursive r)
>                     ) env l
>             let term = 
>                 List.fold (fun top_env_term ((_,(_,name),body),(r : ref<E>)) ->
>                     r.Value <- term env body |> process_term
>                     Map.add name r.Value top_env_term
>                     ) Map.empty l
>             AInclude {top_env_emptyPrepass with term = term}
>         | FPrototype(r,(_,name),_,_,_) ->
>             let i = at_tag top_env.prototypes_next_tag
>             let r = p r
>             let x = EForall(r,0,EPrototypeApply(r,i,TV 0)) |> process_term
>             AInclude {top_env_emptyPrepass with term = Map.add name x Map.empty;
> prototypes_next_tag = i.tag+1}
>         | FInstance(_,(_,prot_id),(_,ins_id),body) ->
>             AInclude {top_env_emptyPrepass with prototypes_instances = Map.add 
> (prot_id,ins_id) (term env body |> process_term) Map.empty}
>         | FOpen(r,a,b) ->
>             let x = module_openPrepass top_env env a b
>             AOpen {top_env_emptyPrepass with term=x.term.env; ty=x.ty.env}
>     |}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### top_env_defaultPrepass
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let top_env_defaultPrepass default_env =
>     let convert_infer_to_prepass x = 
>         let m = Dictionary(HashIdentity.Reference)
>         let rec f = function
>             | TyVar (_,{contents=Some x}) -> f x
>             | TyVar (x,_) -> TV m.[[x.name]] 
>             | TyPrim x -> TPrim x
>             | TyArray x -> TArray (f x)
>             | TyLayout(a,b) -> TLayout(f a,b)
>             | TyInl(a,b) -> let i = m.Count in m.Add(a.name,i); TArrow(i,f b)
>             | TyFun(a,b,t) -> TFun(f a, f b, t)
>             | _ -> failwith "Compiler error: The base type in Infer is not 
> supported in the prepass yet."
>         f x
> 
>     List.fold (fun (top_env : PrepassTopEnv) (k, x) ->
>         {top_env with ty = Map.add k ((prepassPrepass -1 0 "<base_types>" 
> top_env).base_type (convert_infer_to_prepass x)) top_env.ty}
>         ) top_env_emptyPrepass (base_types default_env)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## PartEval
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> // #r 
> @"../../../../../../../.nuget/packages/softcircuits.ordereddictionary/3.2.0/lib/
> net8.0/SoftCircuits.OrderedDictionary.dll"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> // open System
> open System.Collections.Generic
> // open SoftCircuits.Collections
> // open Common
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### Tag
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Tag = int
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### L<'a,'b when 'a: equality and 'a: comparison>
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type [[<CustomComparison;CustomEquality>]] L<'a,'b when 'a: equality and 'a: 
> comparison> = 
>     | L of 'a * 'b
> 
>     override a.Equals(b) =
>         match b with
>         | :? L<'a,'b> as b -> match a,b with L(a,_), L(b,_) -> a = b
>         | _ -> false
>     override a.GetHashCode() = match a with L(a,_) -> hash a
>     interface System.IComparable with
>         member a.CompareTo(b) =
>             match b with
>             | :? L<'a,'b> as b -> match a,b with L(a,_), L(b,_) -> compare a b
>             | _ -> raise <| System.ArgumentException "Invalid comparison for T."
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### H<'a when 'a : equality>
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type H<'a when 'a : equality>(x : 'a) = 
>     let h = hash x
> 
>     member _.Item = x
>     override _.Equals(b) =
>         match b with
>         | :? H<'a> as b -> System.Object.ReferenceEquals(x,b.Item)
>         | _ -> false
>     override _.GetHashCode() = h
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### StackSize
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type StackSize = int
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### Nominal
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Nominal = {|body : TPrepass; id : GlobalId; name : string|} ConsedNode // 
> TODO: When the time comes to implement incremental compilation, make the `body` 
> field a weak reference.
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### PartEvalMacro
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type PartEvalMacro = Text of string | Type of Ty | TypeLit of Ty
> and Ty =
>     | YVoid
>     | YB
>     | YLit of Literal
>     | YSymbol of string
>     | YPair of Ty * Ty
>     | YTypeFunction of body : TPrepass * ty : Ty [[]] * term_stack_size : 
> StackSize * ty_stack_size : StackSize
>     | YExists
>     | YForall
>     | YRecord of Map<int * string, Ty>
>     | YPrim of PrimitiveType
>     | YArray of Ty
>     | YFun of Ty * Ty * FunType
>     | YMacro of PartEvalMacro list
>     | YNominal of Nominal
>     | YApply of Ty * Ty
>     | YLayout of Ty * Layout
>     | YUnion of Union
>     | YMetavar of Id
> and Data =
>     | DB
>     | DSymbol of string
>     | DTLit of Literal
>     | DPair of Data * Data
>     | DFunction of body : E * annot : TPrepass option * term : Data [[]] * ty : 
> Ty [[]] * term_stack_size : StackSize * ty_stack_size : StackSize
>     | DForall of body : E * term : Data [[]] * ty : Ty [[]] * term_stack_size : 
> StackSize * ty_stack_size : StackSize
>     | DExists of vars_type : Ty [[]] * term : Data
>     | DRecord of Map<int * string, Data>
>     | DLit of Literal
>     | DUnion of Data * Union
>     | DNominal of Data * Ty
>     | DV of TyV
>     | DHashSet of HashSet<Data>
>     | DHashMap of OrderedDictionary<Data,Data> * bool ref
> and TyV = L<Tag,Ty>
> // Unions always go through a join point which enables them to be compared via 
> ref eqaulity.
> // tags and tag_cases are straightforward mapping from cases for the sake of 
> efficiency.
> and Union = {|cases : Map<int * string, Ty>; layout : UnionLayout; tags : 
> Dictionary<string, int>; tag_cases : (string * Ty) [[]]; is_degenerate : bool|} 
> H
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### TermVar
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type TermVar =
>     | WV of TyV
>     | WLit of Literal
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### RData
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type RData =
>     | ReB
>     | RePair of ConsedNode<RData * RData>
>     | ReSymbol of string
>     | ReFunction of ConsedNode<E * RData [[]] * Ty [[]]> // T option and stack 
> sizes are entirely dependent on the body. And unlike in v0.09/v0.1 there are no 
> reified join points.
>     | ReForall of ConsedNode<E * RData [[]] * Ty [[]]>
>     | ReExists of ConsedNode<Ty [[]] * RData>
>     | ReRecord of ConsedNode<Map<int * string, RData>>
>     | ReLit of Literal
>     | ReTLit of Literal
>     | ReUnion of ConsedNode<RData * Union>
>     | ReNominal of ConsedNode<RData * Ty>
>     | ReV of ConsedNode<Tag * Ty>
>     | ReHashMap of ConsedNode<(RData * RData)[[]]>
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### Trace
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Trace = Range list
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### JoinPointKey
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type JoinPointKey = 
>     | JPMethod of (string ConsedNode * E) * ConsedNode<RData [[]] * Ty [[]]>
>     | JPClosure of (string ConsedNode * E) * ConsedNode<RData [[]] * Ty [[]] * 
> Ty>
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### JoinPointCall
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type JoinPointCall = JoinPointKey * TyV [[]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### CodeMacro
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type CodeMacro =
>     | CMText of string
>     | CMTerm of Data
>     | CMType of Ty
>     | CMTypeLit of Ty
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### TypedBind
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type TypedBind =
>     | TyLet of Data * Trace * TypedOp
>     | TyLocalReturnOp of Trace * TypedOp * Data
>     | TyLocalReturnData of Data * Trace
> 
> and TypedOp = 
>     | TyMacro of CodeMacro list
>     | TyOp of Op * Data list
>     | TyUnionBox of string * Data * Union
>     | TyUnionUnbox of TyV list * Union * Map<string,Data list * TypedBind [[]]> 
> * TypedBind [[]] option
>     | TyIntSwitch of TyV * TypedBind [[]] [[]] * TypedBind [[]]
>     | TyToLayout of Data * Ty
>     | TyLayoutIndexAll of TyV
>     | TyLayoutIndexByKey of TyV * string
>     | TyLayoutMutableSet of TyV * string list * Data
>     | TyFailwith of Ty * Data
>     | TyApply of TyV * Data
>     | TyConv of Ty * Data
>     | TySizeOf of Ty
>     | TyArrayLiteral of Ty * Data list
>     | TyArrayCreate of Ty * Data
>     | TyArrayLength of Ty * Data
>     | TyStringLength of Ty * Data
>     | TyIf of cond: Data * tr: TypedBind [[]] * fl: TypedBind [[]]
>     | TyWhile of cond: JoinPointCall * TypedBind [[]]
>     | TyDo of TypedBind [[]]
>     | TyIndent of TypedBind [[]]
>     | TyJoinPoint of JoinPointCall
>     | TyBackend of (string ConsedNode * E) * ConsedNode<RData [[]] * Ty [[]]> * 
> Range
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### UnionRewrite
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type UnionRewrite = UnionData of string * Data | UnionBlockers of string Set
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### LangEnv
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type LangEnv = {
>     trace : Trace
>     seq : ResizeArray<TypedBind>
>     cse : Dictionary<TypedOp, Data> list
>     unions : Map<TyV, UnionRewrite>
>     i : int ref
>     env_global_type : Ty [[]]
>     env_global_term : Data [[]]
>     env_stack_type : Ty [[]]
>     env_stack_term : Data [[]]
>     backend : string ConsedNode
>     globals : ResizeArray<string>
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### PartEvalTopEnv
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type PartEvalTopEnv = {
>     prototypes_instances : Dictionary<GlobalId * GlobalId, E>
>     nominals : Dictionary<GlobalId, Nominal>
>     backend : string
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### PartEvalTypeError
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> exception PartEvalTypeError of Trace * string
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### raise_type_error
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let raise_type_error (d: LangEnv) x = raise (PartEvalTypeError(d.trace,x))
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### data_to_rdata
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let data_to_rdata (d: LangEnv) (hc : HashConsTable) call_data =
>     let hc x = hc.Add x
>     let m = Dictionary(HashIdentity.Reference)
>     let call_args = ResizeArray()
>     let rec f x =
>         memoize m (function
>             | DPair(a,b) -> RePair(hc(f a, f b))
>             | DSymbol a -> ReSymbol a
>             | DFunction(a,_,b,c,_,_) -> ReFunction(hc(a,Array.map f b,c))
>             | DForall(a,b,c,_,_) -> ReFunction(hc(a,Array.map f b,c))
>             | DExists(a,b) -> ReExists(hc(a,f b))
>             | DRecord l -> ReRecord(hc(Map.map (fun _ -> f) l))
>             | DV(L(_,ty) as t) -> call_args.Add t; ReV(hc 
> (call_args.Count-1,ty))
>             | DLit a -> ReLit a
>             | DTLit a -> ReTLit a
>             | DUnion(a,b) -> ReUnion(hc(f a,b))
>             | DNominal(a,b) -> ReNominal(hc(f a,b))
>             | DB -> ReB
>             | DHashMap(x,is_writable) when is_writable.Value = false -> x |> 
> Seq.map (fun kv -> f kv.Key, f kv.Value) |> Seq.toArray |> hc |> ReHashMap
>             | DHashMap _ -> raise_type_error d "The mutable compile time HashMap
> needs to be made immutable before it can be passed through a join point."
>             | DHashSet _ -> raise_type_error d "The mutable compile-time HashSet
> cannot be passed through join points."
>             ) x
>     let x = Array.map f call_data
>     call_args.ToArray(),x
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### rename_global_term
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> // This rename is a consideration for when I do incremental compilation.
> // In order to allow them to be cleaned by the garbage collection, I do not want
> the 
> // references to unused nodes to end up in anywhere other than join point keys 
> (which will be weak).
> let rename_global_term (s : LangEnv) =
>     let m = Dictionary(HashIdentity.Reference)
>     let rec f x =
>         memoize m (function
>             | DPair(a,b) -> DPair(f a, f b)
>             | DForall(body,a,b,c,d) -> DForall(body,Array.map f a,b,c,d)
>             | DFunction(body,annot,a,b,c,d) -> DFunction(body,annot,Array.map f 
> a,b,c,d)
>             | DExists(annot,a) -> DExists(annot, f a)
>             | DRecord l -> DRecord(Map.map (fun _ -> f) l)
>             | DV(L(_,ty)) -> let x = DV(L(s.i.Value,ty)) in s.i.Value <- 
> s.i.Value + 1; x
>             | DUnion(a,b) -> DUnion(f a,b)
>             | DNominal(a,b) -> DNominal(f a,b)
>             | DSymbol _ | DLit _ | DTLit _ | DB as x -> x
>             | DHashMap(x,is_writable) when is_writable.Value = false -> 
>                 let q = OrderedDictionary(HashIdentity.Reference)
>                 x |> Seq.iter (fun kv -> q.Add(f kv.Key, f kv.Value))
>                 DHashMap(q,is_writable)
>             | DHashMap _ -> raise_type_error s "The mutable compile time HashMap
> needs to be made immutable before it can be renamed."
>             | DHashSet _ -> raise_type_error s "The mutable compile-time 
> HashSets cannot be renamed."
>             ) x
>     {s with env_global_term = Array.map f s.env_global_term}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### data_free_vars
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let data_free_vars call_data =
>     let m = HashSet(HashIdentity.Reference)
>     let free_vars = ResizeArray()
>     let rec f x =
>         if m.Add x then
>             match x with
>             | DPair(a,b) -> f a; f b
>             | DForall(_,a,_,_,_) | DFunction(_,_,a,_,_,_) -> Array.iter f a
>             | DRecord l -> Map.iter (fun _ -> f) l
>             | DV(L _ as t) -> free_vars.Add t
>             | DExists(_,a) | DUnion(a,_) | DNominal(a,_) -> f a
>             | DSymbol _ | DLit _ | DTLit _ | DB -> ()
>             | DHashSet x -> Seq.iter f x
>             | DHashMap(x,_) -> x |> Seq.iter (fun kv -> f kv.Value)
>     f call_data
>     free_vars.ToArray()
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### data_free_vars_replace
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let data_free_vars_replace s (d : Dictionary<TyV,TyV>) (x : Data) =
>     let m = Dictionary(HashIdentity.Reference)
>     let rec f x =
>         memoize m (function
>             | DPair(a,b) -> DPair(f a, f b)
>             | DForall(body,a,b,c,d) -> DForall(body,Array.map f a,b,c,d)
>             | DFunction(body,annot,a,b,c,d) -> DFunction(body,annot,Array.map f 
> a,b,c,d)
>             | DExists(annot,a) -> DExists(annot, f a)
>             | DRecord l -> DRecord(Map.map (fun _ -> f) l)
>             | DV(tyv) -> DV(d[[tyv]])
>             | DUnion(a,b) -> DUnion(f a,b)
>             | DNominal(a,b) -> DNominal(f a,b)
>             | DSymbol _ | DLit _ | DTLit _ | DB as x -> x
>             | DHashMap(x,is_writable) -> 
>                 let q = OrderedDictionary(HashIdentity.Reference)
>                 x |> Seq.iter (fun kv -> q.Add(f kv.Key, f kv.Value))
>                 DHashMap(q,ref is_writable.Value)
>             | DHashSet _ -> 
>                 raise_type_error s "The mutable compile-time HashSets cannot 
> have their free vars replaced."
>             ) x
>     f x
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### (|C|)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline (|C|) (x : _ ConsedNode) = x.node
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### (|C'|)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline (|C'|) (x : _ ConsedNode) = x.node, x.tag
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### rdata_free_vars
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rdata_free_vars call_data =
>     let m = HashSet(HashIdentity.Structural)
>     let free_vars = ResizeArray()
>     let rec g = function // Note: Using the same scheme as in `data_free_vars` 
> would give wrong results here. Comparing the tags instead is a necessity.
>         | RePair(C'((a,b),tag)) -> if m.Add tag then g a; g b
>         | ReForall(C'((_,a,_),tag)) | ReFunction(C'((_,a,_),tag)) -> if m.Add 
> tag then Array.iter g a
>         | ReRecord(C'(l,tag)) -> if m.Add tag then Map.iter (fun _ -> g) l
>         | ReV(C'((a,b),tag)) -> if m.Add tag then free_vars.Add(L(a,b))
>         | ReExists(C'((_,a),tag)) | ReUnion(C'((a,_),tag)) | 
> ReNominal(C'((a,_),tag)) -> if m.Add tag then g a
>         | ReHashMap(C'(x,tag)) -> if m.Add tag then Array.iter (fun (k,v) -> g 
> k; g v) x
>         | ReSymbol _ | ReLit _ | ReTLit _ | ReB -> ()
>     Array.iter g call_data
>     free_vars.ToArray()
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### data_term_vars'
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let data_term_vars' call_data =
>     let term_vars = ResizeArray(64)
>     let rec f = function
>         | DPair(a,b) -> f a; f b
>         | DForall(_,a,_,_,_) | DFunction(_,_,a,_,_,_) -> Array.iter f a
>         | DRecord l -> Map.iter (fun _ -> f) l
>         | DLit _ | DV _ as x -> term_vars.Add(x)
>         | DExists(_,a) | DUnion(a,_) | DNominal(a,_) -> f a
>         | DSymbol _ | DTLit _ | DB -> ()
>         | DHashSet x -> Seq.iter f x
>         | DHashMap(x,_) -> x |> Seq.iter (fun kv -> f kv.Value)
>     f call_data
>     term_vars.ToArray()
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### data_nominals
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let data_nominals call_data =
>     let term_vars = ResizeArray(64)
>     let rec f = function
>         | DPair(a,b) -> f a; f b
>         | DForall(_,a,_,_,_) | DFunction(_,_,a,_,_,_) -> Array.iter f a
>         | DRecord l -> Map.iter (fun _ -> f) l
>         | DLit _ | DV _ 
>         | DExists _ | DUnion _ | DNominal _ as x -> term_vars.Add(x)
>         | DSymbol _ | DTLit _ | DB -> ()
>         | DHashSet x -> Seq.iter f x
>         | DHashMap(x,_) -> x |> Seq.iter (fun kv -> f kv.Value)
>     f call_data
>     term_vars.ToArray()
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### data_term_vars
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let data_term_vars call_data =
>     let term_vars = ResizeArray(64)
>     let rec f = function
>         | DPair(a,b) -> f a; f b
>         | DForall(_,a,_,_,_) | DFunction(_,_,a,_,_,_) -> Array.iter f a
>         | DRecord l -> Map.iter (fun _ -> f) l
>         | DLit x -> term_vars.Add(WLit x)
>         | DV x -> term_vars.Add(WV x)
>         | DExists(_,a) | DUnion(a,_) | DNominal(a,_) -> f a
>         | DSymbol _ | DTLit _ | DB -> ()
>         | DHashSet x -> Seq.iter f x
>         | DHashMap(x,_) -> x |> Seq.iter (fun kv -> f kv.Value)
>     f call_data
>     term_vars.ToArray()
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### lit_to_primitive_type
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let lit_to_primitive_type = function
>     | LitUInt8 _ -> UInt8T
>     | LitUInt16 _ -> UInt16T
>     | LitUInt32 _ -> UInt32T
>     | LitUInt64 _ -> UInt64T
>     | LitInt8 _ -> Int8T
>     | LitInt16 _ -> Int16T
>     | LitInt32 _ -> Int32T
>     | LitInt64 _ -> Int64T
>     | LitFloat32 _ -> Float32T
>     | LitFloat64 _ -> Float64T   
>     | LitBool _ -> BoolT
>     | LitString _ -> StringT
>     | LitChar _ -> CharT
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### lit_to_ty
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let lit_to_ty x = lit_to_primitive_type x |> YPrim
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### is_tco_compatible
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let is_tco_compatible = function 
>     | TyApply _ | TyJoinPoint _ | TyArrayLiteral _ | TyUnionBox _ | TyToLayout _
>     | TyIf _ | TyIntSwitch _ | TyUnionUnbox _ | TyArrayCreate _ | TyFailwith _ 
> -> true 
>     | _ -> false
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### seq_apply
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let seq_apply (d: LangEnv) end_dat =
>     let inline end_ () = d.seq.Add(TyLocalReturnData(end_dat,d.trace))
>     if d.seq.Count > 0 then
>         match d.seq.[[d.seq.Count-1]] with
>         | TyLet(end_dat',a,b) when 
> System.Object.ReferenceEquals(end_dat,end_dat') && is_tco_compatible b -> 
> d.seq.[[d.seq.Count-1]] <- TyLocalReturnOp(a,b,end_dat')
>         | _ -> end_()
>     else end_()
>     d.seq.ToArray()
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### cse_tryfind
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let cse_tryfind (d: LangEnv) key =
>     d.cse |> List.tryPick (fun x ->
>         match x.TryGetValue key with
>         | true, v -> Some v
>         | _ -> None
>         )
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### cse_add
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let cse_add (d: LangEnv) k v = (List.head d.cse).Add(k,v)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### show_ty
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let show_ty x =
>     let rec f prec x =
>         let p = p prec
>         match x with
>         | YVoid -> "void"
>         | YB -> "()"
>         | YLit x -> show_lit x
>         | YPair(a,b) -> p 25 (sprintf "%s * %s" (f 25 a) (f 24 b))
>         | YSymbol x -> sprintf ".%s" x
>         | YTypeFunction _ -> p 0 (sprintf "? => ?")
>         | YForall -> p 0 (sprintf "forall ?. ?")
>         | YExists -> p 0 (sprintf "exists ?. ?")
>         | YRecord l -> sprintf "{%s}" (l |> Map.toList |> List.map (fun 
> ((_,k),v) -> sprintf "%s : %s" k (f -1 v)) |> String.concat "; ")
>         | YUnion l -> sprintf "{%s}" (l.Item.cases |> Map.toList |> List.map 
> (fun ((_,k),v) -> sprintf "%s : %s" k (f -1 v)) |> String.concat " | ")
>         | YPrim x -> show_primt x
>         | YArray a -> p 30 (sprintf "array_base %s" (f 30 a))
>         | YFun(a,b,FT_Vanilla) -> p 20 (sprintf "%s -> %s" (f 20 a) (f 19 b))
>         | YFun(a,b,FT_Pointer) -> p 20 (sprintf "fptr (%s -> %s)" (f 20 a) (f 19
> b))
>         | YFun(a,b,FT_Closure) -> p 20 (sprintf "closure (%s -> %s)" (f 20 a) (f
> 19 b))
>         | YMacro a -> p 30 (List.map (function TypeLit a | Type a -> f -1 a | 
> Text a -> a) a |> String.concat "")
>         | YApply(a,b) -> p 30 (sprintf "%s %s" (f 29 a) (f 30 b))
>         | YLayout(a,b) -> p 30 (sprintf "%s %s" (show_layout_type b) (f 30 a))
>         | YNominal x -> x.node.name
>         | YMetavar _ -> "?"
>     f -1 x
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### show_data
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let show_data x =
>     let rec f prec x =
>         let p = p prec
>         match x with
>         | DB -> "()"
>         | DPair(a,b) -> p 25 (sprintf "%s, %s" (f 25 a) (f 24 b))
>         | DSymbol x -> sprintf ".%s" x
>         | DFunction _ -> p 20 "? -> ?"
>         | DForall _ -> p 0 "forall ?. ?"
>         | DExists(a,b) ->
>             let a = Array.map (show_ty >> sprintf "(%s)") a |> String.concat " "
>             p 0 $"exists {a}. %s{f 0 b}"
>         | DRecord l -> sprintf "{%s}" (l |> Map.toList |> List.map (fun 
> ((_,k),v) -> sprintf "%s : %s" k (f -1 v)) |> String.concat "; ")
>         | DLit a -> show_lit a
>         | DTLit a -> $"`{show_lit a}"
>         | DV(L(_,ty)) -> show_ty ty
>         | DUnion(a,_) -> f prec a
>         | DNominal(a,b) -> p 0 (sprintf "%s : %s" (f 0 a) (show_ty b))
>         | DHashSet _ -> p 0 "<HashSet>"
>         | DHashMap _ -> p 0 "<HashMap>"
> 
>     f -1 x
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### is_lit
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let is_lit = function
>     | DLit _ -> true
>     | _ -> false
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### is_numeric
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let is_numeric = function
>     | YPrim (UInt8T | UInt16T | UInt32T | UInt64T 
>         | Int8T | Int16T | Int32T | Int64T 
>         | Float32T | Float64T) -> true
>     | _ -> false
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### is_signed_numeric
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let is_signed_numeric = function
>     | YPrim (Int8T | Int16T | Int32T | Int64T | Float32T | Float64T) -> true
>     | _ -> false
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### is_non_float_primitive
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let is_non_float_primitive = function
>     | YPrim (Float32T | Float64T) -> false
>     | YPrim _ -> true
>     | _ -> false
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### is_primitive
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let is_primitive = function
>     | YPrim _ -> true
>     | _ -> false
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### is_string
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let is_string = function
>     | YPrim StringT -> true
>     | _ -> false
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### is_char
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let is_char = function
>     | YPrim CharT -> true
>     | _ -> false
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### is_float
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let is_float = function
>     | YPrim (Float32T | Float64T) -> true
>     | _ -> false
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### is_bool
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let is_bool = function
>     | YPrim BoolT -> true
>     | _ -> false
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### is_int
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let is_int = function
>     | YPrim (UInt32T | UInt64T | Int32T | Int64T) -> true
>     | _ -> false
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### is_int
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let is_any_int = function
>     | YPrim (UInt8T | UInt16T | UInt32T | UInt64T 
>         | Int8T | Int16T | Int32T | Int64T) -> true
>     | _ -> false
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### is_int64
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let is_int64 = function
>     | YPrim Int64T -> true
>     | _ -> false
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### is_int32
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let is_int32 = function
>     | YPrim Int32T -> true
>     | _ -> false
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### is_lit_zero
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let is_lit_zero = function
>     | DLit a ->
>         match a with
>         | LitInt8 0y | LitInt16 0s | LitInt32 0 | LitInt64 0L
>         | LitUInt8 0uy | LitUInt16 0us | LitUInt32 0u | LitUInt64 0UL
>         | LitFloat32 0.0f | LitFloat64 0.0 -> true
>         | _ -> false
>     | _ -> false
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### is_lit_one
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let is_lit_one = function
>     | DLit a ->
>         match a with
>         | LitInt8 1y | LitInt16 1s | LitInt32 1 | LitInt64 1L
>         | LitUInt8 1uy | LitUInt16 1us | LitUInt32 1u | LitUInt64 1UL
>         | LitFloat32 1.0f | LitFloat64 1.0 -> true
>         | _ -> false
>     | _ -> false
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### is_int_lit_zero
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let is_int_lit_zero = function
>     | DLit a ->
>         match a with
>         | LitInt8 0y | LitInt16 0s | LitInt32 0 | LitInt64 0L
>         | LitUInt8 0uy | LitUInt16 0us | LitUInt32 0u | LitUInt64 0UL -> true
>         | _ -> false
>     | _ -> false
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### is_int_lit_one
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let is_int_lit_one = function
>     | DLit a ->
>         match a with
>         | LitInt8 1y | LitInt16 1s | LitInt32 1 | LitInt64 1L
>         | LitUInt8 1uy | LitUInt16 1us | LitUInt32 1u | LitUInt64 1UL -> true
>         | _ -> false
>     | _ -> false
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### lit_zero
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let lit_zero = function
>     | YPrim Int8T -> LitInt8 0y
>     | YPrim Int16T -> LitInt16 0s
>     | YPrim Int32T -> LitInt32 0
>     | YPrim Int64T -> LitInt64 0L
>     | YPrim UInt8T -> LitUInt8 0uy
>     | YPrim UInt16T -> LitUInt16 0us
>     | YPrim UInt32T -> LitUInt32 0u
>     | YPrim UInt64T -> LitUInt64 0UL
>     | YPrim Float32T -> LitFloat32 0.0f
>     | YPrim Float64T -> LitFloat64 0.0
>     | _ -> failwith "Compiler error: Expected a numeric value."
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### vt
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let vt s i = if i < s.env_global_type.Length then s.env_global_type.[[i]] else 
> s.env_stack_type.[[i-s.env_global_type.Length]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### v
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let v s i = if i < s.env_global_term.Length then s.env_global_term.[[i]] else 
> s.env_stack_term.[[i-s.env_global_term.Length]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### add_trace
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let add_trace (s : LangEnv) r = {s with trace = r :: s.trace}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### store_term
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let store_term (s : LangEnv) i v = 
> s.env_stack_term.[[i-s.env_global_term.Length]] <- v
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### store_ty
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let store_ty (s : LangEnv) i v = s.env_stack_type.[[i-s.env_global_type.Length]]
> <- v
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### is_unify
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let is_unify s x =
>     let is_metavar = HashSet()
>     let rec f = function
>         | YB, YB | YExists, YExists | YForall, YForall -> true
>         | YFun(a,b,t), YFun(a',b',t') -> t = t' && f (a,a') && f (b,b')
>         | YApply(a,b), YApply(a',b')
>         | YPair(a,b), YPair(a',b') -> f (a,a') && f (b,b')
>         | YSymbol a, YSymbol b -> a = b
>         | YTypeFunction(a,b,c,d), YTypeFunction(a',b',c',d') -> a = a' && 
> Array.forall2 (fun b b' -> f (b,b')) b b' && c = c' && d = d'
>         | YRecord a, YRecord a' -> Map.forall (fun k v' -> match Map.tryFind k a
> with Some v -> f (v, v') | None -> false) a'
>         | YPrim a, YPrim a' -> a = a'
>         | YArray a, YArray a' -> f (a, a')
>         | YMacro a, YMacro a' ->
>             List.forall2 (fun a a' ->
>                 match a, a' with
>                 | Text a, Text a' -> a = a'
>                 | Type a, Type a' -> f (a,a')
>                 | _ -> false
>                 ) a a'
>         | YNominal a, YNominal a' -> a = a'
>         | YLayout(a,b), YLayout(a',b') -> f (a,a') && b = b'
>         | YUnion a, YUnion a' -> a = a'
>         | YLit a, YLit b -> a = b
>         | a, YMetavar i -> (is_metavar.Add i && (store_ty s i a; true)) || a = 
> vt s i
>         | _ -> false
>     f x
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### PartEvalResult
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type PartEvalResult = {
>     join_point_method : Dictionary<string ConsedNode * 
> E,Dictionary<ConsedNode<RData [[]] * Ty [[]]>,TypedBind [[]] option * Ty option 
> * string option> * HashConsTable>
>     join_point_closure : Dictionary<string ConsedNode * 
> E,Dictionary<ConsedNode<RData [[]] * Ty [[]] * Ty>,(Data * TypedBind [[]]) 
> option> * HashConsTable>
>     ty_to_data : Ty -> Data
>     nominal_apply : Ty -> Ty
>     globals : ResizeArray<string>
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### peval
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let peval (env : PartEvalTopEnv) (x : E) =
>     let join_point_method = Dictionary(HashIdentity.Structural)
>     let join_point_closure = Dictionary(HashIdentity.Structural)
>     let join_point_type = Dictionary(HashIdentity.Structural)
>     let backend_strings = HashConsTable()
> 
>     let rec ty_to_data s x =
>         let f = ty_to_data s
>         match x with
>         | YVoid -> raise_type_error s "Compiler error: Cannot construct an 
> instance of a void type."
>         | YB -> DB
>         | YPair(a,b) -> DPair(f a, f b) 
>         | YSymbol a -> DSymbol a
>         | YRecord l -> DRecord(Map.map (fun _ -> f) l)
>         | YForall | YExists | YUnion _ | YLayout _ | YPrim _ | YArray _ | YFun _
> | YMacro _ as x -> let r = DV(L(s.i.Value,x)) in s.i.Value <- s.i.Value + 1; r
>         | YNominal _ | YApply _ as a -> DNominal(nominal_type_apply s a |> 
> ty_to_data s, a)
>         | YLit x -> DTLit x
>         | YTypeFunction _ -> raise_type_error s "Cannot turn a type function 
> into a runtime variable."
>         | YMetavar _ -> raise_type_error s "Compiler error: Cannot turn a 
> metavar into a runtime variable."
>     and assert_ty_lit s = function 
>         | YSymbol _ | YLit _ as x -> x
>         | YNominal _ | YApply _ as x -> nominal_type_apply s x |> assert_ty_lit 
> s
>         | x -> raise_type_error s <| sprintf "Expected a type literal or a 
> symbol.\nGot: %s" (show_ty x)
>     and push_typedop_no_rewrite d op ret_ty =
>         let ret = ty_to_data d ret_ty
>         d.seq.Add(TyLet(ret,d.trace,op))
>         ret
>     and push_typedop (d: LangEnv) key ret_ty =
>         match cse_tryfind d key with
>         | Some x -> x
>         | None ->
>             let x = ty_to_data d ret_ty
>             d.seq.Add(TyLet(x,d.trace,key))
>             cse_add d key x
>             x
>     and push_op_no_rewrite' (d: LangEnv) op l ret_ty = push_typedop_no_rewrite d
> (TyOp(op,l)) ret_ty
>     and push_op_no_rewrite d op a ret_ty = push_op_no_rewrite' d op [[a]] ret_ty
>     and push_binop_no_rewrite d op (a,b) ret_ty = push_op_no_rewrite' d op 
> [[a;b]] ret_ty
>     and push_triop_no_rewrite d op (a,b,c) ret_ty = push_op_no_rewrite' d op 
> [[a;b;c]] ret_ty
> 
>     and push_op' d op a ret_ty = push_typedop d (TyOp(op, a)) ret_ty
>     and push_op d op a ret_ty = push_op' d op [[a]] ret_ty
>     and push_binop d op (a,b) ret_ty = push_op' d op [[a;b]] ret_ty
>     and push_triop d op (a,b,c) ret_ty = push_op' d op [[a;b;c]] ret_ty
>     and closure_env s (body,annot,gl_term,gl_ty,sz_term,sz_ty) = {
>         trace = s.trace
>         seq = ResizeArray()
>         cse = [[Dictionary(HashIdentity.Structural)]]
>         unions = Map.empty
>         i = ref 0
>         env_global_type = gl_ty
>         env_global_term = gl_term
>         env_stack_type = Array.zeroCreate<_> sz_ty
>         env_stack_term = Array.zeroCreate<_> sz_term
>         backend = s.backend
>         globals = s.globals
>         }
>     and closure_convert s (body,annot,gl_term,gl_ty,sz_term,sz_ty as args) =
>         let join_point_key, call_args, fun_ty =
>             let s : LangEnv = closure_env s args
>             let domain, range, fun_ty = 
>                 match ty s annot with
>                 | YFun(a,b,_) as x -> a,b,x
>                 | annot -> raise_type_error s <| sprintf "Expected a function 
> type in annotation during closure conversion. Got: %s" (show_ty annot)
>             let dict, hc_table = memoize join_point_closure (fun _ -> 
> Dictionary(HashIdentity.Structural), HashConsTable()) (s.backend, body)
>             let call_args, env_global_value = data_to_rdata s hc_table gl_term
>             let join_point_key = hc_table.Add(env_global_value, 
> s.env_global_type, fun_ty)
> 
>             match fun_ty with
>             | YFun(_,_,FT_Pointer) when call_args.Length <> 0 -> 
> raise_type_error s "Function pointers shouldn't have any runtime free variables 
> in their environment."
>             | _ -> ()
> 
>             match dict.TryGetValue(join_point_key) with
>             | true, _ -> ()
>             | false, _ ->
>                 let s = rename_global_term s
>                 let domain_data = ty_to_data s domain
>                 s.env_stack_term.[[0]] <- domain_data
>                 dict.[[join_point_key]] <- None
>                 let seq,ty = term_scope'' s body (Some fun_ty)
>                 dict.[[join_point_key]] <- Some(domain_data, seq)
>                 let ty =
>                     match ty with
>                     | YRecord a ->
>                         a
>                         |> Seq.map (fun (KeyValue ((i, k), v)) ->
>                             let i =
>                                 match range with
>                                 | YRecord a ->
>                                     a |> Map.tryPick (fun (i', k') _ -> if k = 
> k' then Some i' else None)
>                                 | _ -> None
>                                 |> Option.defaultValue i
>                             (i, k), v
>                         )
>                         |> Map.ofSeq
>                         |> YRecord
>                     | _ -> ty
>                 if range <> ty then raise_type_error s <| sprintf "The 
> annotation of the function does not match its body's type.\nGot: %s\nExpected: 
> %s" (show_ty ty) (show_ty range)
>             join_point_key, call_args, fun_ty
>         push_typedop s 
> (TyJoinPoint(JPClosure((s.backend,body),join_point_key),call_args)) fun_ty, 
> fun_ty
>     and data_to_ty s x =
>         let m = Dictionary(HashIdentity.Reference)
>         let rec f x =
>             memoize m (function
>                 | DPair(a,b) -> YPair(f a, f b)
>                 | DSymbol a -> YSymbol a
>                 | DRecord l -> YRecord(Map.map (fun _ -> f) l)
>                 | DUnion(_,a) -> YUnion a
>                 | DNominal(_,a) | DV(L(_,a)) -> a
>                 | DLit x -> lit_to_ty x
>                 | DTLit x -> YLit x
>                 | DB -> YB
>                 | DFunction(body,Some annot,gl_term,gl_ty,sz_term,sz_ty) -> ty 
> (closure_env s (body,annot,gl_term,gl_ty,sz_term,sz_ty)) annot
>                 | DExists _ -> YExists
>                 | DFunction(_,None,_,_,_,_) -> raise_type_error s "Cannot 
> convert a function that is not annotated into a type."
>                 | DForall _ -> YForall
>                 | DHashSet _ -> raise_type_error s "Cannot convert a compile 
> time HashSet into a type."
>                 | DHashMap _ -> raise_type_error s "Cannot convert a compile 
> time HashMap into a type."
>                 ) x
>         f x
>     and dyn do_lit s x =
>         let m = Dictionary(HashIdentity.Reference)
>         let mutable dirty = false
>         let rec f x =
>             memoize m (function
>                 | DPair(a,b) -> DPair(f a, f b)
>                 | DB | DV _ | DTLit _ | DSymbol _ as a -> a
>                 | DRecord l -> DRecord(Map.map (fun _ -> f) l)
>                 | DNominal(DUnion(DPair(DSymbol k,v),b),b') -> dirty <- true; 
> push_typedop_no_rewrite s (TyUnionBox(k,f v,b)) b'
>                 | DUnion _ -> raise_type_error s "Compiler error: Malformed 
> union"
>                 | DNominal(a,b) -> DNominal(f a,b)
>                 | DLit (LitString _ as v) -> dirty <- true; push_op s Dyn x 
> (lit_to_ty v)
>                 | DLit v as x -> if do_lit then dirty <- true; 
> push_op_no_rewrite s Dyn x (lit_to_ty v) else x
>                 | DFunction(body,Some annot,term',ty',sz_term,sz_ty) -> dirty <-
> true; closure_convert s (body,annot,term',ty',sz_term,sz_ty) |> fst
>                 | DFunction(_,None,_,_,_,_) -> raise_type_error s "Cannot 
> convert a function that is not annotated into a runtime variable."
>                 | DExists _ -> raise_type_error s "Cannot dyn an existential 
> into a runtime var."
>                 | DForall _ -> raise_type_error s "Cannot dyn a forall into a 
> runtime var."
>                 | DHashSet _ -> raise_type_error s "Cannot dyn a compile time 
> HashSet into a runtime var."
>                 | DHashMap _ -> raise_type_error s "Cannot dyn a compile time 
> HashMap into a runtime var."
>                 ) x
>         let v = f x
>         if dirty then v else x
>     and term_real_nominal s x =
>         let s = {s with seq=ResizeArray(); 
> cse=Dictionary(HashIdentity.Structural) :: s.cse}
>         term s x |> data_to_ty s
>     and term_scope'' s x fun_ty =
>         let x = term s x |> dyn false s
>         let x =
>             match x with
>             | DRecord c ->
>                 c
>                 |> Seq.map (fun (KeyValue ((i, k), v)) ->
>                     let i =
>                         match fun_ty with
>                         | Some (YFun (YNominal _, YRecord a, _) | YRecord a) ->
>                             a |> Map.tryPick (fun (i', k') _ -> if k = k' then 
> Some i' else None)
>                         | _ -> None
>                         |> Option.defaultValue i
>                     (i, k), v
>                 )
>                 |> Map.ofSeq
>                 |> DRecord
>             | _ -> x
>         let x_ty = data_to_ty s x
>         seq_apply s x, x_ty
>     and term_scope' s cse x = term_scope'' {s with seq=ResizeArray(); cse=cse ::
> s.cse} x None
>     and term_scope s x = term_scope' s (Dictionary(HashIdentity.Structural)) x
>     and nominal_type_apply s x =
>         match x with
>         | YApply(a,b) ->
>             match nominal_type_apply s a with
>             | YTypeFunction(body,gl_ty,sz_term,sz_ty) ->
>                 let s =
>                     {s with
>                         env_global_type = gl_ty
>                         env_global_term = [[||]]
>                         env_stack_type = Array.zeroCreate<_> sz_ty
>                         env_stack_term = Array.zeroCreate<_> sz_term
>                         }
>                 s.env_stack_type.[[0]] <- b
>                 ty s body
>             | a -> raise_type_error s <| sprintf "Expected a type level function
> in nominal application.\nGot: %s" (show_ty a)
>         | YNominal a -> ty s a.node.body
>         | _ -> raise_type_error s <| sprintf "Expected a nominal or a deferred 
> type apply.\nGot: %s" (show_ty x)
>     and ty s x =
>         match x with
>         | TPatternRef _ -> failwith "Compiler error: TPatternRef should have 
> been eliminated during the prepass."
>         | TForall _ | TArrow _ | TJoinPoint _ -> failwith "Compiler error: 
> Should have been transformed during the prepass."
>         | TMetaV i -> YMetavar i
>         | TArrow'(scope,i,body) -> 
>             assert (i = scope.ty.free_vars.Length)
>             YTypeFunction(body,Array.map (vt s) 
> scope.ty.free_vars,scope.term.stack_size,scope.ty.stack_size)
>         | TForall' _ -> YForall
>         | TExists -> YExists
>         | TJoinPoint'(r,scope,body) ->
>             let env_global_type = Array.map (vt s) scope.ty.free_vars
>             let env_global_term = Array.map (v s) scope.term.free_vars
> 
>             let dict, hc_table = memoize join_point_type (fun _ -> 
> Dictionary(HashIdentity.Structural), HashConsTable()) body
>             let join_point_key = hc_table.Add(env_global_type)
>             match dict.TryGetValue(join_point_key) with
>             | true, Some ret_ty -> ret_ty
>             | true, None -> raise_type_error (add_trace s r) "Type join points 
> must not be unboxed during their definition."
>             | false, _ ->
>                 assert (0 = scope.term.free_vars.Length)
>                 let s : LangEnv = {
>                     trace = r :: s.trace
>                     seq = ResizeArray()
>                     cse = [[Dictionary(HashIdentity.Structural)]]
>                     unions = Map.empty
>                     i = ref 0
>                     env_global_type = env_global_type
>                     env_global_term = env_global_term
>                     env_stack_type = Array.zeroCreate<_> scope.ty.stack_size
>                     env_stack_term = Array.zeroCreate<_> scope.term.stack_size
>                     backend = s.backend
>                     globals = s.globals
>                     }
>                 let s = rename_global_term s
>                 dict.[[join_point_key]] <- None
>                 let ret_ty = ty s body
>                 dict.[[join_point_key]] <- Some ret_ty
>                 ret_ty
>         | TB _ -> YB
>         | TLit(_,x) -> YLit x
>         | TV i -> vt s i
>         | TPair(_,a,b) -> YPair(ty s a, ty s b)
>         | TFun(a,b,t) -> YFun(ty s a, ty s b,t)
>         | TModule a ->
>             YRecord(
>                 a
>                 |> Seq.mapi (fun i (KeyValue (k, v)) -> (i, k), (v |> ty s))
>                 |> Map.ofSeq
>             )
>         | TRecord(_,a) -> YRecord(Map.map (fun _ -> ty s) a)
>         | TUnion(_,(a,b)) ->
>             let tags = Dictionary()
>             let tag_cases = Array.zeroCreate (Map.count a)
>             let mutable is_degenerate = true
>             let cases =
>                 Map.fold (fun cases (i,k) v ->
>                     let v = Option.defaultValue (fst v) (snd v) // If the union 
> case is generalized, use the specialized destructor instead of the constructor 
> to evaluate the type.
>                     match ty s v with
>                     | YVoid -> cases
>                     | v ->
>                         is_degenerate <- is_degenerate && match v with YB -> 
> true | _ -> false
>                         tags.[[k]] <- i
>                         tag_cases.[[i]] <- (k,v)
>                         Map.add (i,k) v cases
>                     ) Map.empty a
>             YUnion(H {|cases=cases; layout=b; tags=tags; tag_cases=tag_cases; 
> is_degenerate=is_degenerate|})
>         | TTypecase(r,a,b) ->
>             let s = add_trace s r
>             let a = ty s a
>             let rec loop = function
>                 | (a',b) :: rest -> if is_unify s (a,ty s a') then Some(ty s b) 
> else loop rest
>                 | [[]] -> None
>             match loop b with
>             | Some r -> r
>             | None -> YVoid
>         | TSymbol(_,a) -> YSymbol a
>         | TApply(r,a,b) ->
>             let s = add_trace s r
>             match ty s a with
>             | YRecord a ->
>                 match ty s b with
>                 | YSymbol b ->
>                     match a |> Map.tryPick (fun (_, k) v -> if k = b then Some v
> else None) with
>                     | Some x -> x
>                     | None -> raise_type_error s <| sprintf  "Cannot find key %s
> in the record." b
>                 | b -> raise_type_error s <| sprintf "Expected a symbol in the 
> record application.\nGot: %s" (show_ty b)
>             | YMetavar _ | YNominal _ | YApply _ as a -> YApply(a,ty s b)
>             | YTypeFunction(body,gl_ty,sz_term,sz_ty) -> 
>                 let b = ty s b
>                 let s = 
>                     {s with 
>                         env_global_type = gl_ty
>                         env_global_term = [[||]]
>                         env_stack_type = Array.zeroCreate<_> sz_ty
>                         env_stack_term = Array.zeroCreate<_> sz_term
>                         }
>                 s.env_stack_type.[[0]] <- b
>                 ty s body
>             | a -> raise_type_error s <| sprintf "Expected a record, nominal or 
> a type function. Or a metavar when in typecase.\nGot: %s" (show_ty a)
>         | TPrim a -> YPrim a
>         | TTerm(_,a) -> term_real_nominal s a
>         | TMacro(r,a) -> 
>             let s = add_trace s r
>             YMacro(a |> List.map (function TMText a -> Text a | TMType a -> 
> Type(ty s a) | TMLitType a -> TypeLit(ty s a |> assert_ty_lit s)))
>         | TNominal i -> YNominal env.nominals.[[i]]
>         | TArray a -> YArray(ty s a)
>         | TLayout(a,b) -> YLayout(ty s a,b)
>     and term (s : LangEnv) x = 
> 
>         let global' =
>             let has_added = HashSet s.globals
>             fun x -> if has_added.Add(x) then s.globals.Add x
> 
>         let term2 s a b = term s a, term s b
>         let term3 s a b c = term s a, term s b, term s c
>         let type_apply s a b =
>             match a with
>             | DForall(body,gl_term,gl_ty,sz_term,sz_ty) ->
>                 let s =
>                     {s with 
>                         env_global_type = gl_ty
>                         env_global_term = gl_term
>                         env_stack_type = Array.zeroCreate<_> sz_ty
>                         env_stack_term = Array.zeroCreate<_> sz_term
>                         }
>                 s.env_stack_type.[[0]] <- b
>                 term s body
>             | DV(L(_,YForall)) -> raise_type_error s <| sprintf "Cannot apply a 
> runtime forall during the partial evaluation stage."
>             | a -> raise_type_error s <| sprintf "Expected a forall.\nGot: %s" 
> (show_data a)
> 
>         let rec apply s = function
>             | DNominal(DUnion _,_), _ -> raise_type_error s "Unions cannot be 
> applied."
>             | DNominal(a,_), b -> apply s (a,b)
>             | DRecord a, DSymbol b ->
>                 match a |> Map.tryPick (fun (_, k) v -> if k = b then Some v 
> else None) with
>                 | Some a -> a
>                 | None -> raise_type_error s <| sprintf "Cannot find the key %s 
> inside the record." b
>             | DFunction(body,_,gl_term,gl_ty,sz_term,sz_ty), b ->
>                 let s : LangEnv = 
>                     {s with
>                         env_global_type = gl_ty
>                         env_global_term = gl_term
>                         env_stack_type = Array.zeroCreate<_> sz_ty
>                         env_stack_term = Array.zeroCreate<_> sz_term
>                         }
>                 s.env_stack_term.[[0]] <- b
>                 term s body
>             | DV(L(_,YForall)), _ -> raise_type_error s "Cannot apply a runtime 
> forall, and not with a term. Foralls have to be known at compile time and 
> applied with a type."
>             | DForall _, _ -> raise_type_error s "Cannot apply a forall with a 
> term."
>             | DV(L(_,YFun(domain,range,t) & a_ty) & a), b ->
>                 let b = dyn false s b
>                 let b_ty = data_to_ty s b
>                 if domain = b_ty then push_typedop_no_rewrite s (TyApply(a,b)) 
> range
>                 else raise_type_error s <| sprintf "Cannot apply an argument of 
> type %s to a function of type: %s" (show_ty b_ty) (show_ty a_ty)
>             | DV(L(i,YLayout(ty,layout)) as tyv) as a, DSymbol b -> 
>                 let key = TyLayoutIndexByKey(tyv, b)
>                 let ret_ty = 
>                     match ty with
>                     | YRecord r ->
>                         match r |> Map.tryPick (fun (i, k) v -> if k = b then 
> Some (i,v) else None) with
>                         | Some (_i, a) -> a
>                         | None -> raise_type_error s <| sprintf "Cannot find the
> key %s inside the layout type's record." b
>                     | _ -> raise_type_error s <| sprintf "Expected a record 
> inside the layout type.\nGot: %s" (show_ty ty)
>                 match layout with
>                 | Heap | StackMutable | HeapMutable -> push_typedop_no_rewrite s
> key ret_ty
>             | DV(L(_,YLayout _)), b -> raise_type_error s <| sprintf "Expected a
> symbol as the index into the layout type.\nGot: %s" (show_data b)
>             | a,_ -> raise_type_error s <| sprintf "Expected a function, 
> closure, record or a layout type possibly inside a nominal.\nGot: %s" (show_data
> a)
> 
>         let rec if_ s cond on_succ on_fail = 
>             match cond with
>             | DLit (LitBool true) -> term s on_succ
>             | DLit (LitBool false) -> term s on_fail
>             | DV(L(_,YPrim BoolT & type_bool)) ->
>                 let lit_tr = DLit(LitBool true)
>                 match cse_tryfind s (TyOp(EQ, [[cond; lit_tr]])) with
>                 | Some cond -> if_ s cond on_succ on_fail
>                 | None ->
>                     let lit_fl = DLit(LitBool false)
>                     let add_rewrite_cases is_true = 
>                         let cse = Dictionary(HashIdentity.Structural)
>                         let tr,fl = if is_true then lit_tr, lit_fl else lit_fl, 
> lit_tr
>                         let inline op op cond' res = 
> cse.Add(TyOp(op,[[cond;cond']]),res); cse.Add(TyOp(op,[[cond';cond]]),res)
>                         op EQ lit_tr tr; op NEQ lit_tr fl; op EQ lit_fl fl; op 
> NEQ lit_fl tr
>                         cse
>                     let tr, type_tr = term_scope' s (add_rewrite_cases true) 
> on_succ
>                     let fl, type_fl = term_scope' s (add_rewrite_cases false) 
> on_fail
>                     let type_tr, type_fl =
>                         match type_tr, type_fl with
>                         | YRecord tr, YRecord fl ->
>                             let tr =
>                                 tr
>                                 |> Seq.map (fun (KeyValue ((i, k), v)) ->
>                                     let i =
>                                         fl |> Map.tryPick (fun (i', k') _ -> if 
> k = k' then Some i' else None)
>                                         |> Option.defaultValue i
>                                     (i, k), v
>                                 )
>                                 |> Map.ofSeq
>                                 |> YRecord
> 
>                             let fl =
>                                 fl
>                                 |> Seq.map (fun (KeyValue ((i, k), v)) ->
>                                     k, ((i, k), v)
>                                 )
>                                 |> Seq.distinctBy fst
>                                 |> Seq.map snd
>                                 |> Map.ofSeq
>                                 |> YRecord
> 
>                             tr, fl
> 
>                         | _ ->
>                             type_tr, type_fl
> 
>                     if type_tr = type_fl then
>                         if tr.Length = 1 && fl.Length = 1 then
>                             match tr.[[0]], fl.[[0]] with
>                             | TyLocalReturnOp(_,tr,_), TyLocalReturnOp(_,fl,_) 
> when tr = fl -> push_typedop_no_rewrite s tr type_tr
>                             | TyLocalReturnData(tr',_), TyLocalReturnData(fl',_)
> -> 
>                                 match tr', fl' with
>                                 | tr, fl when tr = fl -> tr
>                                 | DLit(LitBool false), DLit(LitBool true) -> 
> push_binop s EQ (cond,lit_fl) type_bool
>                                 | DLit(LitBool false), fl when cond = fl -> 
> lit_fl
>                                 | DLit(LitBool true), fl -> // boolean or
>                                     match fl with
>                                     | DLit (LitBool false) -> cond
>                                     | _ -> if cond = fl then cond else 
> push_binop s BoolOr (cond,fl) type_bool
>                                 | tr, DLit(LitBool false) -> // boolean and
>                                     match tr with
>                                     | DLit(LitBool true) -> cond
>                                     | _ -> if cond = tr then cond else 
> push_binop s BoolAnd (cond,tr) type_bool
>                                 | _ -> push_typedop_no_rewrite s 
> (TyIf(cond,tr,fl)) type_tr
>                             | _ -> push_typedop_no_rewrite s (TyIf(cond,tr,fl)) 
> type_tr
>                         else push_typedop_no_rewrite s (TyIf(cond,tr,fl)) 
> type_tr
>                     else raise_type_error s <| sprintf "Types in branches of If 
> do not match.\nGot: %s and %s" (show_ty type_tr) (show_ty type_fl)
>             | cond -> raise_type_error s <| sprintf "Expected a bool in 
> conditional.\nGot: %s" (show_data cond)
> 
>         let eq s a b = 
>             let inline op a b = a = b
>             match a,b with
>             | DLit a, DLit b ->
>                 match a, b with
>                 | LitInt8 a, LitInt8 b -> op a b |> LitBool |> DLit
>                 | LitInt16 a, LitInt16 b -> op a b |> LitBool |> DLit
>                 | LitInt32 a, LitInt32 b -> op a b |> LitBool |> DLit
>                 | LitInt64 a, LitInt64 b -> op a b |> LitBool |> DLit
>                 | LitUInt8 a, LitUInt8 b -> op a b |> LitBool |> DLit
>                 | LitUInt16 a, LitUInt16 b -> op a b |> LitBool |> DLit
>                 | LitUInt32 a, LitUInt32 b -> op a b |> LitBool |> DLit
>                 | LitUInt64 a, LitUInt64 b -> op a b |> LitBool |> DLit
>                 | LitFloat32 a, LitFloat32 b -> op a b |> LitBool |> DLit
>                 | LitFloat64 a, LitFloat64 b -> op a b |> LitBool |> DLit
>                 | LitString a, LitString b -> op a b |> LitBool |> DLit
>                 | LitChar a, LitChar b -> op a b |> LitBool |> DLit
>                 | LitBool a, LitBool b -> op a b |> LitBool |> DLit
>                 | a, b -> raise_type_error s <| sprintf "The two literals must 
> be equal in type.\nGot: %s and %s" (show_lit a) (show_lit b)
>             | DV(L(a,a_ty)), DV(L(b,_)) when a = b && is_non_float_primitive 
> a_ty -> LitBool true |> DLit
>             | a, b ->
>                 let a_ty, b_ty = data_to_ty s a, data_to_ty s b
>                 if a_ty = b_ty then
>                     match a, b with
>                     | DLit (LitBool true), x | x, DLit (LitBool true) -> x
>                     | _ ->
>                         if is_primitive a_ty then push_binop s EQ (a,b) (YPrim 
> BoolT)
>                         else raise_type_error s <| sprintf "The type of the two 
> arguments needs to be a primitive type.\nGot: %s" (show_ty a_ty)
>                 else
>                     raise_type_error s <| sprintf "The two sides need to have 
> the same primitive types.\nGot: %s and %s." (show_ty a_ty) (show_ty b_ty)    
>         let default_lit s (a : string) b =
>             let inline f string_to_val val_to_lit val_dsc =
>                 match string_to_val a with
>                 | true, x -> val_to_lit x
>                 | false, _ -> raise_type_error s <| sprintf "Cannot parse the 
> literal as: %s" val_dsc
>             match b with
>             | YPrim Float32T -> f System.Single.TryParse LitFloat32 "f32"
>             | YPrim Float64T -> f System.Double.TryParse LitFloat64 "f64"
>             | YPrim Int8T -> f System.SByte.TryParse LitInt8 "i8"
>             | YPrim Int16T -> f System.Int16.TryParse LitInt16 "i16"
>             | YPrim Int32T -> f System.Int32.TryParse LitInt32 "i32"
>             | YPrim Int64T -> f System.Int64.TryParse LitInt64 "i64"
>             | YPrim UInt8T -> f System.Byte.TryParse LitUInt8 "u8"
>             | YPrim UInt16T -> f System.UInt16.TryParse LitUInt16 "u16"
>             | YPrim UInt32T -> f System.UInt32.TryParse LitUInt32 "u32"
>             | YPrim UInt64T -> f System.UInt64.TryParse LitUInt64 "u64"
>             | b -> raise_type_error s <| sprintf "Expected a numberic type 
> (f32,f64,i8,i16,i32,i64,u8,u16,u32,u64) as the type of literal.\nGot: %s" 
> (show_ty b)
> 
>         let lit_test s a bind on_succ on_fail =
>             let b = v s bind
>             if lit_to_ty a = data_to_ty s b then if_ s (eq s (DLit a) b) on_succ
> on_fail
>             else term s on_fail
> 
>         let inline nan_guardf32 x = if System.Single.IsNaN x then 
> raise_type_error s "A 32-bit floating point operation resulting in a nan 
> detected at compile time." else x
>         let inline nan_guardf64 x = if System.Double.IsNaN x then 
> raise_type_error s "A 64-bit floating point operation resulting in a nan 
> detected at compile time." else x
> 
>         let eforall (free_vars : Scope,i,body) =
>             assert (free_vars.ty.free_vars.Length = i)
>             DForall(body,Array.map (v s) free_vars.term.free_vars,Array.map (vt 
> s) free_vars.ty.free_vars,free_vars.term.stack_size,free_vars.ty.stack_size)
> 
>         let efun (free_vars : Scope,i,body,annot) =
>             assert (free_vars.term.free_vars.Length = i)
>             DFunction(body,annot,Array.map (v s) 
> free_vars.term.free_vars,Array.map (vt s) 
> free_vars.ty.free_vars,free_vars.term.stack_size,free_vars.ty.stack_size)
> 
>         let enominal (r,a,b) =
>             let a = term s a
>             let b = ty s b
>             match nominal_type_apply s b with
>             | YUnion h ->
>                 match a with
>                 | DPair(DSymbol k, v) ->
>                     let v_ty = data_to_ty s v
>                     match Map.tryPick (fun (_, name') v -> if k = name' then 
> Some v else None) h.Item.cases with
>                     | Some v_ty' when v_ty = v_ty' -> DNominal(DUnion(a,h),b) 
>                     | Some v_ty' -> raise_type_error s <| sprintf "For key %s, 
> The type of the value does not match the union case.\nGot: %s\nExpected: %s" k 
> (show_ty v_ty) (show_ty v_ty')
>                     | None -> raise_type_error s <| sprintf "The union does not 
> have key %s.\nGot: %s" k (show_ty b)
>                 | _ -> raise_type_error s <| sprintf "Expected key/value 
> pair.\nGot: %s" (show_data a)
>             | b' ->
>                 let a =
>                     match a with
>                     | DRecord a ->
>                         a
>                         |> Seq.map (fun (KeyValue ((i, k), v)) ->
>                             k, ((i, k), v)
>                         )
>                         |> Seq.distinctBy fst
>                         |> Seq.map snd
>                         |> Map.ofSeq
>                         |> DRecord
>                     | _ -> a
> 
>                 let a_ty = data_to_ty s a
> 
>                 if a_ty = b' then DNominal(a,b)
>                 else raise_type_error s <| sprintf "Type error in nominal 
> constructor.\nGot: %s\nExpected: %s" (show_ty a_ty) (show_ty b')
> 
>         let ty_union s x = 
>             let x = ty s x
>             match nominal_type_apply s x with
>             | YUnion x -> x
>             | _ -> raise_type_error s <| sprintf "Expected an union.\nGot: %s" 
> (show_ty x)
> 
>         let ty_record s x =
>             match ty s x with
>             | YRecord l -> l
>             | x -> raise_type_error s <| sprintf "Expected a type record.\nGot: 
> %s" (show_ty x)
> 
>         let to_i32 x = 
>             try 
>                 match x with
>                 | LitUInt8 x -> System.Convert.ToInt32(x)
>                 | LitUInt16 x -> System.Convert.ToInt32(x)
>                 | LitUInt32 x -> System.Convert.ToInt32(x)
>                 | LitUInt64 x -> System.Convert.ToInt32(x)
>                 | LitInt8 x -> System.Convert.ToInt32(x)
>                 | LitInt16 x -> System.Convert.ToInt32(x)
>                 | LitInt32 x -> System.Convert.ToInt32(x)
>                 | LitInt64 x -> System.Convert.ToInt32(x)
>                 | x -> raise_type_error s <| sprintf "Expected an int 
> convertible to an i32.\nGot: %s" (show_lit x)
>             with :? System.OverflowException -> raise_type_error s <| sprintf 
> "The literal cannot be converted to an i32 as it is either too small or to 
> big.\nGot: %s" (show_lit x)
> 
>         let record2 (a,b) (a',b') = DRecord(Map.empty |> Map.add a b |> Map.add 
> a' b')
>         let record3 (a,b) (a',b') (a'',b'') = DRecord(Map.empty |> Map.add a b 
> |> Map.add a' b' |> Map.add a'' b'')
> 
>         match x with
>         | EPatternRef _ -> failwith "Compiler error: EPatternRef should have 
> been eliminated during the prepass."
>         | EB _ -> DB
>         | EV a -> v s a
>         | ELit(_,a) -> DLit a
>         | ESymbol(_,a) -> DSymbol a
>         | EFun _ -> failwith "Compiler error: Raw functions should be 
> transformed during the prepass."
>         | EFun'(_,free_vars,i,body,annot) -> efun (free_vars,i,body,annot)
>         | ERecursiveFun'(_,free_vars,i,body,annot) -> efun 
> (free_vars,i,body.Value,annot)
>         | EForall _ -> failwith "Compiler error: Raw foralls should be 
> transformed during the prepass."
>         | EForall'(_,free_vars,i,body) -> eforall (free_vars,i,body)
>         | ERecursiveForall'(_,free_vars,i,body) -> eforall 
> (free_vars,i,body.Value)
>         | ERecursive a -> term s a.Value
>         | ERecBlock _ -> failwith "Compiler error: Recursive blocks should be 
> inlined and eliminated during the prepass."
>         | EJoinPoint _ -> failwith "Compiler error: Raw join points should be 
> transformed during the prepass."
>         | EJoinPoint'(r,scope,body,annot,backend,jp_name) ->
>             let env_global_type = Array.map (vt s) scope.ty.free_vars
>             let env_global_term = Array.map (v s) scope.term.free_vars
> 
>             let backend' = match backend with None -> s.backend | Some 
> (_,backend) -> backend_strings.Add backend
>             let dict, hc_table = memoize join_point_method (fun _ -> 
> Dictionary(HashIdentity.Structural), HashConsTable()) (backend', body)
>             let call_args, env_global_value = data_to_rdata s hc_table 
> env_global_term
>             let join_point_key = hc_table.Add(env_global_value, env_global_type)
> 
>             let ret_ty =
>                 match dict.TryGetValue(join_point_key) with
>                 | true, (_, Some ret_ty, _) -> ret_ty
>                 | true, (_, None, _) -> raise_type_error (add_trace s r) 
> "Recursive join points must be annotated."
>                 | false, _ ->
>                     let s : LangEnv = {
>                         trace = r :: s.trace
>                         seq = ResizeArray()
>                         cse = [[Dictionary(HashIdentity.Structural)]]
>                         unions = Map.empty
>                         i = ref 0
>                         env_global_type = env_global_type
>                         env_global_term = env_global_term
>                         env_stack_type = Array.zeroCreate<_> scope.ty.stack_size
>                         env_stack_term = Array.zeroCreate<_> 
> scope.term.stack_size
>                         backend = backend'
>                         globals = s.globals
>                         }
>                     let s = rename_global_term s
>                     let annot = Option.map (ty s) annot
>                     dict.[[join_point_key]] <- (None, annot, jp_name)
>                     let seq,ty = term_scope'' s body annot
>                     dict.[[join_point_key]] <- (Some seq, Some ty, jp_name)
>                     annot |> Option.iter (fun annot -> if annot <> ty then 
> raise_type_error s <| sprintf "The annotation of the join point does not match 
> its body's type.Got: %s\nExpected: %s" (show_ty ty) (show_ty annot))
>                     ty
> 
>             match backend with
>             | None -> push_typedop_no_rewrite s 
> (TyJoinPoint(JPMethod((backend',body),join_point_key),call_args)) ret_ty
>             | Some (range,_) ->
>                 let method_name = push_typedop_no_rewrite s 
> (TyBackend((backend',body),join_point_key,range)) (YPrim Int32T)
>                 let call_args = Array.foldBack (fun v s -> DPair(DV v,s)) 
> call_args DB
>                 DPair(method_name, call_args)
>         | EDefaultLit(r,a,b) -> let s = add_trace s r in default_lit s a (ty s 
> b) |> DLit
>         | EType(r,_) -> raise_type_error (add_trace s r) "Raw types are not 
> allowed on the term level."
>         | EApply(r,a,b) -> let s = add_trace s r in apply s (term s a, term s b)
>         | ETypeApply(r,a,b) ->
>             let s = add_trace s r
>             type_apply s (term s a) (ty s b)
>         | ERecordWith(r,vars,withs,withouts) ->
>             let s = add_trace s r
>             let map x =
>                 let fold f a b = List.fold f b a
>                 let var r a = 
>                     match term s a with
>                     | DSymbol a -> a
>                     | a -> raise_type_error (add_trace s r) <| sprintf "Expected
> a symbol.\nGot: %s" (show_data a)
>                 x |> fold (fun m x -> 
>                     let sym a b =
>                         let i =
>                             m
>                             |> Map.tryPick (fun (i, k) _v -> if k = a then Some 
> i else None)
>                             |> Option.defaultValue m.Count
>                         Map.add (i, a) (term s b) m
>                     let sym_mod r a b = 
>                         match m |> Map.tryPick (fun (i, k) v -> if k = a then 
> Some (i, v) else None) with
>                         | Some (i, a') -> Map.add (i, a) (apply s (term s b, 
> a')) m
>                         | None -> raise_type_error (add_trace s r) "Cannot find 
> key %s in record." a
>                     match x with
>                     | RSymbol((_,a),b) -> sym a b
>                     | RSymbolModify((r,a),b) -> sym_mod r a b
>                     | RVar((r,a),b) -> sym (var r a) b
>                     | RVarModify((r,a),b) -> sym_mod r (var r a) b
>                     ) withs
>                 |> fold (fun m -> function
>                     | WSymbol(r,a) ->
>                         m |> Map.filter (fun (_, k) _ -> k <> a)
>                     | WVar(r,a) ->
>                         m |> Map.filter (fun (_, k) _ -> k <> var r a)
>                     ) withouts
>             
>             let rec dive m = function
>                 | (r,x) :: xs ->
>                     let s = add_trace s r
>                     match term s x with
>                     | DSymbol b -> 
>                         let v =
>                             m |> Map.tryPick (fun (i, k) v -> if k = b then Some
> (i, v) else None)
>                         match v with
>                         | Some (i, DRecord a) -> Map.add (i, b) (DRecord (dive a
> xs)) m
>                         | Some a -> raise_type_error s <| sprintf "Expected a 
> record as the result of indexing.\nGot: %s" (show_data (a |> snd))
>                         // match Map.tryFind b m with
>                         // | Some (DRecord a) -> Map.add b (DRecord (dive a xs))
> m
>                         // | Some a -> raise_type_error s <| sprintf "Expected a
> record as the result of indexing.\nGot: %s" (show_data a)
>                         | None -> raise_type_error s <| sprintf "Cannot find the
> key %s in a record." b
>                     | b -> raise_type_error s <| sprintf "Expected a 
> symbol.\nGot: %s" (show_data b)
>                 | [[]] -> m |> map
> 
>             match vars with
>             | (r,x) :: xs ->
>                 match term s x with
>                 | DRecord l -> dive l xs
>                 | a -> raise_type_error s <| sprintf "Expected a record.\nGot: 
> %s" (show_data a)
>             | [[]] -> map Map.empty
>             |> DRecord
>         | EPatternMemo _ | EReal _ -> failwith "Compiler error: Should have been
> eliminated during the prepass."
>         | EModule a -> DRecord(a |> Seq.map (fun (KeyValue (k, v)) -> (a.Count, 
> k), (v |> term s)) |> Map.ofSeq)
>         | EPair(r,a,b) -> DPair(term s a, term s b)
>         | ESeq(r,a,b) -> 
>             let s = add_trace s r
>             match term s a with
>             | DB -> term s b
>             | a -> raise_type_error s <| sprintf "Expected unit.\nGot: %s" 
> (show_data a)
>         | EAnnot(r,a,b) ->
>             let s = add_trace s r
>             let a = term s a 
>             let a_ty = data_to_ty s a
>             let b = ty s b
>             if a_ty <> b then raise_type_error s <| sprintf "The body does not 
> match the annotation.\nGot: %s\nExpected: %s" (show_ty a_ty) (show_ty b)
>             a            
>         | EExists(r,a,b) ->
>             let s = add_trace s r
>             let a = List.map (ty s) a |> List.toArray
>             let b = term s b
>             DExists(a,b)
>         | EPatternMiss a -> raise_type_error s <| sprintf "Pattern miss.\nGot: 
> %s" (show_data (term s a))
>         | ETypePatternMiss a -> raise_type_error s <| sprintf "Pattern 
> miss.\nGot: %s" (show_ty (ty s a))
>         | EIfThenElse(r,cond,tr,fl) -> let s = add_trace s r in if_ s (term s 
> cond) tr fl
>         | EIfThen(r,cond,tr) -> let s = add_trace s r in if_ s (term s cond) tr 
> (EB r)
>         | EMutableSet(r,a,b,c) ->
>             let s = add_trace s r
>             let a,a_layout_ty =
>                 match term s a with
>                 | DV(L(i,YLayout(a_layout_ty,(StackMutable | HeapMutable))) & a)
> -> a,a_layout_ty
>                 | DV(L(_,YLayout _)) -> raise_type_error s "Expected a mutable 
> layout type, but got an immutable one."
>                 | a -> raise_type_error s <| sprintf "Expected a mutable layout 
> type.\nGot: %s" (show_data a)
>             let b = 
>                 List.map (fun (r,b) -> 
>                     match term s b with
>                     | DSymbol b -> r,b
>                     | b -> raise_type_error (add_trace s r) <| sprintf "Expected
> a symbol.\nGot: %s" (show_data b)
>                     ) b
>             let c_ty =
>                 List.fold (fun (r,a) (r',b) ->
>                     match a with
>                     | YRecord a ->
>                         match a |> Map.tryPick (fun (_, k) v -> if k = b then 
> Some v else None) with
>                         | Some a -> r', a
>                         | None -> raise_type_error (add_trace s r) <| sprintf 
> "Key %s not found in the layout type." b
>                     | a -> raise_type_error (add_trace s r) <| sprintf "Expected
> a record.\nGot: %s" (show_ty a)
>                     ) (r,a_layout_ty) b |> snd
>             let c = term s c |> dyn false s
>             let c =
>                 match c with
>                 | DRecord c ->
>                     c
>                     |> Seq.map (fun (KeyValue ((i, k), v)) ->
>                         let i =
>                             match c_ty with
>                             | YRecord a ->
>                                 a |> Map.tryPick (fun (i', k') _ -> if k = k' 
> then Some i' else None)
>                             | _ -> None
>                             |> Option.defaultValue i
>                         (i, k), v
>                     )
>                     |> Map.ofSeq
>                     |> DRecord
>                 | _ -> c
>             let c_ty' = data_to_ty s c
>             if c_ty' = c_ty then push_typedop_no_rewrite s 
> (TyLayoutMutableSet(a,List.map snd b,c)) YB
>             else raise_type_error s <| sprintf "The two side do not have the 
> same type.\nGot: %s\nExpected: %s" (show_ty c_ty') (show_ty c_ty)
>         | EMacro(r,a,b) ->
>             let s = add_trace s r
>             let a = a |> List.map (function MText x -> CMText x | MTerm x -> 
> CMTerm(term s x |> dyn false s) | MType x -> CMType(ty s x) | MLitType x -> 
> CMTypeLit(ty s x |> assert_ty_lit s))
>             push_typedop_no_rewrite s (TyMacro(a)) (ty s b)
>         | EPrototypeApply(_,prot_id,b) ->
>             let rec loop = function
>                 | YNominal b ->
>                     match 
> env.prototypes_instances.TryGetValue((prot_id,b.node.id)) with
>                     | true,x -> term s x
>                     | _ -> raise_type_error s "An instance of the prototype 
> being applied could be found in the dictionary."
>                 | YApply(a,b) -> type_apply s (loop a) b
>                 | b -> raise_type_error s <| sprintf "Expected a nominal or a 
> deferred type apply.\nGot: %s" (show_ty b)
>             loop (ty s b)
>         | EOp(r,NominalCreate,[[a;EType(_,b)]]) | ENominal(r,a,b) -> enominal 
> (r,a,b)
>         | EUnbox(r,k,id,a,on_succ,on_fail) ->
>             let s = add_trace s r
>             let run s a = store_term s id a; term s on_succ
>             match term s a with
>             | DNominal(DUnion(DPair(DSymbol k',a),_),_) -> if k = k' then run s 
> a else term s on_fail
>             | DNominal(DV(L(_,YUnion h) & i),_) ->
>                 let body blk = 
>                     match Map.tryPick (fun (_, name') v -> if k = name' then 
> Some v else None) h.Item.cases with
>                     | Some v when Set.contains k blk = false ->
>                         let on_succ, ret_ty = 
>                             let a = ty_to_data s v
>                             let s = {s with unions = Map.add i (UnionData (k,a))
> s.unions; cse = Dictionary(HashIdentity.Structural) :: s.cse; seq = 
> ResizeArray()}
>                             let x = run s a |> dyn false s
>                             Map.add k ([[a]], (seq_apply s x)) Map.empty, 
> data_to_ty s x
>                         let on_succ,on_fails = 
>                             let blk = Set.add k blk
>                             if blk.Count = h.Item.cases.Count then on_succ, None
> // Have to do this otherwise it would have hit EPatternMiss
>                             else
>                                 let on_fails, ret_ty' = term_scope {s with 
> unions = Map.add i (UnionBlockers blk) s.unions} on_fail
>                                 if ret_ty <> ret_ty' then raise_type_error s 
> $"The types of two branches of an union unbox do not match.\nGot: {show_ty 
> ret_ty}\nAnd: {show_ty ret_ty'}"
>                                 match on_fails with
>                                 | 
> [[|TyLocalReturnOp(_,TyUnionUnbox([[i']],_,on_succ',on_fail'),_)|]] when i = i' 
> -> Map.foldBack Map.add on_succ' on_succ , on_fail'
>                                 | _ -> on_succ, Some on_fails
>                         push_typedop_no_rewrite s 
> (TyUnionUnbox([[i]],h,on_succ,on_fails)) ret_ty
>                     | _ -> term s on_fail
>                 match Map.tryFind i s.unions with
>                 | Some (UnionData (k',a)) -> if k = k' then run s a else term s 
> on_fail
>                 | Some (UnionBlockers blk) -> body blk
>                 | None -> body Set.empty
>             | _ -> term s on_fail
>         | EOp(r,Unbox,[[a;on_succ]]) -> 
>             let s = add_trace s r
>             let on_succ = term s on_succ
>             let run s a = apply s (on_succ,a)
>             match term s a with
>             | DNominal(DUnion(a,_),_) -> run s a 
>             | DNominal(DV(L(_,YUnion h) & i) & a,_) ->
>                 let body blk = 
>                     let cases, case_ty =
>                         Map.fold (fun (m, case_ty) (_, k) v ->
>                             if Set.contains k blk = false then
>                                 let a = ty_to_data s v
>                                 let s = {s with unions = Map.add i (UnionData 
> (k,a)) s.unions; cse = Dictionary(HashIdentity.Structural) :: s.cse; seq = 
> ResizeArray()}
>                                 let x = run s (DPair(DSymbol k, a)) |> dyn false
> s
>                                 let x_ty' = data_to_ty s x
>                                 let case_ty = 
>                                     match case_ty with
>                                     | Some x_ty when x_ty' <> x_ty -> 
> raise_type_error s <| sprintf "One union case for key %s has a different return 
> that the previous one.\nGot: %s\nExpected: %s" k (show_ty x_ty') (show_ty x_ty)
>                                     | Some _ -> case_ty
>                                     | None -> Some x_ty'
>                                 Map.add k ([[a]], seq_apply s x) m, case_ty
>                             else
>                                 m, case_ty
>                             ) (Map.empty,None) h.Item.cases
>                     push_typedop_no_rewrite s (TyUnionUnbox([[i]],h,cases,None))
> (Option.get case_ty)
>                 match Map.tryFind i s.unions with
>                 | Some (UnionData (k,a)) -> run s (DPair(DSymbol k, a))
>                 | Some (UnionBlockers blk) -> body blk
>                 | None -> body Set.empty
>             | a -> raise_type_error s <| sprintf "Expected an union type.\nGot: 
> %s" (show_data a)
>         | EOp(r,Unbox2,[[a;b;on_succ;on_fail]]) ->
>             let s = add_trace s r
>             let on_succ = term s on_succ
>             let on_fail = term s on_fail
>             let mutable case_ty = None
>             let s' () = {s with cse = Dictionary(HashIdentity.Structural) :: 
> s.cse; seq = ResizeArray()}
>             let assert_case_ty s x =
>                 let x_ty' = data_to_ty s x
>                 match case_ty with
>                 | Some x_ty -> if x_ty' <> x_ty then raise_type_error s <| 
> sprintf "One union case has a different return than the previous one.\nGot: 
> %s\nExpected: %s" (show_ty x_ty') (show_ty x_ty)
>                 | None -> case_ty <- Some x_ty'
>             let run s x =
>                 let x = apply s x |> dyn false s
>                 assert_case_ty s x
>                 seq_apply s x
>             let case_on_fail () = run (s'()) (on_fail, DB)
>             let key_value = function
>                 | DPair(DSymbol k, a) -> k, a
>                 | _ -> failwith "Compiler error: Malformed union."
>             match term s a, term s b with
>             | DNominal(DUnion(_,h),_), DNominal(DUnion(_,h'),_) when h <> h' ->
>                 raise_type_error s <| sprintf "The two variables have different 
> union types.\nGot: %s\nGot: %s" (show_ty (YUnion h)) (show_ty (YUnion h'))
>             | DNominal(DUnion(a,_),_), DNominal(DUnion(a',_),_) ->
>                 let k,a = key_value a
>                 let k',a' = key_value a'
>                 if k = k' then apply s (on_succ, DPair(DSymbol k, DPair(a, a')))
>                 else apply s (on_fail, DB)
>             | DNominal(DV(L(_,YUnion h)),_), DNominal(DUnion(_,h'),_) | 
> DNominal(DUnion(_,h),_), DNominal(DV(L(_,YUnion h')),_) when h <> h' ->
>                 raise_type_error s <| sprintf "The two variables have different 
> union types.\nGot: %s\nGot: %s" (show_ty (YUnion h)) (show_ty (YUnion h'))
>             | DNominal(DV(L(_,YUnion h) & i),_), DNominal(DUnion(a',_),_) ->
>                 let k,a' = key_value a'
>                 let v = h.Item.cases |> Map.pick (fun (_, name') v -> if k = 
> name' then Some v else None)
>                 let case_on_succ =
>                     let s = s'()
>                     let a = ty_to_data s v
>                     let s = {s with unions = Map.add i (UnionData (k,a)) 
> s.unions}
>                     [[a]], run s (on_succ, DPair(DSymbol k, DPair(a, a')))
>                 push_typedop_no_rewrite s (TyUnionUnbox([[i]],h,Map.add k 
> case_on_succ Map.empty,Some (case_on_fail()))) (Option.get case_ty)
>             | DNominal(DUnion(a,_),_), DNominal(DV(L(_,YUnion h) & i'),_) ->
>                 let k,a = key_value a
>                 let v = h.Item.cases |> Map.pick (fun (_, name') v -> if k = 
> name' then Some v else None)
>                 let case_on_succ =
>                     let s = s'()
>                     let a' = ty_to_data s v
>                     let s = {s with unions = Map.add i' (UnionData (k,a')) 
> s.unions}
>                     [[a']], run s (on_succ, DPair(DSymbol k, DPair(a, a')))
>                 push_typedop_no_rewrite s (TyUnionUnbox([[i']],h,Map.add k 
> case_on_succ Map.empty,Some (case_on_fail()))) (Option.get case_ty)
>             | DNominal(DV(L(_,YUnion h & t)),_), DNominal(DV(L(_,YUnion h' & 
> t')),_) when h <> h' -> 
>                 raise_type_error s <| sprintf "The two variables have different 
> union types.\nGot: %s\nGot: %s" (show_ty t) (show_ty t')
>             | DNominal(DV(L(_,YUnion h) & i),_), DNominal(DV(L(_,YUnion _) & 
> i'),_) ->
>                 let cases_on_succ =
>                     Map.map (fun (_, k) v ->
>                         let s = s'()
>                         let a,a' = ty_to_data s v, ty_to_data s v
>                         let s = {s with unions = 
>                                             let u = s.unions 
>                                             let u = Map.add i (UnionData (k,a)) 
> u
>                                             Map.add i' (UnionData (k,a')) u
>                                             }
>                         [[a;a']], run s (on_succ, DPair(DSymbol k, DPair(a, 
> a')))
>                         ) h.Item.cases
>                     |> Seq.map (fun (KeyValue ((_, k), v)) -> k, v)
>                     |> Map.ofSeq
>                 push_typedop_no_rewrite s 
> (TyUnionUnbox([[i;i']],h,cases_on_succ,Some (case_on_fail()))) (Option.get 
> case_ty)
>             | a,a' -> raise_type_error s <| sprintf "Expected two union 
> types.\nGot: %s\nAnd: %s" (show_data a) (show_data a')
>         | EOp(r,UnionUntag,[[EType(_,t);a;on_succ;on_fail]]) ->
>             let t = ty s t
>             match nominal_type_apply s t with
>             | YUnion h ->
>                 let h = h.Item
>                 let on_succ, on_fail = term s on_succ, term s on_fail
>                 let lit i =
>                     if 0 <= i && i < h.tag_cases.Length then
>                         let k,v = h.tag_cases.[[i]]
>                         type_apply s (apply s (on_succ, DSymbol k)) v
>                     else raise_type_error s $"Invalid tag 0 <= {i} < 
> {h.tag_cases.Length} in UnionUntag."
>                 match term s a with
>                 | DV(L(i,YPrim Int32T) as tyv) as a -> 
>                     let key = TyOp(UnionUntag,[[a]])
>                     match cse_tryfind s key with
>                     | Some(DLit(LitInt32 i)) -> lit i
>                     | Some _ -> failwith "Compiler error: Expected an 32-bit 
> int."
>                     | None ->
>                         let on_fail, on_fail_ty =
>                             let s = {s with cse = 
> Dictionary(HashIdentity.Structural) :: s.cse; seq = ResizeArray()}
>                             let r = apply s (on_fail, DB) |> dyn false s
>                             seq_apply s r, data_to_ty s r
>                         let on_succ =
>                             Array.mapi (fun i (k,v) ->
>                                 let cse = Dictionary(HashIdentity.Structural)
>                                 cse.Add(key,DLit(LitInt32 i))
>                                 let s = {s with cse = cse :: s.cse; seq = 
> ResizeArray()}
>                                 let r = type_apply s (apply s (on_succ, DSymbol 
> k)) v |> dyn false s
>                                 let r_ty = data_to_ty s r
>                                 if on_fail_ty <> r_ty then raise_type_error s <|
> sprintf "Return type of the success case does not match the failure one.\nGot: 
> %s\nExpected: %s" (show_ty r_ty) (show_ty on_fail_ty)
>                                 seq_apply s r
>                                 ) h.tag_cases
>                         push_typedop_no_rewrite s 
> (TyIntSwitch(tyv,on_succ,on_fail)) on_fail_ty
>                 | DLit(LitInt32 i) -> lit i
>                 | a -> raise_type_error s <| sprintf "Expected an i32.\nGot: %s"
> (show_data a)
>             | _ -> raise_type_error s <| sprintf "Expected an union type.\nGot: 
> %s" (show_ty t)
>         | ELet(r,i,a,b) -> let s = add_trace s r in store_term s i (term s a); 
> term s b
>         | EPairTest(r,bind,p1,p2,on_succ,on_fail) ->
>             let s = add_trace s r
>             match v s bind with
>             | DPair(a,b) -> store_term s p1 a; store_term s p2 b; term s on_succ
>             | _ -> term s on_fail
>         | EExistsTest(r,bind,pat_type,pat,on_succ,on_fail) ->
>             let s = add_trace s r
>             match v s bind with
>             | DExists(a,b) -> Array.iter2 (store_ty s) pat_type a; store_term s 
> pat b; term s on_succ
>             | DV(L(_,YExists)) -> raise_type_error s "Runtime existentials 
> cannot be destructured. They are a compile time feature only."
>             | _ -> term s on_fail
>         | ESymbolTest(r,a,bind,on_succ,on_fail) ->
>             let s = add_trace s r
>             match v s bind with
>             | DSymbol a' when a = a' -> term s on_succ
>             | _ -> term s on_fail
>         | ERecordTest(r,a,bind,on_succ,on_fail) ->
>             let s = add_trace s r
>             match v s bind with
>             | DRecord l ->
>                 let rec loop = function
>                     | x :: x' ->
>                         let sym a b =
>                             match l |> Map.tryPick (fun (_, k) v -> if k = a 
> then Some v else None) with
>                             | Some a -> store_term s b a; loop x'
>                             | None -> term s on_fail
>                         match x with
>                         | Symbol((_,a),b) -> sym a b
>                         | Var((r,a),b) ->
>                             match term s a with
>                             | DSymbol a -> sym a b
>                             | a -> raise_type_error (add_trace s r) <| sprintf 
> "Expected a symbol.\nGot: %s" (show_data a)
>                     | [[]] -> term s on_succ
>                 loop a
>             | _ -> term s on_fail
>         | EAnnotTest(r,a,bind,on_succ,on_fail) -> let s = add_trace s r in if 
> data_to_ty s (v s bind) = ty s a then term s on_succ else term s on_fail
>         | EUnitTest(r,bind,on_succ,on_fail) -> let s = add_trace s r in match v 
> s bind with DB -> term s on_succ | _ -> term s on_fail
>         | ENominalTest(r,a,bind,p1,on_succ,on_fail) ->
>             let s = add_trace s r
>             match ty s a with
>             | YNominal a ->
>                 match v s bind with
>                 | DNominal((DUnion _ | DV(L(_,YUnion _))),_) -> raise_type_error
> s "Got an union in a nominal pattern."
>                 | DNominal(v,b) ->
>                     let rec loop = function
>                         | YNominal b -> if a = b then store_term s p1 v; term s 
> on_succ else term s on_fail
>                         | YApply(a,_) -> loop a
>                         | _ -> raise_type_error s <| sprintf "Compiler error: 
> Expected a deferred type apply or a nominal.\nGot: %s" (show_ty b)
>                     loop b
>                 | _ -> term s on_fail
>             | a -> raise_type_error s <| sprintf "Expected a nominal on the left
> side of the pattern.\nGot: %s" (show_ty a)
>         | ELitTest(r,a,bind,on_succ,on_fail) -> let s = add_trace s r in 
> lit_test s a bind on_succ on_fail
>         | EDefaultLitTest(r,a,b,bind,on_succ,on_fail) -> let s = add_trace s r 
> in lit_test s (default_lit s a (ty s b)) bind on_succ on_fail
>         | ETypecase(r,a,b) ->
>             let s = add_trace s r
>             let a = ty s a
>             let rec loop = function
>                 | (a',b) :: rest -> if is_unify s (a,ty s a') then Some(term s 
> b) else loop rest
>                 | [[]] -> None
>             match loop b with
>             | Some r -> r
>             | None -> raise_type_error s <| sprintf "Typecase miss.\nGot: %s" 
> (show_ty a)
>         | EOp(_,ToFunPtr,[[a]]) ->
>             match term s a with
>             | DFunction(body,Some(TFun(domain,range,_)),a,b,c,d) -> 
> DFunction(body,Some(TFun(domain,range,FT_Pointer)),a,b,c,d)
>             | DV(L(_,YFun _)) -> raise_type_error s <| sprintf "Cannot convert a
> runtime function to a closure. The closure conversion should be done on a 
> compile time funciton."
>             | a -> raise_type_error s <| sprintf "Expected a function.\nGot: %s"
> (show_data a)
>         | EOp(_,ToFunClosure,[[a]]) ->
>             match term s a with
>             | DFunction(body,Some(TFun(domain,range,_)),a,b,c,d) -> 
> DFunction(body,Some(TFun(domain,range,FT_Closure)),a,b,c,d)
>             | DV(L(_,YFun _)) -> raise_type_error s <| sprintf "Cannot convert a
> runtime function to a function pointer. The pointer conversion should be done on
> a compile time funciton."
>             | a -> raise_type_error s <| sprintf "Expected a function.\nGot: %s"
> (show_data a)
>         | EOp(_,PragmaUnrollPush,[[a]]) ->
>             match term s a with
>             | DLit (LitInt32 _) as x -> push_op_no_rewrite s PragmaUnrollPush x 
> YB
>             | a -> raise_type_error s <| sprintf "Expected an i32 literal.\nGot:
> %s" (show_data a)
>         | EOp(_,PragmaUnrollPop,[[]]) -> 
>             push_op_no_rewrite' s PragmaUnrollPop [[]] YB
>         | EOp(_,BackendSwitch,l) ->
>             let mutable t = None
>             let mutable d = None
>             let validate_type t' =
>                 match t with
>                 | Some t -> if t <> t' then raise_type_error s $"The backend 
> switch needs to have the same type for all of its branches.\nGot: {show_ty 
> t'}\nExpected: {show_ty t}"
>                 | None -> t <- Some t'
>             l |> List.iter (function
>                 | EPair(_,ELit(_,LitString backend),b) -> 
>                     // The reason why we're evaling all the branches intead of 
> just one and in this specific order is because otherwise
>                     // compile time hashmaps could make type inference unsound.
>                     if backend = s.backend.node then 
>                         let d' = term s b
>                         validate_type (data_to_ty s d')
>                         d <- Some d'
>                     else
>                         let _,t' = term_scope s b
>                         validate_type t'
>                 | _ -> raise_type_error s "BackendSwitch should be a list of 
> (string literal,body) pairs."
>                 )
>             match d with
>             | Some cur -> cur |> dyn true s
>             | None -> raise_type_error s $"Cannot find the backend 
> {s.backend.node} in the backend switch op."
>         | EOp(_,UsesOriginalTermVars,[[a;b]]) ->
>             let a = term s a |> data_term_vars'
>             let b = term s b |> data_term_vars'
>             let c = a.Length = b.Length && 
> HashSet(a,HashIdentity.Reference).SetEquals(b)
>             DLit(LitBool c)
>         | EOp(_,UsesOriginalNominals,[[a;b]]) ->
>             let a = term s a |> data_nominals
>             let b = term s b |> data_nominals
>             let c = a.Length = b.Length && 
> HashSet(a,HashIdentity.Reference).SetEquals(b)
>             DLit(LitBool c)
>         | EOp(_,While,[[cond;body]]) -> 
>             match term_scope s cond with
>             | [[|TyLocalReturnOp(_,TyJoinPoint cond,_)|]], ty ->
>                 match ty with
>                 | YPrim BoolT -> 
>                     match term_scope s body with
>                     | body, YB & ty -> push_typedop s (TyWhile(cond,body)) ty
>                     | _, ty -> raise_type_error s <| sprintf "The body of the 
> while loop must be of type unit.\nGot: %s" (show_ty ty)
>                 | _ -> raise_type_error s <| sprintf "The conditional of the 
> while loop must be of type bool.\nGot: %s" (show_ty ty)
>             | _ -> raise_type_error s "The body of the conditional of the while 
> loop must be a solitary join point."
>         | EOp(_,Do,[[body]]) ->
>             match term_scope s body with
>             | body, YB & ty -> push_typedop s (TyDo body) ty
>             | _, ty -> raise_type_error s <| sprintf "The body of the do binding
> must be of type unit.\nGot: %s" (show_ty ty)
>         | EOp(_,Indent,[[body]]) ->
>             let body, ty = term_scope s body
>             push_typedop s (TyIndent body) ty
>         | EOp(_,(LayoutToHeap | LayoutToHeapMutable | LayoutToStackMutable as 
> op),[[a]]) -> 
>             let x = dyn false s (term s a)
>             let ty = data_to_ty s x
>             let layout =
>                 match op with
>                 | LayoutToHeap -> Heap
>                 | LayoutToHeapMutable -> HeapMutable
>                 | LayoutToStackMutable -> StackMutable
>                 | _ -> raise_type_error s "Compiler error: Forgot a case in 
> LayoutTo."
>             let ret_ty = YLayout(ty,layout)
>             let key = TyToLayout(x,ret_ty)
>             push_typedop_no_rewrite s key ret_ty
>         | EOp(_,LayoutIndex,[[a]]) -> 
>             match term s a with
>             | DV(L(i,YLayout(ty,layout)) as tyv) as a -> 
>                 match layout with
>                 | StackMutable | HeapMutable -> push_typedop_no_rewrite s 
> (TyLayoutIndexAll tyv) ty
>                 | Heap ->
>                     match ty with
>                     | YRecord l -> DRecord(Map.map (fun (_,b) ty -> push_typedop
> s (TyLayoutIndexByKey(tyv,b)) ty) l)
>                     | _ -> push_typedop s (TyLayoutIndexAll tyv) ty
>             | a -> raise_type_error s <| sprintf "Expected a layout type.\nGot: 
> %s" (show_data a)
>         | EOp(_,TypeToVar,[[EType(_,a)]]) -> push_typedop_no_rewrite s 
> (TyOp(TypeToVar,[[]])) (ty s a)
>         | EOp(_,LitToTypeLit,[[a]]) -> 
>             match term s a with
>             | DLit x -> DTLit x
>             | DSymbol x -> DSymbol x
>             | a -> raise_type_error s <| sprintf "Expected a symbol or a type 
> literal.\nGot: %s" (show_data a)
>         | EOp(_,LitToSymbol,[[a]]) -> 
>             match term s a with
>             | DLit x ->
>                 match x with
>                 | LitInt8 a -> a.ToString("R") |> DSymbol
>                 | LitInt16 a -> a.ToString("R") |> DSymbol
>                 | LitInt32 a -> a.ToString("R") |> DSymbol
>                 | LitInt64 a -> a.ToString("R") |> DSymbol
>                 | LitUInt8 a -> a.ToString("R") |> DSymbol
>                 | LitUInt16 a -> a.ToString("R") |> DSymbol
>                 | LitUInt32 a -> a.ToString("R") |> DSymbol
>                 | LitUInt64 a -> a.ToString("R") |> DSymbol
>                 | LitFloat32 a -> a.ToString("R") |> DSymbol
>                 | LitFloat64 a -> a.ToString("R") |> DSymbol
>                 | LitBool a -> a.ToString() |> DSymbol
>                 | LitChar a -> a.ToString() |> DSymbol
>                 | LitString a -> a.ToString() |> DSymbol
>             | a -> raise_type_error s <| sprintf "Expected a symbol or a type 
> literal.\nGot: %s" (show_data a)
>         | EOp(_,StringLitToSymbol,[[a]]) -> 
>             match term s a with
>             | DLit(LitString a) -> DSymbol a
>             | a -> raise_type_error s <| sprintf "Expected a string 
> literal.\nGot: %s" (show_data a)
>         | EOp(_,SymbolToString,[[a]]) -> 
>             match term s a with
>             | DSymbol a -> DLit (LitString a)
>             | a -> raise_type_error s <| sprintf "Expected a symbol.\nGot: %s" 
> (show_data a)
>         | EOp(_,TypeToSymbol,[[EType(_,a)]]) -> 
>             match ty s a with
>             | YSymbol a -> DSymbol a
>             | a -> raise_type_error s <| sprintf "Expected a symbol.\nGot: %s" 
> (show_ty a)
>         | EOp(_,TypeLitToLit,[[EType(_,a)]]) -> 
>             let rec loop = function
>                 | YLit a -> DLit a
>                 | YSymbol a -> DSymbol a
>                 | YNominal _ | YApply _ as a -> loop (nominal_type_apply s a)
>                 | a -> raise_type_error s <| sprintf "Expected a type literal or
> a symbol.\nGot: %s" (show_ty a)
>             loop (ty s a)
>         | EOp(_,(TypeToVar | TypeToSymbol),[[a]]) -> raise_type_error s 
> "Expected a type."
>         | EOp(_,Dyn,[[a]]) -> term s a |> dyn true s
>         | EOp(_,StringLength,[[EType(_,t);a]]) ->
>             let t = ty s t
>             if is_any_int t = false then raise_type_error s <| sprintf "Expected
> an int.\nGot: %s" (show_ty t)
>             match term s a with
>             | DLit(LitString str) -> 
>                 match t with
>                 | YPrim Int8T -> try DLit (LitInt8 (System.Convert.ToSByte 
> str.Length)) with :? System.OverflowException -> raise_type_error s <| sprintf 
> "Literal conversion to i8 failed as the string length is either too large.\nGot:
> %i" str.Length
>                 | YPrim Int16T -> try DLit (LitInt16 (System.Convert.ToInt16 
> str.Length)) with :? System.OverflowException -> raise_type_error s <| sprintf 
> "Literal conversion to i16 failed as the string length is either too 
> large.\nGot: %i" str.Length
>                 | YPrim Int32T -> try DLit (LitInt32 (System.Convert.ToInt32 
> str.Length)) with :? System.OverflowException -> raise_type_error s <| sprintf 
> "Literal conversion to i32 failed as the string length is either too 
> large.\nGot: %i" str.Length
>                 | YPrim Int64T -> try DLit (LitInt64 (System.Convert.ToInt64 
> str.Length)) with :? System.OverflowException -> raise_type_error s <| sprintf 
> "Literal conversion to i64 failed as the string length is either too 
> large.\nGot: %i" str.Length
>                 | YPrim UInt8T -> try DLit (LitUInt8 (System.Convert.ToByte 
> str.Length)) with :? System.OverflowException -> raise_type_error s <| sprintf 
> "Literal conversion to u8 failed as the string length is either too large.\nGot:
> %i" str.Length
>                 | YPrim UInt16T -> try DLit (LitUInt16 (System.Convert.ToUInt16 
> str.Length)) with :? System.OverflowException -> raise_type_error s <| sprintf 
> "Literal conversion to u16 failed as the string length is either too 
> large.\nGot: %i" str.Length
>                 | YPrim UInt32T -> try DLit (LitUInt32 (System.Convert.ToUInt32 
> str.Length)) with :? System.OverflowException -> raise_type_error s <| sprintf 
> "Literal conversion to u32 failed as the string length is either too 
> large.\nGot: %i" str.Length
>                 | YPrim UInt64T -> try DLit (LitUInt64 (System.Convert.ToUInt64 
> str.Length)) with :? System.OverflowException -> raise_type_error s <| sprintf 
> "Literal conversion to u64 failed as the string length is either too 
> large.\nGot: %i" str.Length
>                 | _ -> failwith "impossible"
>             | DV(L(_,YPrim StringT)) & str -> push_typedop s 
> (TyStringLength(t,str)) t
>             | x -> raise_type_error s <| sprintf "Expected a string.\nGot: %s" 
> (show_data x)
>         | EOp(_,StringIndex,[[a;b]]) ->
>             match term2 s a b with
>             | DLit(LitString a), DLit b ->
>                 let b = to_i32 b
>                 if 0 <= b && b < a.Length then a.[[int b]] |> LitChar |> DLit
>                 else raise_type_error s <| sprintf "Cannot index into a string 
> of length %i at index %i." a.Length b
>             | a,b ->
>                 match data_to_ty s a, data_to_ty s b with
>                 | YPrim StringT,bt when is_any_int bt -> push_binop s 
> StringIndex (a,b) (YPrim CharT)
>                 | a,b -> raise_type_error s <| sprintf "Expected a string and an
> int as arguments.\nGot: %s\nAnd: %s" (show_ty a) (show_ty b)
>         | EOp(_,StringSlice,[[a;b;c]]) ->
>             match term3 s a b c with
>             | DLit(LitString a), DLit b, DLit c ->
>                 let b,c = to_i32 b, to_i32 c
>                 if 0 <= b && b <= c && c < a.Length then a.[[int b..int c]] |> 
> LitString |> DLit
>                 else raise_type_error s <| sprintf "String of length %i's slice 
> from %i to %i is invalid." a.Length b c
>             | a,b,c ->
>                 match data_to_ty s a, data_to_ty s b, data_to_ty s c with
>                 | YPrim StringT, bt, ct when is_any_int bt && is_any_int ct -> 
> push_triop s StringSlice (a,b,c) (YPrim StringT)
>                 | a,b,c -> raise_type_error s <| sprintf "Expected a string and 
> two ints as arguments.\nGot: %s\nAnd: %s\nAnd: %s" (show_ty a) (show_ty b) 
> (show_ty c)
>         | EArray(_,a,b) ->
>             match ty s b with
>             | YArray el as b -> 
>                 let a = 
>                     List.map (fun x -> 
>                         let x = term s x |> dyn false s
>                         let x_ty = data_to_ty s x
>                         if x_ty = el then x 
>                         else raise_type_error s $"All the elements in the array 
> literal have to be the type {show_ty el}.\nGot: {show_ty x_ty}"
>                         ) a
>                 push_typedop_no_rewrite s (TyArrayLiteral(el,a)) b
>             | b -> raise_type_error s $"Expected an array_base.\nGot: {show_ty 
> b}"
>         | EOp(_,ArrayCreate,[[EType(_,a);b]]) ->
>             let a,b = ty s a, term s b
>             match data_to_ty s b with
>             | bt when is_any_int bt -> push_typedop_no_rewrite s 
> (TyArrayCreate(a,b)) (YArray a)
>             | b -> raise_type_error s <| sprintf "Expected an int as the size of
> the array.\nGot: %s" (show_ty b)
>         | EOp(_,ArrayLength,[[EType(_,t);a]]) ->
>             let t = ty s t
>             if is_any_int t = false then raise_type_error s <| sprintf "Expected
> an int.\nGot: %s" (show_ty t)
>             let a = term s a
>             match data_to_ty s a with
>             | YArray _ -> push_typedop s (TyArrayLength(t,a)) t
>             | a -> raise_type_error s <| sprintf "Expected an array_base.\nGot: 
> %s" (show_ty a)
>         | EOp(_,ArrayIndex,[[a;b]]) ->
>             match term s a with
>             | DV(L(_,YArray ty)) & a ->
>                 let b = term s b
>                 match data_to_ty s b with
>                 | bt when is_any_int bt -> push_binop_no_rewrite s ArrayIndex 
> (a,b) ty
>                 | b -> raise_type_error s <| sprintf "Expected an int as the 
> index argumet.\nGot: %s" (show_ty b)
>             | a -> raise_type_error s <| sprintf "Expected an array_base.\nGot: 
> %s" (show_data a)
>         | EOp(_,ArrayIndexSet,[[a;b;c]]) ->
>             match term s a with
>             | DV(L(_,YArray ty)) & a ->
>                 let b = term s b
>                 match data_to_ty s b with
>                 | bt when is_any_int bt -> 
>                     let c = term s c |> dyn false s
>                     let ty' = data_to_ty s c
>                     if ty' = ty then push_triop_no_rewrite s ArrayIndexSet 
> (a,b,c) YB
>                     else raise_type_error s <| sprintf "The array and the value 
> being set do not have the same type.\nGot: %s\nExpected: %s" (show_ty ty') 
> (show_ty ty)
>                 | b -> raise_type_error s <| sprintf "Expected an int as the 
> index argumet.\nGot: %s" (show_ty b)
>             | a -> raise_type_error s <| sprintf "Expected an array_base.\nGot: 
> %s" (show_data a)
>         | EOp(_,RecordMap,[[a;b]]) ->
>             match term2 s a b with
>             | a, DRecord l -> Map.map (fun (_i, k) v -> apply s (a, record2 
> ((l.Count, "key"), DSymbol k) (((l.Count + 1), "value"), v))) l |> DRecord
>             | _, b -> raise_type_error s <| sprintf "Expected a record.\nGot: 
> %s" (show_data b)
>         | EOp(_,RecordIter,[[a;b]]) ->
>             match term2 s a b with
>             | a, DRecord l -> 
>                 Map.iter (fun (i,k) v ->
>                     match apply s (a, record2 ((l.Count, "key"), DSymbol k) 
> (((l.Count + 1), "value"), v)) with
>                     | DB -> ()
>                     | x -> raise_type_error s <| sprintf "Expected an unit 
> value.\nGot: %s" (show_data x)
>                     ) l 
>                 DB
>             | _, b -> raise_type_error s <| sprintf "Expected a record.\nGot: 
> %s" (show_data b)
>         | EOp(_,RecordFilter,[[a;b]]) ->
>             match term2 s a b with
>             | a, DRecord l ->
>                 Map.filter (fun (_i,k) v ->
>                     match apply s (a, record2 ((l.Count, "key"), DSymbol k) 
> (((l.Count + 1), "value"), v)) with
>                     | DLit(LitBool x) -> x
>                     | x -> raise_type_error s <| sprintf "Expected a bool 
> literal.\nGot: %s" (show_data x)
>                     ) l
>                 |> DRecord
>             | _, b -> raise_type_error s <| sprintf "Expected a record.\nGot: 
> %s" (show_data b)
>         | EOp(_,RecordFold,[[a;b;c]]) ->
>             match term3 s a b c with
>             | a, state, DRecord l -> Map.fold (fun state (i,k) v -> apply s (a, 
> record3 ((l.Count, "state"), state) (((l.Count + 1), "key"), DSymbol k) 
> (((l.Count + 2), "value"), v))) state l
>             | _, _, r -> raise_type_error s <| sprintf "Expected a record.\nGot:
> %s" (show_data r)
>         | EOp(_,RecordFoldBack,[[a;b;c]]) ->
>             match term3 s a b c with
>             | a, state, DRecord l -> Map.foldBack (fun (i,k) v state -> apply s 
> (a, record3 ((i, "state"), state) (((l.Count + 1), "key"), DSymbol k) (((l.Count
> + 2), "value"), v))) l state
>             | _, _, r -> raise_type_error s <| sprintf "Expected a record.\nGot:
> %s" (show_data r)
>         | EOp(_,RecordLength,[[a]]) ->
>             match term s a with
>             | DRecord l -> Map.count l |> LitInt32 |> DLit
>             | r -> raise_type_error s <| sprintf "Expected a record.\nGot: %s" 
> (show_data r)
>         | EOp(_,RecordTypeMap,[[a;EType(_,b)]]) ->
>             let a,l = term s a, ty_record s b
>             Map.map (fun (_i,k) v -> type_apply s (apply s (a, DSymbol k)) v) l 
> |> DRecord
>         | EOp(_,RecordTypeIter,[[a;EType(_,b)]]) ->
>             let a,l = term s a, ty_record s b
>             Map.iter (fun (_i, k) v ->
>                 match type_apply s (apply s (a, DSymbol k)) v with
>                 | DB -> ()
>                 | x -> raise_type_error s <| sprintf "Expected an unit 
> value.\nGot: %s" (show_data x)
>                 ) l 
>             DB
>         | EOp(_,RecordTypeFold,[[f;state;EType(_,x)]]) ->
>             let f,state,l = term s f, term s state, ty_record s x
>             Map.fold (fun state (_, k) v -> type_apply s (apply s ((apply s (f, 
> state), DSymbol k))) v) state l
>         | EOp(_,RecordTypeFoldBack,[[f;state;EType(_,x)]]) ->
>             let f,state,l = term s f, term s state, ty_record s x
>             Map.foldBack (fun (_, k) v state -> apply s ((type_apply s (apply s 
> (f, DSymbol k)) v), state)) l state
>         | EOp(_,RecordTypeLength,[[EType(_,a)]]) ->
>             Map.count (ty_record s a) |> LitInt32 |> DLit
>         | EOp(_,RecordTypeTryFind,[[EType(_,a);k;on_succ;on_fail]]) ->
>             match ty_record s a, term s k with
>             | l, DSymbol k ->
>                 match l |> Map.tryPick (fun (_, k') v -> if k' = k then Some v 
> else None) with
>                 | Some v -> type_apply s (term s on_succ) v
>                 | None -> apply s (term s on_fail, DB)
>             | _, k -> raise_type_error s <| sprintf "Expected a symbol.\nGot: 
> %s" (show_data k)
>         | EOp(_,UnionToRecord,[[EType(_,a);on_succ]]) ->
>             type_apply s (term s on_succ) (YRecord (ty_union s a).Item.cases)
>         | EOp(_,Add,[[a;b]]) -> 
>             let inline op a b = a + b
>             match term2 s a b with
>             | DLit a, DLit b ->
>                 match a, b with
>                 | LitInt8 a, LitInt8 b -> op a b |> LitInt8 |> DLit
>                 | LitInt16 a, LitInt16 b -> op a b |> LitInt16 |> DLit
>                 | LitInt32 a, LitInt32 b -> op a b |> LitInt32 |> DLit
>                 | LitInt64 a, LitInt64 b -> op a b |> LitInt64 |> DLit
>                 | LitUInt8 a, LitUInt8 b -> op a b |> LitUInt8 |> DLit
>                 | LitUInt16 a, LitUInt16 b -> op a b |> LitUInt16 |> DLit
>                 | LitUInt32 a, LitUInt32 b -> op a b |> LitUInt32 |> DLit
>                 | LitUInt64 a, LitUInt64 b -> op a b |> LitUInt64 |> DLit
>                 | LitFloat32 a, LitFloat32 b -> op a b |> nan_guardf32  |> 
> LitFloat32 |> DLit
>                 | LitFloat64 a, LitFloat64 b -> op a b |> nan_guardf64 |> 
> LitFloat64 |> DLit
>                 | a, b -> raise_type_error s <| sprintf "The two literals must 
> be both numeric and equal in type.\nGot: %s and %s" (show_lit a) (show_lit b)
>             | a, b ->
>                 let a_ty, b_ty = data_to_ty s a, data_to_ty s b 
>                 if a_ty = b_ty then
>                     if is_lit_zero a then b
>                     elif is_lit_zero b then a
>                     elif is_numeric a_ty then push_binop s Add (a,b) a_ty
>                     else raise_type_error s <| sprintf "The type of the two 
> arguments needs to be a numeric type.\nGot: %s" (show_ty a_ty)
>                 else
>                     raise_type_error s <| sprintf "The two sides need to have 
> the same numeric types.\nGot: %s and %s." (show_ty a_ty) (show_ty b_ty)
>         | EOp(_,Sub,[[a;b]]) ->
>             let inline op a b = a - b
>             match term2 s a b with
>             | DLit a, DLit b ->
>                 match a, b with
>                 | LitInt8 a, LitInt8 b -> op a b |> LitInt8 |> DLit
>                 | LitInt16 a, LitInt16 b -> op a b |> LitInt16 |> DLit
>                 | LitInt32 a, LitInt32 b -> op a b |> LitInt32 |> DLit
>                 | LitInt64 a, LitInt64 b -> op a b |> LitInt64 |> DLit
>                 | LitUInt8 a, LitUInt8 b -> op a b |> LitUInt8 |> DLit
>                 | LitUInt16 a, LitUInt16 b -> op a b |> LitUInt16 |> DLit
>                 | LitUInt32 a, LitUInt32 b -> op a b |> LitUInt32 |> DLit
>                 | LitUInt64 a, LitUInt64 b -> op a b |> LitUInt64 |> DLit
>                 | LitFloat32 a, LitFloat32 b -> op a b |> nan_guardf32  |> 
> LitFloat32 |> DLit
>                 | LitFloat64 a, LitFloat64 b -> op a b |> nan_guardf64 |> 
> LitFloat64 |> DLit
>                 | a, b -> raise_type_error s <| sprintf "The two literals must 
> be both numeric and equal in type.\nGot: %s and %s" (show_lit a) (show_lit b)
>             | a, b ->
>                 let a_ty, b_ty = data_to_ty s a, data_to_ty s b 
>                 if a_ty = b_ty then
>                     if is_lit_zero a && is_signed_numeric a_ty then push_op s 
> Neg b b_ty
>                     elif is_lit_zero b then a
>                     elif is_any_int a_ty && a = b then DLit(lit_zero a_ty)
>                     elif is_numeric a_ty then push_binop s Sub (a,b) a_ty
>                     else raise_type_error s <| sprintf "The type of the two 
> arguments needs to be a numeric type.\nGot: %s" (show_ty a_ty)
>                 else
>                     raise_type_error s <| sprintf "The two sides need to have 
> the same numeric types.\nGot: %s and %s." (show_ty a_ty) (show_ty b_ty)
>         | EOp(_,Mult,[[a;b]]) ->
>             let inline op a b = a * b
>             match term2 s a b with
>             | DLit a, DLit b ->
>                 match a, b with
>                 | LitInt8 a, LitInt8 b -> op a b |> LitInt8 |> DLit
>                 | LitInt16 a, LitInt16 b -> op a b |> LitInt16 |> DLit
>                 | LitInt32 a, LitInt32 b -> op a b |> LitInt32 |> DLit
>                 | LitInt64 a, LitInt64 b -> op a b |> LitInt64 |> DLit
>                 | LitUInt8 a, LitUInt8 b -> op a b |> LitUInt8 |> DLit
>                 | LitUInt16 a, LitUInt16 b -> op a b |> LitUInt16 |> DLit
>                 | LitUInt32 a, LitUInt32 b -> op a b |> LitUInt32 |> DLit
>                 | LitUInt64 a, LitUInt64 b -> op a b |> LitUInt64 |> DLit
>                 | LitFloat32 a, LitFloat32 b -> op a b |> nan_guardf32  |> 
> LitFloat32 |> DLit
>                 | LitFloat64 a, LitFloat64 b -> op a b |> nan_guardf64 |> 
> LitFloat64 |> DLit
>                 | a, b -> raise_type_error s <| sprintf "The two literals must 
> be both numeric and equal in type.\nGot: %s and %s" (show_lit a) (show_lit b)
>             | a, b ->
>                 let a_ty, b_ty = data_to_ty s a, data_to_ty s b 
>                 if a_ty = b_ty then
>                     if is_int_lit_zero a || is_int_lit_zero b then lit_zero a_ty
> |> DLit
>                     elif is_lit_one a then b
>                     elif is_lit_one b then a
>                     elif is_numeric a_ty then push_binop s Mult (a,b) a_ty
>                     else raise_type_error s <| sprintf "The type of the two 
> arguments needs to be a numeric type.\nGot: %s" (show_ty a_ty)
>                 else
>                     raise_type_error s <| sprintf "The two sides need to have 
> the same numeric types.\nGot: %s and %s." (show_ty a_ty) (show_ty b_ty)
>         | EOp(_,Div,[[a;b]]) -> 
>             let inline op a b = a / b
>             try
>                 match term2 s a b with
>                 | DLit a, DLit b ->
>                     match a, b with
>                     | LitInt8 a, LitInt8 b -> op a b |> LitInt8 |> DLit
>                     | LitInt16 a, LitInt16 b -> op a b |> LitInt16 |> DLit
>                     | LitInt32 a, LitInt32 b -> op a b |> LitInt32 |> DLit
>                     | LitInt64 a, LitInt64 b -> op a b |> LitInt64 |> DLit
>                     | LitUInt8 a, LitUInt8 b -> op a b |> LitUInt8 |> DLit
>                     | LitUInt16 a, LitUInt16 b -> op a b |> LitUInt16 |> DLit
>                     | LitUInt32 a, LitUInt32 b -> op a b |> LitUInt32 |> DLit
>                     | LitUInt64 a, LitUInt64 b -> op a b |> LitUInt64 |> DLit
>                     | LitFloat32 a, LitFloat32 b -> op a b |> nan_guardf32  |> 
> LitFloat32 |> DLit
>                     | LitFloat64 a, LitFloat64 b -> op a b |> nan_guardf64 |> 
> LitFloat64 |> DLit
>                     | a, b -> raise_type_error s <| sprintf "The two literals 
> must be both numeric and equal in type.\nGot: %s and %s" (show_lit a) (show_lit 
> b)
>                 | a, b ->
>                     let a_ty, b_ty = data_to_ty s a, data_to_ty s b 
>                     if a_ty = b_ty then
>                         if is_lit_zero b then raise 
> (System.DivideByZeroException())
>                         elif is_lit_one b then a
>                         elif is_numeric a_ty then push_binop s Div (a,b) a_ty
>                         else raise_type_error s <| sprintf "The type of the two 
> arguments needs to be a numeric type.\nGot: %s" (show_ty a_ty)
>                     else
>                         raise_type_error s <| sprintf "The two sides need to 
> have the same numeric types.\nGot: %s and %s." (show_ty a_ty) (show_ty b_ty)
>             with :? System.DivideByZeroException ->
>                 raise_type_error s <| sprintf "An attempt to divide by zero has 
> been detected at compile time."
>         | EOp(_,Pow,[[a;b]]) -> 
>             let inline op a b = a ** b
>             match term2 s a b with
>             | DLit a, DLit b ->
>                 match a, b with
>                 | LitFloat32 a, LitFloat32 b -> op a b |> nan_guardf32 |> 
> LitFloat32 |> DLit
>                 | LitFloat64 a, LitFloat64 b -> op a b |> nan_guardf64 |> 
> LitFloat64 |> DLit
>                 | a, b -> raise_type_error s <| sprintf "The two literals must 
> be both float and equal in type.\nGot: %s and %s" (show_lit a) (show_lit b)
>             | a, b ->
>                 let a_ty, b_ty = data_to_ty s a, data_to_ty s b 
>                 if a_ty = b_ty && is_float a_ty then push_binop s Pow (a,b) a_ty
>                 else raise_type_error s <| sprintf "The two sides need to have 
> the same float types.\nGot: %s and %s." (show_ty a_ty) (show_ty b_ty)
>         | EOp(_,Mod,[[a;b]]) -> 
>             let inline op a b = a % b
>             try
>                 match term2 s a b with
>                 | DLit a, DLit b ->
>                     match a, b with
>                     | LitInt8 a, LitInt8 b -> op a b |> LitInt8 |> DLit
>                     | LitInt16 a, LitInt16 b -> op a b |> LitInt16 |> DLit
>                     | LitInt32 a, LitInt32 b -> op a b |> LitInt32 |> DLit
>                     | LitInt64 a, LitInt64 b -> op a b |> LitInt64 |> DLit
>                     | LitUInt8 a, LitUInt8 b -> op a b |> LitUInt8 |> DLit
>                     | LitUInt16 a, LitUInt16 b -> op a b |> LitUInt16 |> DLit
>                     | LitUInt32 a, LitUInt32 b -> op a b |> LitUInt32 |> DLit
>                     | LitUInt64 a, LitUInt64 b -> op a b |> LitUInt64 |> DLit
>                     | LitFloat32 a, LitFloat32 b -> op a b |> nan_guardf32  |> 
> LitFloat32 |> DLit
>                     | LitFloat64 a, LitFloat64 b -> op a b |> nan_guardf64 |> 
> LitFloat64 |> DLit
>                     | a, b -> raise_type_error s <| sprintf "The two literals 
> must be both numeric and equal in type.\nGot: %s and %s" (show_lit a) (show_lit 
> b)
>                 | a, b ->
>                     let a_ty, b_ty = data_to_ty s a, data_to_ty s b 
>                     if a_ty = b_ty then
>                         if is_lit_zero b then raise 
> (System.DivideByZeroException())
>                         elif is_numeric a_ty then push_binop s Mod (a,b) a_ty
>                         else raise_type_error s <| sprintf "The type of the two 
> arguments needs to be a numeric type.\nGot: %s" (show_ty a_ty)
>                     else
>                         raise_type_error s <| sprintf "The two sides need to 
> have the same numeric types.\nGot: %s and %s." (show_ty a_ty) (show_ty b_ty)
>             with :? System.DivideByZeroException ->
>                 raise_type_error s <| sprintf "An attempt to divide by zero has 
> been detected at compile time."
>         | EOp(_,LT,[[a;b]]) ->
>             let inline op a b = a < b
>             match term2 s a b with
>             | DLit a, DLit b ->
>                 match a, b with
>                 | LitInt8 a, LitInt8 b -> op a b |> LitBool |> DLit
>                 | LitInt16 a, LitInt16 b -> op a b |> LitBool |> DLit
>                 | LitInt32 a, LitInt32 b -> op a b |> LitBool |> DLit
>                 | LitInt64 a, LitInt64 b -> op a b |> LitBool |> DLit
>                 | LitUInt8 a, LitUInt8 b -> op a b |> LitBool |> DLit
>                 | LitUInt16 a, LitUInt16 b -> op a b |> LitBool |> DLit
>                 | LitUInt32 a, LitUInt32 b -> op a b |> LitBool |> DLit
>                 | LitUInt64 a, LitUInt64 b -> op a b |> LitBool |> DLit
>                 | LitFloat32 a, LitFloat32 b -> op a b |> LitBool |> DLit
>                 | LitFloat64 a, LitFloat64 b -> op a b |> LitBool |> DLit
>                 | LitString a, LitString b -> op a b |> LitBool |> DLit
>                 | LitChar a, LitChar b -> op a b |> LitBool |> DLit
>                 | LitBool a, LitBool b -> op a b |> LitBool |> DLit
>                 | a, b -> raise_type_error s <| sprintf "The two literals must 
> be equal in type.\nGot: %s and %s" (show_lit a) (show_lit b)
>             | a, b ->
>                 let a_ty, b_ty = data_to_ty s a, data_to_ty s b 
>                 if a_ty = b_ty then
>                     if is_primitive a_ty then push_binop s LT (a,b) (YPrim 
> BoolT)
>                     else raise_type_error s <| sprintf "The type of the two 
> arguments needs to be a primitive type.\nGot: %s" (show_ty a_ty)
>                 else
>                     raise_type_error s <| sprintf "The two sides need to have 
> the same primitive types.\nGot: %s and %s." (show_ty a_ty) (show_ty b_ty)
>         | EOp(_,LTE,[[a;b]]) ->
>             let inline op a b = a <= b
>             match term2 s a b with
>             | DLit a, DLit b ->
>                 match a, b with
>                 | LitInt8 a, LitInt8 b -> op a b |> LitBool |> DLit
>                 | LitInt16 a, LitInt16 b -> op a b |> LitBool |> DLit
>                 | LitInt32 a, LitInt32 b -> op a b |> LitBool |> DLit
>                 | LitInt64 a, LitInt64 b -> op a b |> LitBool |> DLit
>                 | LitUInt8 a, LitUInt8 b -> op a b |> LitBool |> DLit
>                 | LitUInt16 a, LitUInt16 b -> op a b |> LitBool |> DLit
>                 | LitUInt32 a, LitUInt32 b -> op a b |> LitBool |> DLit
>                 | LitUInt64 a, LitUInt64 b -> op a b |> LitBool |> DLit
>                 | LitFloat32 a, LitFloat32 b -> op a b |> LitBool |> DLit
>                 | LitFloat64 a, LitFloat64 b -> op a b |> LitBool |> DLit
>                 | LitString a, LitString b -> op a b |> LitBool |> DLit
>                 | LitChar a, LitChar b -> op a b |> LitBool |> DLit
>                 | LitBool a, LitBool b -> op a b |> LitBool |> DLit
>                 | a, b -> raise_type_error s <| sprintf "The two literals must 
> be equal in type.\nGot: %s and %s" (show_lit a) (show_lit b)
>             | a, b ->
>                 let a_ty, b_ty = data_to_ty s a, data_to_ty s b 
>                 if a_ty = b_ty then
>                     if is_primitive a_ty then push_binop s LTE (a,b) (YPrim 
> BoolT)
>                     else raise_type_error s <| sprintf "The type of the two 
> arguments needs to be a primitive type.\nGot: %s" (show_ty a_ty)
>                 else
>                     raise_type_error s <| sprintf "The two sides need to have 
> the same primitive types.\nGot: %s and %s." (show_ty a_ty) (show_ty b_ty)
>         | EOp(_,GT,[[a;b]]) -> 
>             let inline op a b = a > b
>             match term2 s a b with
>             | DLit a, DLit b ->
>                 match a, b with
>                 | LitInt8 a, LitInt8 b -> op a b |> LitBool |> DLit
>                 | LitInt16 a, LitInt16 b -> op a b |> LitBool |> DLit
>                 | LitInt32 a, LitInt32 b -> op a b |> LitBool |> DLit
>                 | LitInt64 a, LitInt64 b -> op a b |> LitBool |> DLit
>                 | LitUInt8 a, LitUInt8 b -> op a b |> LitBool |> DLit
>                 | LitUInt16 a, LitUInt16 b -> op a b |> LitBool |> DLit
>                 | LitUInt32 a, LitUInt32 b -> op a b |> LitBool |> DLit
>                 | LitUInt64 a, LitUInt64 b -> op a b |> LitBool |> DLit
>                 | LitFloat32 a, LitFloat32 b -> op a b |> LitBool |> DLit
>                 | LitFloat64 a, LitFloat64 b -> op a b |> LitBool |> DLit
>                 | LitString a, LitString b -> op a b |> LitBool |> DLit
>                 | LitChar a, LitChar b -> op a b |> LitBool |> DLit
>                 | LitBool a, LitBool b -> op a b |> LitBool |> DLit
>                 | a, b -> raise_type_error s <| sprintf "The two literals must 
> be equal in type.\nGot: %s and %s" (show_lit a) (show_lit b)
>             | a, b ->
>                 let a_ty, b_ty = data_to_ty s a, data_to_ty s b 
>                 if a_ty = b_ty then
>                     if is_primitive a_ty then push_binop s GT (a,b) (YPrim 
> BoolT)
>                     else raise_type_error s <| sprintf "The type of the two 
> arguments needs to be a primitive type.\nGot: %s" (show_ty a_ty)
>                 else
>                     raise_type_error s <| sprintf "The two sides need to have 
> the same primitive types.\nGot: %s and %s." (show_ty a_ty) (show_ty b_ty)
>         | EOp(_,GTE,[[a;b]]) -> 
>             let inline op a b = a >= b
>             match term2 s a b with
>             | DLit a, DLit b ->
>                 match a, b with
>                 | LitInt8 a, LitInt8 b -> op a b |> LitBool |> DLit
>                 | LitInt16 a, LitInt16 b -> op a b |> LitBool |> DLit
>                 | LitInt32 a, LitInt32 b -> op a b |> LitBool |> DLit
>                 | LitInt64 a, LitInt64 b -> op a b |> LitBool |> DLit
>                 | LitUInt8 a, LitUInt8 b -> op a b |> LitBool |> DLit
>                 | LitUInt16 a, LitUInt16 b -> op a b |> LitBool |> DLit
>                 | LitUInt32 a, LitUInt32 b -> op a b |> LitBool |> DLit
>                 | LitUInt64 a, LitUInt64 b -> op a b |> LitBool |> DLit
>                 | LitFloat32 a, LitFloat32 b -> op a b |> LitBool |> DLit
>                 | LitFloat64 a, LitFloat64 b -> op a b |> LitBool |> DLit
>                 | LitString a, LitString b -> op a b |> LitBool |> DLit
>                 | LitChar a, LitChar b -> op a b |> LitBool |> DLit
>                 | LitBool a, LitBool b -> op a b |> LitBool |> DLit
>                 | a, b -> raise_type_error s <| sprintf "The two literals must 
> be equal in type.\nGot: %s and %s" (show_lit a) (show_lit b)
>             | a, b ->
>                 let a_ty, b_ty = data_to_ty s a, data_to_ty s b 
>                 if a_ty = b_ty then
>                     if is_primitive a_ty then push_binop s GTE (a,b) (YPrim 
> BoolT)
>                     else raise_type_error s <| sprintf "The type of the two 
> arguments needs to be a primitive type.\nGot: %s" (show_ty a_ty)
>                 else
>                     raise_type_error s <| sprintf "The two sides need to have 
> the same primitive types.\nGot: %s and %s." (show_ty a_ty) (show_ty b_ty)
>         | EOp(_,EQ,[[a;b]]) -> eq s (term s a) (term s b)
>         | EOp(_,NEQ,[[a;b]]) ->
>             let inline op a b = a <> b
>             match term2 s a b with
>             | DLit a, DLit b ->
>                 match a, b with
>                 | LitInt8 a, LitInt8 b -> op a b |> LitBool |> DLit
>                 | LitInt16 a, LitInt16 b -> op a b |> LitBool |> DLit
>                 | LitInt32 a, LitInt32 b -> op a b |> LitBool |> DLit
>                 | LitInt64 a, LitInt64 b -> op a b |> LitBool |> DLit
>                 | LitUInt8 a, LitUInt8 b -> op a b |> LitBool |> DLit
>                 | LitUInt16 a, LitUInt16 b -> op a b |> LitBool |> DLit
>                 | LitUInt32 a, LitUInt32 b -> op a b |> LitBool |> DLit
>                 | LitUInt64 a, LitUInt64 b -> op a b |> LitBool |> DLit
>                 | LitFloat32 a, LitFloat32 b -> op a b |> LitBool |> DLit
>                 | LitFloat64 a, LitFloat64 b -> op a b |> LitBool |> DLit
>                 | LitString a, LitString b -> op a b |> LitBool |> DLit
>                 | LitChar a, LitChar b -> op a b |> LitBool |> DLit
>                 | LitBool a, LitBool b -> op a b |> LitBool |> DLit
>                 | a, b -> raise_type_error s <| sprintf "The two literals must 
> be equal in type.\nGot: %s and %s" (show_lit a) (show_lit b)
>             | DV(L(a,a_ty)), DV(L(b,_)) when a = b && is_non_float_primitive 
> a_ty -> LitBool false |> DLit
>             | a, b ->
>                 let a_ty, b_ty = data_to_ty s a, data_to_ty s b 
>                 if a_ty = b_ty then
>                     match a, b with
>                     | DLit (LitBool false), x | x, DLit (LitBool false) -> x
>                     | _ ->
>                         if is_primitive a_ty then push_binop s NEQ (a,b) (YPrim 
> BoolT)
>                         else raise_type_error s <| sprintf "The type of the two 
> arguments needs to be a primitive type.\nGot: %s" (show_ty a_ty)
>                 else
>                     raise_type_error s <| sprintf "The two sides need to have 
> the same primitive types.\nGot: %s and %s." (show_ty a_ty) (show_ty b_ty)
>         | EOp(_,BitwiseAnd,[[a;b]]) -> 
>             let inline op a b = a &&& b
>             match term2 s a b with
>             | DLit a, DLit b ->
>                 match a, b with
>                 | LitInt8 a, LitInt8 b -> op a b |> LitInt8 |> DLit
>                 | LitInt16 a, LitInt16 b -> op a b |> LitInt16 |> DLit
>                 | LitInt32 a, LitInt32 b -> op a b |> LitInt32 |> DLit
>                 | LitInt64 a, LitInt64 b -> op a b |> LitInt64 |> DLit
>                 | LitUInt8 a, LitUInt8 b -> op a b |> LitUInt8 |> DLit
>                 | LitUInt16 a, LitUInt16 b -> op a b |> LitUInt16 |> DLit
>                 | LitUInt32 a, LitUInt32 b -> op a b |> LitUInt32 |> DLit
>                 | LitUInt64 a, LitUInt64 b -> op a b |> LitUInt64 |> DLit
>                 | a, b -> raise_type_error s <| sprintf "The two literals must 
> be both ints and equal in type.\nGot: %s and %s" (show_lit a) (show_lit b)
>             | a, b ->
>                 let a_ty, b_ty = data_to_ty s a, data_to_ty s b 
>                 if a_ty = b_ty then
>                     if is_any_int a_ty then push_binop s BitwiseAnd (a,b) a_ty
>                     else raise_type_error s <| sprintf "The type of the two 
> arguments needs to be a int type.\nGot: %s" (show_ty a_ty)
>                 else
>                     raise_type_error s <| sprintf "The two sides need to have 
> the same int types.\nGot: %s and %s." (show_ty a_ty) (show_ty b_ty)
>         | EOp(_,BitwiseOr,[[a;b]]) ->
>             let inline op a b = a ||| b
>             match term2 s a b with
>             | DLit a, DLit b ->
>                 match a, b with
>                 | LitInt8 a, LitInt8 b -> op a b |> LitInt8 |> DLit
>                 | LitInt16 a, LitInt16 b -> op a b |> LitInt16 |> DLit
>                 | LitInt32 a, LitInt32 b -> op a b |> LitInt32 |> DLit
>                 | LitInt64 a, LitInt64 b -> op a b |> LitInt64 |> DLit
>                 | LitUInt8 a, LitUInt8 b -> op a b |> LitUInt8 |> DLit
>                 | LitUInt16 a, LitUInt16 b -> op a b |> LitUInt16 |> DLit
>                 | LitUInt32 a, LitUInt32 b -> op a b |> LitUInt32 |> DLit
>                 | LitUInt64 a, LitUInt64 b -> op a b |> LitUInt64 |> DLit
>                 | a, b -> raise_type_error s <| sprintf "The two literals must 
> be both ints and equal in type.\nGot: %s and %s" (show_lit a) (show_lit b)
>             | a, b ->
>                 let a_ty, b_ty = data_to_ty s a, data_to_ty s b 
>                 if a_ty = b_ty then
>                     if is_any_int a_ty then push_binop s BitwiseOr (a,b) a_ty
>                     else raise_type_error s <| sprintf "The type of the two 
> arguments needs to be a int type.\nGot: %s" (show_ty a_ty)
>                 else
>                     raise_type_error s <| sprintf "The two sides need to have 
> the same int types.\nGot: %s and %s." (show_ty a_ty) (show_ty b_ty)
>         | EOp(_,BitwiseXor,[[a;b]]) ->
>             let inline op a b = a ^^^ b
>             match term2 s a b with
>             | DLit a, DLit b ->
>                 match a, b with
>                 | LitInt8 a, LitInt8 b -> op a b |> LitInt8 |> DLit
>                 | LitInt16 a, LitInt16 b -> op a b |> LitInt16 |> DLit
>                 | LitInt32 a, LitInt32 b -> op a b |> LitInt32 |> DLit
>                 | LitInt64 a, LitInt64 b -> op a b |> LitInt64 |> DLit
>                 | LitUInt8 a, LitUInt8 b -> op a b |> LitUInt8 |> DLit
>                 | LitUInt16 a, LitUInt16 b -> op a b |> LitUInt16 |> DLit
>                 | LitUInt32 a, LitUInt32 b -> op a b |> LitUInt32 |> DLit
>                 | LitUInt64 a, LitUInt64 b -> op a b |> LitUInt64 |> DLit
>                 | a, b -> raise_type_error s <| sprintf "The two literals must 
> be both ints and equal in type.\nGot: %s and %s" (show_lit a) (show_lit b)
>             | a, b ->
>                 let a_ty, b_ty = data_to_ty s a, data_to_ty s b 
>                 if a_ty = b_ty then
>                     if is_any_int a_ty then push_binop s BitwiseXor (a,b) a_ty
>                     else raise_type_error s <| sprintf "The type of the two 
> arguments needs to be a int type.\nGot: %s" (show_ty a_ty)
>                 else
>                     raise_type_error s <| sprintf "The two sides need to have 
> the same int types.\nGot: %s and %s." (show_ty a_ty) (show_ty b_ty)
>         | EOp(_,BitwiseComplement,[[a]]) ->
>             let inline op a = ~~~a
>             match term s a with
>             | DLit a ->
>                 match a with
>                 | LitInt8 a -> op a |> LitInt8 |> DLit
>                 | LitInt16 a -> op a |> LitInt16 |> DLit
>                 | LitInt32 a -> op a |> LitInt32 |> DLit
>                 | LitInt64 a -> op a |> LitInt64 |> DLit
>                 | LitUInt8 a -> op a |> LitUInt8 |> DLit
>                 | LitUInt16 a -> op a |> LitUInt16 |> DLit
>                 | LitUInt32 a -> op a |> LitUInt32 |> DLit
>                 | LitUInt64 a -> op a |> LitUInt64 |> DLit
>                 | a -> raise_type_error s <| sprintf "The literal must be an 
> int.\nGot: %s" (show_lit a)
>             | a ->
>                 let a_ty = data_to_ty s a
>                 if is_any_int a_ty then push_op s BitwiseComplement a a_ty
>                 else raise_type_error s <| sprintf "The type of the two 
> arguments needs to be a int type.\nGot: %s" (show_ty a_ty)
>         | EOp(_,ShiftLeft,[[a;b]]) -> 
>             let inline op a b = a <<< b
>             match term2 s a b with
>             | DLit a, DLit b ->
>                 match a, b with
>                 | LitInt8 a, LitInt32 b -> op a b |> LitInt8 |> DLit
>                 | LitInt16 a, LitInt32 b -> op a b |> LitInt16 |> DLit
>                 | LitInt32 a, LitInt32 b -> op a b |> LitInt32 |> DLit
>                 | LitInt64 a, LitInt32 b -> op a b |> LitInt64 |> DLit
>                 | LitUInt8 a, LitInt32 b -> op a b |> LitUInt8 |> DLit
>                 | LitUInt16 a, LitInt32 b -> op a b |> LitUInt16 |> DLit
>                 | LitUInt32 a, LitInt32 b -> op a b |> LitUInt32 |> DLit
>                 | LitUInt64 a, LitInt32 b -> op a b |> LitUInt64 |> DLit
>                 | a, b -> raise_type_error s <| sprintf "The first literal must 
> be an int and the second must be a 32-bit signed int.\nGot: %s and %s" (show_lit
> a) (show_lit b)
>             | a, b ->
>                 let a_ty, b_ty = data_to_ty s a, data_to_ty s b 
>                 if is_any_int a_ty && is_int32 b_ty then push_binop s ShiftLeft 
> (a,b) a_ty
>                 else raise_type_error s <| sprintf "The type of the first 
> argument must be an int and the second must be a 32-bit signed int.\nGot: %s and
> %s" (show_ty a_ty) (show_ty b_ty)
>         | EOp(_,ShiftRight,[[a;b]]) ->
>             let inline op a b = a >>> b
>             match term2 s a b with
>             | DLit a, DLit b ->
>                 match a, b with
>                 | LitInt8 a, LitInt32 b -> op a b |> LitInt8 |> DLit
>                 | LitInt16 a, LitInt32 b -> op a b |> LitInt16 |> DLit
>                 | LitInt32 a, LitInt32 b -> op a b |> LitInt32 |> DLit
>                 | LitInt64 a, LitInt32 b -> op a b |> LitInt64 |> DLit
>                 | LitUInt8 a, LitInt32 b -> op a b |> LitUInt8 |> DLit
>                 | LitUInt16 a, LitInt32 b -> op a b |> LitUInt16 |> DLit
>                 | LitUInt32 a, LitInt32 b -> op a b |> LitUInt32 |> DLit
>                 | LitUInt64 a, LitInt32 b -> op a b |> LitUInt64 |> DLit
>                 | a, b -> raise_type_error s <| sprintf "The first literal must 
> be an int and the second must be a 32-bit signed int.\nGot: %s and %s" (show_lit
> a) (show_lit b)
>             | a, b ->
>                 let a_ty, b_ty = data_to_ty s a, data_to_ty s b 
>                 if is_any_int a_ty && is_int32 b_ty then push_binop s ShiftRight
> (a,b) a_ty
>                 else raise_type_error s <| sprintf "The type of the first 
> argument must be an int and the second must be a 32-bit signed int.\nGot: %s and
> %s" (show_ty a_ty) (show_ty b_ty)
>         | EOp(_,Neg,[[a]]) ->
>             let inline op a = -a
>             match term s a with
>             | DLit a ->
>                 match a with
>                 | LitInt8 a -> op a |> LitInt8 |> DLit
>                 | LitInt16 a -> op a |> LitInt16 |> DLit
>                 | LitInt32 a -> op a |> LitInt32 |> DLit
>                 | LitInt64 a -> op a |> LitInt64 |> DLit
>                 | LitFloat32 a -> op a |> LitFloat32 |> DLit
>                 | LitFloat64 a -> op a |> LitFloat64 |> DLit
>                 | _ -> raise_type_error s <| sprintf "The literal must be a 
> signed numeric type.\nGot: %s" (show_lit a)
>             | a ->
>                 let a_ty = data_to_ty s a
>                 if is_signed_numeric a_ty then push_op s Neg a a_ty
>                 else raise_type_error s <| sprintf "The argument must be a 
> signed numeric type.\nGot: %s" (show_ty a_ty)
>         | EOp(_,Tanh,[[a]]) -> 
>             let inline op a = tanh a
>             match term s a with
>             | DLit a ->
>                 match a with
>                 | LitFloat32 a -> op a |> nan_guardf32 |> LitFloat32 |> DLit
>                 | LitFloat64 a -> op a |> nan_guardf64 |> LitFloat64 |> DLit
>                 | _ -> raise_type_error s <| sprintf "The literal must be a 
> float type.\nGot: %s" (show_lit a)
>             | a ->
>                 let a_ty = data_to_ty s a
>                 if is_float a_ty then push_op s Tanh a a_ty
>                 else raise_type_error s <| sprintf "The argument must be a float
> type.\nGot: %s" (show_ty a_ty)
>         | EOp(_,Log,[[a]]) ->
>             let inline op a = log a
>             match term s a with
>             | DLit a ->
>                 match a with
>                 | LitFloat32 a -> op a |> nan_guardf32 |> LitFloat32 |> DLit
>                 | LitFloat64 a -> op a |> nan_guardf64 |> LitFloat64 |> DLit
>                 | _ -> raise_type_error s <| sprintf "The literal must be a 
> float type.\nGot: %s" (show_lit a)
>             | a ->
>                 let a_ty = data_to_ty s a
>                 if is_float a_ty then push_op s Log a a_ty
>                 else raise_type_error s <| sprintf "The argument must be a float
> type.\nGot: %s" (show_ty a_ty)
>         | EOp(_,Exp,[[a]]) ->
>             let inline op a = exp a
>             match term s a with
>             | DLit a ->
>                 match a with
>                 | LitFloat32 a -> op a |> nan_guardf32 |> LitFloat32 |> DLit
>                 | LitFloat64 a -> op a |> nan_guardf64 |> LitFloat64 |> DLit
>                 | _ -> raise_type_error s <| sprintf "The literal must be a 
> float type.\nGot: %s" (show_lit a)
>             | a ->
>                 let a_ty = data_to_ty s a
>                 if is_float a_ty then push_op s Exp a a_ty
>                 else raise_type_error s <| sprintf "The argument must be a float
> type.\nGot: %s" (show_ty a_ty)
>         | EOp(_,Sqrt,[[a]]) ->
>             let inline op a = sqrt a
>             match term s a with
>             | DLit a ->
>                 match a with
>                 | LitFloat32 a -> op a |> nan_guardf32 |> LitFloat32 |> DLit
>                 | LitFloat64 a -> op a |> nan_guardf64 |> LitFloat64 |> DLit
>                 | _ -> raise_type_error s <| sprintf "The literal must be a 
> float type.\nGot: %s" (show_lit a)
>             | a ->
>                 let a_ty = data_to_ty s a
>                 if is_float a_ty then push_op s Sqrt a a_ty
>                 else raise_type_error s <| sprintf "The argument must be a float
> type.\nGot: %s" (show_ty a_ty)
>         | EOp(_,Sin,[[a]]) ->
>             let inline op a = sin a
>             match term s a with
>             | DLit a ->
>                 match a with
>                 | LitFloat32 a -> op a |> nan_guardf32 |> LitFloat32 |> DLit
>                 | LitFloat64 a -> op a |> nan_guardf64 |> LitFloat64 |> DLit
>                 | _ -> raise_type_error s <| sprintf "The literal must be a 
> float type.\nGot: %s" (show_lit a)
>             | a ->
>                 let a_ty = data_to_ty s a
>                 if is_float a_ty then push_op s Sin a a_ty
>                 else raise_type_error s <| sprintf "The argument must be a float
> type.\nGot: %s" (show_ty a_ty)
>         | EOp(_,Cos,[[a]]) ->
>             let inline op a = cos a
>             match term s a with
>             | DLit a ->
>                 match a with
>                 | LitFloat32 a -> op a |> nan_guardf32 |> LitFloat32 |> DLit
>                 | LitFloat64 a -> op a |> nan_guardf64 |> LitFloat64 |> DLit
>                 | _ -> raise_type_error s <| sprintf "The literal must be a 
> float type.\nGot: %s" (show_lit a)
>             | a ->
>                 let a_ty = data_to_ty s a
>                 if is_float a_ty then push_op s Cos a a_ty
>                 else raise_type_error s <| sprintf "The argument must be a float
> type.\nGot: %s" (show_ty a_ty)
>         | EOp(_,Conv,[[EType(_,typ);a]]) ->
>             let typ = ty s typ
>             let a = term s a
>             let at = data_to_ty s a
>             if typ = at then a
>             else
>                 let inline conv_lit x =
>                     match typ with
>                     | YPrim Int8T -> int8 x |> LitInt8
>                     | YPrim Int16T -> int16 x |> LitInt16
>                     | YPrim Int32T -> int32 x |> LitInt32
>                     | YPrim Int64T -> int64 x |> LitInt64
>                     | YPrim UInt8T -> uint8 x |> LitUInt8
>                     | YPrim UInt16T -> uint16 x |> LitUInt16
>                     | YPrim UInt32T -> uint32 x |> LitUInt32
>                     | YPrim UInt64T -> uint64 x |> LitUInt64
>                     | YPrim Float32T -> float32 x |> LitFloat32
>                     | YPrim Float64T -> float x |> LitFloat64
>                     | _ -> raise_type_error s <| sprintf "Cannot convert the 
> literal to the following type: %s" (show_ty typ)
>                     |> DLit
>                 match a with
>                 | DLit (LitInt8 a) -> conv_lit a
>                 | DLit (LitInt16 a) -> conv_lit a
>                 | DLit (LitInt32 a) -> conv_lit a
>                 | DLit (LitInt64 a) -> conv_lit a
>                 | DLit (LitUInt8 a) -> conv_lit a
>                 | DLit (LitUInt16 a) -> conv_lit a
>                 | DLit (LitUInt32 a) -> conv_lit a
>                 | DLit (LitUInt64 a) -> conv_lit a
>                 | DLit (LitFloat32 a) -> conv_lit a
>                 | DLit (LitFloat64 a) -> conv_lit a
>                 | _ ->
>                     let is_convertible_primt x =
>                         match x with
>                         | YPrim BoolT | YPrim CharT | YPrim StringT -> false
>                         | YPrim _ -> true
>                         | _ -> false
>                     if is_convertible_primt at && is_convertible_primt typ then 
> push_typedop s (TyConv(typ,a)) typ
>                     else raise_type_error s <| sprintf "Cannot convert %s to the
> following type: %s" (show_data a) (show_ty typ)
>         | EOp(_,NanIs,[[a]]) ->
>             let a = term s a
>             match data_to_ty s a with
>             | YPrim (Float32T | Float64T) -> push_op s NanIs a (YPrim BoolT)
>             | a -> raise_type_error s <| sprintf "Expected a float in NanIs. 
> Got: %s" (show_ty a)
>         | EOp(_,Infinity,[[EType(_,a)]]) -> 
>             match ty s a with
>             | YPrim Float32T -> DLit (LitFloat32 infinityf)
>             | YPrim Float64T -> DLit (LitFloat64 infinity)
>             | a -> raise_type_error s "Expected a float.\nGot: %s" (show_ty a)
>         | EOp(_,Pi,[[EType(_,a)]]) -> 
>             match ty s a with
>             | YPrim Float32T -> DLit (LitFloat32 System.Single.Pi)
>             | YPrim Float64T -> DLit (LitFloat64 System.Double.Pi)
>             | a -> raise_type_error s "Expected a float.\nGot: %s" (show_ty a)
>         | EOp(_,LitIs,[[a]]) ->
>             match term s a with
>             | DLit _ -> DLit (LitBool true)
>             | _ -> DLit (LitBool false)
>         | EOp(_,PrimIs,[[a]]) ->
>             match term s a |> data_to_ty s with
>             | YPrim _ -> DLit (LitBool true)
>             | _ -> DLit (LitBool false)
>         | EOp(_,SymbolIs,[[a]]) ->
>             match term s a with
>             | DSymbol _ -> DLit (LitBool true)
>             | _ -> DLit (LitBool false)
>         | EOp(_,VarIs,[[a]]) ->
>             match term s a with
>             | DNominal(DV _, _) | DV _ -> DLit (LitBool true)
>             | _ -> DLit (LitBool false)
>         | EOp(_,UnionIs,[[a]]) -> 
>             match term s a with
>             | DNominal(DV(L(_,YUnion _)), _) | DNominal(DUnion _, _) -> DLit 
> (LitBool true)
>             | _ -> DLit (LitBool false)
>         | EOp(_,HeapUnionIs,[[a]]) ->
>             match term s a with
>             | DNominal(DV(L(_,YUnion x)), _) | DNominal(DUnion(_,x), _) ->
>                 match x.Item.layout with UHeap -> true | UStack -> false
>                 |> LitBool |> DLit
>             | _ -> DLit (LitBool false)
>         | EOp(_,LayoutIs,[[a]]) ->
>             match term s a with
>             | DV(L(_,YLayout _)) -> DLit (LitBool true)
>             | _ -> DLit (LitBool false)
>         | EOp(_,NominalIs,[[a]]) ->
>             match term s a with
>             | DNominal(_, _) -> DLit (LitBool true)
>             | _ -> DLit (LitBool false)
>         | EOp(_,FunctionIs,[[a]]) ->
>             match term s a with
>             | DFunction _ | DV(L(_,YFun _)) -> DLit (LitBool true)
>             | _ -> DLit (LitBool false)
>         | EOp(_,ExistsIs,[[a]]) ->
>             match term s a with
>             | DExists _ -> DLit (LitBool true)
>             | _ -> DLit (LitBool false)
>         | EOp(_,PrimTypeIs,[[EType(_,a)]]) ->
>             match ty s a with
>             | YPrim _ -> DLit (LitBool true)
>             | _ -> DLit (LitBool false)
>         | EOp(_,SymbolTypeIs,[[EType(_,a)]]) ->
>             match ty s a with
>             | YSymbol _ -> DLit (LitBool true)
>             | _ -> DLit (LitBool false)
>         | EOp(_,UnionTypeIs,[[EType(_,a)]]) -> 
>             match ty s a with
>             | YNominal _ | YApply _ as a -> 
>                 match nominal_type_apply s a with
>                 | YUnion _ -> DLit (LitBool true)
>                 | _ -> DLit (LitBool false)
>             | _ -> DLit (LitBool false)
>         | EOp(_,HeapUnionTypeIs,[[EType(_,a)]]) ->
>             match ty s a with
>             | YNominal _ | YApply _ as a -> 
>                 match nominal_type_apply s a with
>                 | YUnion x -> DLit (LitBool (match x.Item.layout with UHeap -> 
> true | UStack -> false))
>                 | _ -> DLit (LitBool false)
>             | _ -> DLit (LitBool false)
>         | EOp(_,LayoutTypeIs,[[EType(_,a)]]) ->
>             match ty s a with
>             | YLayout _ -> DLit (LitBool true)
>             | _ -> DLit (LitBool false)
>         | EOp(_,ExistsTypeIs,[[EType(_,a)]]) ->
>             match ty s a with
>             | YExists -> DLit (LitBool true)
>             | _ -> DLit (LitBool false)
>         | EOp(_,NominalTypeIs,[[EType(_,a)]]) ->
>             match ty s a with
>             | YNominal _ | YApply _ -> DLit (LitBool true)
>             | _ -> DLit (LitBool false)
>         | EOp(_,NominalStrip,[[a]]) -> 
>             match term s a with
>             | DNominal(DV(L(_,YUnion _)), _) | DNominal(DUnion _, _) -> 
> raise_type_error s "Cannot strip the nominal wrapper from an union."
>             | DNominal(a,_) -> a
>             | a -> raise_type_error s <| sprintf "Expected a nominal.\nGot: %s" 
> (show_data a)
>         | EOp(_,NominalTypeApply,[[EType(_,a)]]) -> 
>             match ty s a with
>             | YNominal _ | YApply _ as a -> DExists([[|nominal_type_apply s 
> a|]], DB)
>             | a -> raise_type_error s <| sprintf "Expected a nominal type.\nGot:
> %s" (show_ty a)
>         | EOp(_,ExistsStrip,[[a]]) -> 
>             match term s a with
>             | DExists(_,a) -> a
>             | a -> raise_type_error s <| sprintf "Expected an existential.\nGot:
> %s" (show_data a)
>         | EOp(_,PrototypeHas,[[prot; EType(_,a)]]) ->
>             let body (x : Nominal) =
>                 let prot_er () = raise_type_error s "Expected a forall or a 
> prototype apply."
>                 let rec loop = function
>                     | EForall'(_,_,_,x) -> loop x
>                     | EPrototypeApply(_,prot_id,_) -> 
> env.prototypes_instances.ContainsKey(prot_id,x.node.id) |> LitBool |> DLit
>                     | _ -> prot_er()
>                 match term s prot with
>                 | DForall(body,_,_,_,_) -> loop body
>                 | _ -> prot_er()
>             let rec loop = function
>                 | YNominal x -> body x
>                 | YApply(l,_) -> loop l
>                 | a -> raise_type_error s <| sprintf "Expected a nominal.\nGot: 
> %s" (show_ty a)
>             loop (ty s a)
>         | EOp(_,TypeEq,[[EType(_,a);EType(_,b)]]) -> DLit(LitBool(ty s a = ty s 
> b))
>         | EOp(_,FailWith,[[EType(_,typ);a]]) ->
>             match ty s typ, term s a with
>             | typ, (DV(L(_,YPrim StringT)) | DLit(LitString _)) & a -> 
> push_typedop_no_rewrite s (TyFailwith(typ,a)) typ
>             | _,a -> raise_type_error s "Expected a string as input to 
> failwith.\nGot: %s" (show_data a)
>         | EOp(_,FailWith,_) -> raise_type_error s "Malformed FailWith"
>         | EOp(_,ErrorType,[[a]]) -> term s a |> show_data |> raise_type_error s
>         | EOp(_,PrintStatic,[[EType(_,a)]]) -> printfn "%s" (ty s a |> show_ty);
> DB
>         | EOp(_,PrintStatic,[[a]]) -> printfn "%s" (term s a |> show_data); DB
>         | EOp(_,PrintRaw,[[a]]) -> printfn "%A" 
> (Printable.eval(Choice1Of2(a,id))); DB
>         | EOp(_,UnionTag,[[a]]) ->
>             let eval k (h : Union) = h.Item.tags.[[k]] |> LitInt32 |> DLit
>             match term s a with
>             | DNominal(DV(L(_,YUnion h) & v) & a, _) ->
>                 match Map.tryFind v s.unions with
>                 | Some (UnionData (k,_)) -> eval k h
>                 | _ -> push_op s UnionTag a (YPrim Int32T)
>             | DNominal(DUnion(DPair(DSymbol k,_),h), _) -> eval k h
>             | a -> raise_type_error s <| sprintf "Expected an union.\nGot: %s" 
> (show_data a)
>         | EOp(_,Global & op,[[a]]) ->
>             match term s a with
>             | DLit (LitString text) & a ->
>                 // if text.Contains "import " || text.Contains "Fable" then
>                 //     let s = { s with trace = [[]]; seq = ResizeArray() }
>                 //     let l = s.cse |> List.map _.Count |> List.filter ((=) 0) 
> |> List.length
>                 //     Console.WriteLine ($"global / text: {text} / s: %A{s} / 
> l: {l}")
>                 if s.i.contents < 2 && s.cse |> List.map _.Count |> List.filter 
> ((=) 0) |> List.length = 2
>                 then global' text
>                 push_op_no_rewrite s op a YB
>             | a -> raise_type_error s $"Expected a string literal.\nGot: 
> {show_data a}"
>         | EOp(_,ToPythonRecord,[[a]]) ->
>             match term s a |> dyn false s with
>             | DRecord _ & a -> push_op_no_rewrite s ToPythonRecord a (YMacro 
> [[Text "object"]])
>             | a -> raise_type_error s $"Expected a record.\nGot: {show_data a}"
>         | EOp(_,ToPythonNamedTuple,[[n;a]]) ->
>             match term s n, term s a |> dyn false s with
>             | (DLit (LitString _) | DV(L(_,YPrim StringT))) & n, DRecord _ & a 
> -> push_binop_no_rewrite s ToPythonNamedTuple (n,a) (YMacro [[Text "object"]])
>             | n, a -> raise_type_error s $"Expected a pair of string and 
> record.\nGot: {show_data n}\nAnd: {show_data a}"
>         | EOp(_,VarTag,[[a]]) ->
>             match term s a with
>             | DNominal(DV(L(i,_)), _) | DV(L(i,_)) -> DLit (LitInt32 i)
>             | a -> raise_type_error s $"Expected a runtime variable.\nGot: 
> {show_data a}"
>         | EOp(_,TagToSymbol,[[a]]) ->
>             match term s a with
>             | DLit (LitInt32 i) -> DSymbol (string i)
>             | a -> raise_type_error s $"Expected an i32 literal.\nGot: 
> {show_data a}"
>         | EOp(_,FunctionTermSlotsGet,[[a]]) ->
>             match term s a with
>             | DFunction(_,_,free_vars,_,_,_) -> Array.foldBack (fun x s -> 
> DPair(x,s)) free_vars DB
>             | DV(L(_,YFun _)) -> raise_type_error s $"Expected a compile time 
> function. Got a runtime one."
>             | a -> raise_type_error s $"Expected a compile time function.\nGot: 
> {show_data a}"
>         | EOp(_,FunctionTermSlotsSet,[[a;b]]) ->
>             match term s a, term s b with
>             | DFunction(q1,q2,free_vars,q4,q5,a6), b -> 
>                 let mutable b = b
>                 let free_vars = 
>                     Array.init free_vars.Length (fun _ -> 
>                         match b with
>                         | DPair(q,w) -> b <- w; q
>                         | DB -> raise_type_error s "Unexpected end of the tuple 
> to be set."
>                         | _ -> raise_type_error s $"Expected a pair.\nGot: 
> {show_data b}"
>                         ) 
>                 match b with
>                 | DB -> DFunction(q1,q2,free_vars,q4,q5,a6)
>                 | _ -> raise_type_error s $"Expected an unit end of the 
> tuple.\nGot: {show_data b}"
>             | DV(L(_,YFun _)), _ -> raise_type_error s $"Expected a compile time
> function. Got a runtime one."
>             | a, _ -> raise_type_error s $"Expected a compile time 
> function.\nGot: {show_data a}"
>         | EOp(_,SizeOf,[[EType(_,a)]]) ->
>             match ty s a with
>             | YB | YSymbol _ -> DLit (LitInt32 0)
>             | YPrim (Int8T | UInt8T | BoolT) -> DLit (LitInt32 1)
>             | YPrim (Int16T | UInt16T) -> DLit (LitInt32 2)
>             | YPrim (Int32T | UInt32T | Float32T) -> DLit (LitInt32 4)
>             | YPrim (Int64T | UInt64T | Float64T) -> DLit (LitInt32 8)
>             | a -> push_typedop s (TySizeOf a) (YPrim Int32T) 
>         | EOp(_,FreeVars,[[a]]) ->
>             let x = term s a |> data_free_vars
>             Array.foldBack (fun x s -> DPair(DV x,s)) x (DRecord Map.empty)
>         | EOp(_,FreeVarsReplace,[[a;b]]) ->
>             let a = term s a
>             let b = term s b
>             let a_fv = a |> data_free_vars
>             let b_fv = b |> data_free_vars
>             if a_fv.Length <> b_fv.Length then raise_type_error s "The two 
> expressions need to have the same number of free variables."
>             let d = Dictionary(HashIdentity.Reference)
>             Array.iter2 (fun (L(_,ta) as a) (L(_,tb) as b) -> 
>                 if ta <> tb then raise_type_error s $"The free variables can 
> only be replaced with free vars of the same type.\nGot: {show_ty ta}\nExpected: 
> {show_ty tb}"
>                 d.Add(a,b)
>                 ) a_fv b_fv
>             data_free_vars_replace s d a
>         | EOp(_,HashSetCreate,[[]]) -> DHashSet(HashSet(HashIdentity.Reference))
>         | EOp(_,HashSetAdd,[[h;k]]) ->
>             match term s h, term s k with
>             | DHashSet h, k -> DLit(LitBool(h.Add k))
>             | h, _ -> raise_type_error s $"Expected a compile time 
> HashSet.\nGot: {show_data h}"
>         | EOp(_,HashSetContains,[[h;k]]) ->
>             match term s h, term s k with
>             | DHashSet h, k -> DLit(LitBool(h.Contains k))
>             | h, _ -> raise_type_error s $"Expected a compile time 
> HashSet.\nGot: {show_data h}"
>         | EOp(_,HashSetRemove,[[h;k]]) ->
>             match term s h, term s k with
>             | DHashSet h, k -> DLit(LitBool(h.Remove k))
>             | h, _ -> raise_type_error s $"Expected a compile time 
> HashSet.\nGot: {show_data h}"
>         | EOp(_,HashSetCount,[[h]]) ->
>             match term s h with
>             | DHashSet h -> DLit(LitInt32(h.Count))
>             | h -> raise_type_error s $"Expected a compile time HashSet.\nGot: 
> {show_data h}"
>         | EOp(_,HashMapCreate,[[]]) -> 
> DHashMap(OrderedDictionary(HashIdentity.Reference), ref true)
>         | EOp(_,HashMapSetImmutable,[[h]]) -> 
>             match term s h with
>             | DHashMap(_, is_writable) -> is_writable.Value <- false; DB
>             | h -> raise_type_error s $"Expected a compile time HashMap.\nGot: 
> {show_data h}"
>         | EOp(_,HashMapSet,[[h;k;v]]) ->
>             match term s h, term s k, term s v with
>             | DHashMap(h, is_writable), k, v when is_writable.Value -> h.[[k]] 
> <- v; DB
>             | DHashMap(h, _), _, _ -> raise_type_error s "The hash map has been 
> made read-only and cannot be added to."
>             | h, _, _ -> raise_type_error s $"Expected a compile time 
> HashMap.\nGot: {show_data h}"
>         | EOp(_,HashMapAdd,[[h;k;v]]) ->
>             match term s h, term s k, term s v with
>             | DHashMap(h, is_writable), k, v when is_writable.Value -> if 
> h.TryAdd(k,v) then DB else raise_type_error s "The entry with the same key 
> already exists in the dictionary."
>             | DHashMap(h, _), _, _ -> raise_type_error s "The hash map has been 
> made read-only and cannot be added to."
>             | h, _, _ -> raise_type_error s $"Expected a compile time 
> HashMap.\nGot: {show_data h}"
>         | EOp(_,HashMapTryAdd,[[h;k;v]]) ->
>             match term s h, term s k, term s v with
>             | DHashMap(h, is_writable), k, v -> if is_writable.Value then 
> DLit(LitBool(h.TryAdd(k,v))) else raise_type_error s "The hash map has been made
> read-only and cannot be added to."
>             | h, _, _ -> raise_type_error s $"Expected a compile time 
> HashMap.\nGot: {show_data h}"
>         | EOp(_,HashMapContains,[[h;k]]) ->
>             match term s h, term s k with
>             | DHashMap(h, _), k -> DLit(LitBool(h.ContainsKey k))
>             | h, _ -> raise_type_error s $"Expected a compile time 
> HashMap.\nGot: {show_data h}"
>         | EOp(_,HashMapRemove,[[h;k]]) ->
>             match term s h, term s k with
>             | DHashMap(h, is_writable), k -> if is_writable.Value then 
> DLit(LitBool(h.Remove k)) else raise_type_error s "The hash map has been made 
> read-only and cannot be removed from."
>             | h, _ -> raise_type_error s $"Expected a compile time 
> HashMap.\nGot: {show_data h}"
>         | EOp(_,HashMapCount,[[h]]) ->
>             match term s h with
>             | DHashMap(h, _) -> DLit(LitInt32(h.Count))
>             | h -> raise_type_error s $"Expected a compile time HashMap.\nGot: 
> {show_data h}"
>         | EOp(_,HashMapTryGet,[[h;k]]) ->
>             match term s h, term s k with
>             | DHashMap(h, _), k ->
>                 match h.TryGetValue(k) with
>                 | true, v -> v
>                 | false, _ -> DSymbol "null"
>             | h, _ -> raise_type_error s $"Expected a compile time 
> HashMap.\nGot: {show_data h}"
>         | EOp(_,StaticStringConcat,[[l]]) ->
>             let strb = System.Text.StringBuilder()
>             let rec loop = function
>                 | DPair(a,b) -> loop a; loop b
>                 | DLit(LitString x) -> strb.Append(x) |> ignore
>                 | DB -> ()
>                 | x -> raise_type_error s $"Expected a compile time string or a 
> pair of them.\nGot: {show_data x}"
>             loop (term s l)
>             DLit(LitString(strb.ToString()))
>         | EOp(_,Printf,[[fmt;str]]) ->
>             let fmt,str = term2 s fmt str
>             match fmt with
>             | DLit(LitString _) -> push_binop_no_rewrite s Printf (fmt, str) YB
>             | _ -> raise_type_error s $"Expected a compile time string as the 
> format.\nGot: {show_data fmt}"
>         | EOp(_,op,a) -> raise_type_error s <| sprintf "Compiler error: %A with 
> %i args not implemented" op (List.length a)
> 
>     let s : LangEnv = {
>         trace = [[]]
>         seq = null
>         cse = [[]]
>         unions = Map.empty
>         i = ref 0
>         env_global_type = [[||]]
>         env_global_term = [[||]]
>         env_stack_type = [[||]]
>         env_stack_term = [[||]]
>         backend = backend_strings.Add env.backend
>         globals = ResizeArray ()
>         }
>     let ty_to_data x = ty_to_data {s with i = ref 0} x
>     let nominal_apply x = nominal_type_apply {s with i = ref 0} x
> 
>     match x with
>     | EFun'(r,_,_,_,_) -> term_scope s (EApply(r,x,EB r)), 
> {join_point_method=join_point_method; join_point_closure=join_point_closure; 
> ty_to_data=ty_to_data; nominal_apply=nominal_apply; globals=s.globals}
>     | EForall' _ -> raise_type_error s "The main function should not have a 
> forall."
>     | _ -> raise_type_error s "Expected a function as the main."
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## CodegenUtils
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> // open System.Text
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### CodegenEnv
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type CodegenEnv =
>     {
>     text : System.Text.StringBuilder
>     indent : int
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### line
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let line x (s : string) = x.text.Append(' ', x.indent).AppendLine s |> ignore
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### indent
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let indent x : CodegenEnv = {x with indent=x.indent+4}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### add_dec_point
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let add_dec_point (x : string) = if x.IndexOf('.') = -1 && x.Contains "E" |> not
> then x + ".0" else x
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### CodegenError
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> exception CodegenError of Range option * string
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### CodegenErrorWithPos
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> exception CodegenErrorWithPos of Trace * string
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### raise_codegen_error
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let raise_codegen_error x = raise (CodegenError (None,x))
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### raise_codegen_error_backend
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let raise_codegen_error_backend r x = raise (CodegenError (Some r,x))
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### raise_codegen_error'
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let raise_codegen_error' trace (r,x) = raise (CodegenErrorWithPos(Option.fold 
> (fun s x -> x :: s) trace r,x))
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## CodegenFsharp
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### backend_nameFsharp
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let backend_nameFsharp = "Fsharp"
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### litFsharp
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let litFsharp = function
>     | LitInt8 x -> sprintf "%iy" x
>     | LitInt16 x -> sprintf "%is" x
>     | LitInt32 x -> sprintf "%i" x
>     | LitInt64 x -> sprintf "%iL" x
>     | LitUInt8 x -> sprintf "%iuy" x
>     | LitUInt16 x -> sprintf "%ius" x
>     | LitUInt32 x -> sprintf "%iu" x
>     | LitUInt64 x -> sprintf "%iUL" x
>     | LitFloat32 x -> 
>         if x = infinityf then "infinityf"
>         elif x = -infinityf then "-infinityf"
>         elif System.Single.IsNaN x then "nanf"
>         else x.ToString("R") |> add_dec_point |> sprintf "%sf"
>     | LitFloat64 x ->
>         if x = infinity then "infinity"
>         elif x = -infinity then "-infinity"
>         elif System.Double.IsNaN x then "nan"
>         else x.ToString("R") |> add_dec_point
>     | LitString x -> 
>         let strb = System.Text.StringBuilder(x.Length+2)
>         strb.Append '"' |> ignore
>         String.iter (function
>             | '"' -> strb.Append "\\\"" 
>             | '\b' -> strb.Append @"\b"
>             | '\t' -> strb.Append @"\t"
>             | '\n' -> strb.Append @"\n"
>             | '\r' -> strb.Append @"\r"
>             | '\\' -> strb.Append @"\\"
>             | x -> strb.Append x
>             >> ignore 
>             ) x
>         strb.Append '"' |> ignore
>         strb.ToString()
>     | LitChar x -> 
>         match x with
>         | '\b' -> @"\b"
>         | '\n' -> @"\n"
>         | '\t' -> @"\t"
>         | '\r' -> @"\r"
>         | '\\' -> @"\\"
>         | x -> string x
>         |> sprintf "'%s'"
>     | LitBool x -> if x then "true" else "false"
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### primFsharp
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let primFsharp = function
>     | Int8T -> "int8"
>     | Int16T -> "int16"
>     | Int32T -> "int32"
>     | Int64T -> "int64"
>     | UInt8T -> "uint8"
>     | UInt16T -> "uint16"
>     | UInt32T -> "uint32"
>     | UInt64T -> "uint64"
>     | Float32T -> "float32"
>     | Float64T -> "float"
>     | BoolT -> "bool"
>     | StringT -> "string"
>     | CharT -> "char"
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### type_litFsharp
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let type_litFsharp = function
>     | YLit x -> litFsharp x
>     | YSymbol x -> x
>     | x -> raise_codegen_error "Compiler error: Expecting a type literal in the 
> macro." 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### UnionRecFsharp
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type UnionRecFsharp = {tag : int; free_vars : Map<int * string, TyV[[]]>}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### LayoutRecFsharp
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type LayoutRecFsharp = {tag : int; data : Data; free_vars : TyV[[]]; 
> free_vars_by_key : Map<int * string, TyV[[]]>}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### MethodRecFsharp
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type MethodRecFsharp = {tag : int; free_vars : L<Tag,Ty>[[]]; range : Ty; body :
> TypedBind[[]]}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### ClosureRecFsharp
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type ClosureRecFsharp = {tag : int; free_vars : L<Tag,Ty>[[]]; domain_args : 
> TyV[[]]; range : Ty; body : TypedBind[[]]}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### codegenFsharp
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let codegenFsharp (env : PartEvalResult) (x : TypedBind [[]]) =
>     let types = ResizeArray()
>     let functions = ResizeArray()
> 
>     let print is_type show r =
>         let s = {text=System.Text.StringBuilder(); indent=0}
>         show s r
>         let text = s.text.ToString()
>         if is_type then types.Add(text) else functions.Add(text)
> 
>     let layout show =
>         let dict' = Dictionary(HashIdentity.Structural)
>         let dict = Dictionary(HashIdentity.Reference)
>         let f x : LayoutRecFsharp = 
>             match x with
>             | YLayout(x,_) ->
>             let x = env.ty_to_data x
>             let a, b =
>                 match x with
>                 | DRecord a -> let a = Map.map (fun _ -> data_free_vars) a in a 
> |> Map.toArray |> Array.collect snd, a
>                 | _ -> data_free_vars x, Map.empty
>             {data=x; free_vars=a; free_vars_by_key=b; tag=dict'.Count}
>             | _ -> raise_codegen_error $"Compiler error: Expected a layout type 
> (3).\nGot: %s{show_ty x}"
>         fun x ->
>             let mutable dirty = false
>             let r = memoize dict (memoize dict' (fun x -> dirty <- true; f x)) x
>             if dirty then print true show r
>             r
> 
>     let union show =
>         let dict = Dictionary(HashIdentity.Reference)
>         let f (a : Map<int * string,Ty>) : UnionRecFsharp = {free_vars=a |> 
> Map.map (fun _ -> env.ty_to_data >> data_free_vars); tag=dict.Count}
>         fun x ->
>             let mutable dirty = false
>             let r = memoize dict (fun x -> dirty <- true; f x) x
>             if dirty then print true show r
>             r
> 
>     let jp f show =
>         let dict = Dictionary(HashIdentity.Structural)
>         let f x = f (x, dict.Count)
>         fun x ->
>             let mutable dirty = false
>             let r = memoize dict (fun x -> dirty <- true; f x) x
>             if dirty then print false show r
>             r
> 
>     let args x = x |> Array.map (fun (L(i,_)) -> sprintf "v%i" i) |> 
> String.concat ", "
>     let show_w = function WV (L(i,_)) -> sprintf "v%i" i | WLit a -> litFsharp a
> 
>     let global' =
>         let has_added = HashSet env.globals
>         fun x -> if has_added.Add(x) then env.globals.Add x
> 
>     let rec tyv x =
>         match x with
>         | YUnion a -> 
>             let a = a.Item
>             match a.layout with
>             | UHeap -> sprintf "UH%i" (uheap a.cases).tag
>             | UStack -> sprintf "US%i" (ustack a.cases).tag
>         | YLayout(_,lay) as a -> 
>             match lay with
>             | Heap -> sprintf "Heap%i" (heap a).tag
>             | HeapMutable -> sprintf "Mut%i" (mut a).tag
>             | StackMutable -> raise_codegen_error "Compiler error: The F# 
> backend doesn't support stack mutable layout types."
>         | YMacro [[Text "backend_switch "; Type (YRecord r)]] ->
>             match r |> Map.tryPick (fun (_, k) v -> if k = backend_nameFsharp 
> then Some v else None) with
>             | Some x -> tup_ty x
>             | None -> raise_codegen_error $"In the backend_switch, expected a 
> record with the '{backend_nameFsharp}' field."
>         | YMacro a -> a |> List.map (function Text a -> a | Type a -> tup_ty a |
> TypeLit a -> type_litFsharp a) |> String.concat ""
>         | YPrim a -> primFsharp a
>         | YArray a -> sprintf "(%s [[]])" (tup_ty a)
>         | YFun(a,b,FT_Vanilla) -> sprintf "(%s -> %s)" (tup_ty a) (tup_ty b)
>         | YExists -> raise_codegen_error "Existentials are not supported at 
> runtime. They are a compile time feature only."
>         | YForall -> raise_codegen_error "Foralls are not supported at runtime. 
> They are a compile time feature only."
>         | a -> raise_codegen_error $"Type not supported in the codegen.\nGot: 
> %A{a}"
>     and args_tys x = x |> Array.map (fun (L(i,t)) -> sprintf "v%i : %s" i 
> (tup_ty t)) |> String.concat ", "
>     and binds (s : CodegenEnv) (x : TypedBind [[]]) =
>         Array.iter (function
>             | TyLet(d,trace,a) -> try op s (Some d) a with :? CodegenError as e 
> -> raise_codegen_error' trace (e.Data0,e.Data1)
>             | TyLocalReturnOp(trace,a,_) -> try op s None a with :? CodegenError
> as e -> raise_codegen_error' trace (e.Data0,e.Data1)
>             | TyLocalReturnData(d,trace) -> try line s (tup d) with :? 
> CodegenError as e -> raise_codegen_error' trace (e.Data0,e.Data1)
>             ) x
>     and tup x =
>         match data_term_vars x with
>         | [[||]] -> "()"
>         | [[|x|]] -> show_w x
>         | x -> Array.map show_w x |> String.concat ", " |> sprintf "struct (%s)"
>     and tup_ty x =
>         match env.ty_to_data x |> data_free_vars |> Array.map (fun (L(_,x)) -> 
> tyv x) with
>         | [[||]] -> "unit"
>         | [[|x|]] -> x
>         | x -> String.concat " * " x |> sprintf "struct (%s)"
>     and op s d a =
>         let jp (a, b) =
>             let args = args b
>             match a with
>             | JPMethod(a,b) -> sprintf "method%i(%s)" (method (a,b)).tag args
>             | JPClosure(a,b) -> sprintf "closure%i(%s)" (closure (a,b)).tag args
>         let free_vars do_annot x =
>             let f (L(i,t)) = if do_annot then sprintf "v%i : %s" i (tyv t) else 
> sprintf "v%i" i
>             match data_free_vars x with
>             | [[||]] -> "()"
>             | [[|x|]] -> f x
>             | x -> Array.map f x |> String.concat ", " |> sprintf "struct (%s)"
>         let simple x = 
>             match d with
>             | None -> x
>             | Some d -> match free_vars true d with "()" -> x | d -> sprintf 
> "let %s = %s" d x
>             |> line s
>         let complex f =
>             match d with
>             | None -> f s : unit
>             | Some d -> match free_vars true d with "()" -> f s | d -> line s 
> (sprintf "let %s =" d); f (indent s)
>         let layout_vars a =
>             let f i x =
>                 match x with
>                 | WV(L(i',_)) -> sprintf "l%i = v%i" i i'
>                 | WLit x -> sprintf "l%i = %s" i (litFsharp x)
>             a |> data_term_vars |> Array.mapi f |> String.concat "; "
>         let layout_index i x =
>             x |> Array.map (fun (L(i',_)) -> sprintf "v%i.l%i" i i')
>             |> String.concat ", "
>             |> function "" -> () | x -> simple x
>         let length (a,b) =
>             match a with
>             | YPrim UInt8T -> sprintf "System.Convert.ToByte %s.Length" (tup b)
>             | YPrim UInt16T -> sprintf "System.Convert.ToUInt16 %s.Length" (tup 
> b)
>             | YPrim UInt32T -> sprintf "System.Convert.ToUInt32 %s.Length" (tup 
> b)
>             | YPrim UInt64T -> sprintf "System.Convert.ToUInt64 %s.Length" (tup 
> b)
>             | YPrim Int8T -> sprintf "System.Convert.ToSByte %s.Length" (tup b)
>             | YPrim Int16T -> sprintf "System.Convert.ToInt16 %s.Length" (tup b)
>             | YPrim Int32T -> sprintf "%s.Length" (tup b)
>             | YPrim Int64T -> sprintf "System.Convert.ToInt64 %s.Length" (tup b)
>             | _ -> raise_codegen_error "Compiler error: Expected an int in 
> length"
>             |> simple
>         match a with
>         | TyMacro a -> a |> List.map (function CMText x -> x | CMTerm x -> tup x
> | CMType x -> tup_ty x | CMTypeLit x -> type_litFsharp x) |> String.concat "" |>
> simple
>         | TySizeOf t -> simple $"sizeof<{tup_ty t}>"
>         | TyIf(cond,tr,fl) ->
>             complex <| fun s ->
>             line s (sprintf "if %s then" (tup cond))
>             binds (indent s) tr
>             match fl with
>             | [[|TyLocalReturnData(DB,_)|]] -> ()
>             | _ ->
>                 line s "else"
>                 binds (indent s) fl
>         | TyJoinPoint(a,args) -> simple (jp (a, args))
>         | TyBackend(_,_,r) -> raise_codegen_error_backend r "The F# backend does
> not support nesting other backends."
>         | TyWhile(a,b) ->
>             complex <| fun s ->
>             line s (sprintf "while %s do" (jp a))
>             binds (indent s) b
>         | TyDo a ->
>             complex <| fun s ->
>             line s "do"
>             binds (indent s) a
>         | TyIndent a ->
>             complex <| fun s ->
>             binds (indent s) a
>         | TyIntSwitch(L(i,_),on_succ,on_fail) ->
>             complex <| fun s ->
>             line s (sprintf "match v%i with" i)
>             Array.iteri (fun i x ->
>                 line s (sprintf "| %i ->" i)
>                 binds (indent s) x
>                 ) on_succ
>             line s "| _ ->"
>             binds (indent s) on_fail
>         | TyUnionUnbox(is,x,on_succs,on_fail) ->
>             complex <| fun s ->
>             let case_tags = x.Item.tags
>             line s (sprintf "match %s with" (is |> List.map (fun (L(i,_)) -> 
> $"v{i}") |> String.concat ", "))
>             let prefix = 
>                 let x = x.Item
>                 match x.layout with
>                 | UHeap -> sprintf "UH%i" (uheap x.cases).tag
>                 | UStack -> sprintf "US%i" (ustack x.cases).tag
>             Map.iter (fun k (a,b) ->
>                 let i = case_tags.[[k]]
>                 let cases = 
>                     a |> List.map (fun a ->
>                         match data_free_vars a with
>                         | [[||]] -> ""
>                         | x -> sprintf "(%s)" (args x)
>                         |> sprintf "%s_%i%s" prefix i
>                         )
>                     |> String.concat ", "
>                 line s (sprintf "| %s -> (* %s *)" cases k)
>                 binds (indent s) b
>                 ) on_succs
>             on_fail |> Option.iter (fun b ->
>                 line s "| _ ->"
>                 binds (indent s) b
>                 )
>         | TyUnionBox(a,b,c) ->
>             let c = c.Item
>             let i = c.tags.[[a]]
>             let vars =
>                 match data_term_vars b with
>                 | [[||]] -> ""
>                 | x -> Array.map show_w x |> String.concat ", " |> sprintf 
> "(%s)"
>             match c.layout with
>             | UHeap -> sprintf "UH%i_%i%s" (uheap c.cases).tag i vars
>             | UStack -> sprintf "US%i_%i%s" (ustack c.cases).tag i vars
>             |> simple
>         | TyToLayout(a,b) -> 
>             let a = layout_vars a
>             match b with
>             | YLayout(_,layout) -> 
>                 match layout with
>                 | Heap -> if a = "" then sprintf "Heap%i()" (heap b).tag else 
> sprintf "{%s} : Heap%i" a (heap b).tag
>                 | HeapMutable -> if a = "" then sprintf "Mut%i()" (mut b).tag 
> else sprintf "{%s} : Mut%i" a (mut b).tag
>                 | StackMutable -> raise_codegen_error "The F# backend doesn't 
> support stack mutable layout types."
>             | _ -> raise_codegen_error $"Compiler error: Expected a layout type 
> (4).\nGot: %s{show_ty b}"
>             |> simple
>         | TyLayoutIndexAll(L(i,YLayout(_,lay) & a)) -> 
>             match lay with
>             | Heap -> heap a 
>             | HeapMutable -> mut a 
>             | StackMutable -> raise_codegen_error "The F# backend doesn't 
> support indexing into stack mutable layout types."
>             |> fun x -> x.free_vars |> layout_index i
>         | TyLayoutIndexByKey(L(i,YLayout(_,lay) & a),key) -> 
>             match lay with
>             | Heap -> heap a
>             | HeapMutable -> mut a 
>             | StackMutable -> raise_codegen_error "The F# backend doesn't 
> support indexing into stack mutable layout types."
>             |> fun x ->
>                 x.free_vars_by_key
>                 |> Map.tryPick (fun (_, k) v -> if k = key then Some v else 
> None)
>                 |> Option.iter (layout_index i)
>         | TyLayoutIndexAll _ | TyLayoutIndexByKey _ -> raise_codegen_error 
> "Compiler error: Expected the TyV in layout index to be a layout type."
>         | TyLayoutMutableSet(L(i,t),b,c) ->
>             let a = List.fold (fun s k ->
>                 match s with
>                 | DRecord l -> l |> Map.pick (fun (_,k') v -> if k' = k then 
> Some v else None)
>                 | _ -> raise_codegen_error "Compiler error: Expected a record.")
> (mut t).data b
>             Array.iter2 (fun (L(i',_)) b ->
>                 line s (sprintf "v%i.l%i <- %s" i i' (show_w b))
>                 ) (data_free_vars a) (data_term_vars c)
>         | TyArrayLiteral(a,b) -> simple <| sprintf "[[|%s|]]" (List.map tup b |>
> String.concat "; ")
>         | TyArrayCreate(a,b) ->
>             match b with
>             | DLit(LitInt32 _) | DV(L(_,YPrim Int32T)) -> simple (sprintf 
> "Array.zeroCreate<%s> (%s)" (tup_ty a) (tup b))
>             | _ -> simple (sprintf "Array.zeroCreate<%s> 
> (System.Convert.ToInt32(%s))" (tup_ty a) (tup b))
>         | TyArrayLength(a,b) -> length (a,b)
>         | TyStringLength(a,b) -> length (a,b)
>         | TyFailwith(a,b) -> simple (sprintf "failwith<%s> %s" (tup_ty a) (tup 
> b))
>         | TyConv(a,b) ->
>             let b = tup b
>             match a with
>             | YPrim Int8T -> $"int8 {b}"
>             | YPrim Int16T -> $"int16 {b}"
>             | YPrim Int32T -> $"int32 {b}"
>             | YPrim Int64T -> $"int64 {b}"
>             | YPrim UInt8T -> $"uint8 {b}"
>             | YPrim UInt16T -> $"uint16 {b}"
>             | YPrim UInt32T -> $"uint32 {b}"
>             | YPrim UInt64T -> $"uint64 {b}"
>             | YPrim Float32T -> $"float32 {b}"
>             | YPrim Float64T -> $"float {b}"
>             | _ -> raise_codegen_error $"Compiler error: Unexpected type in 
> Conv. Got: {show_ty a}"
>             |> simple
>         | TyApply(L(i,_),b) -> sprintf "v%i %s" i (tup b) |> simple
>         | TyOp(Global, [[DLit (LitString x)]]) -> global' x
>         | TyOp(op,l) ->
>             match op, l with
>             | Dyn,[[a]] -> tup a
>             | TypeToVar, _ -> raise_codegen_error "The use of `` should never 
> appear in generated code."
>             | StringIndex, [[a;b]] -> sprintf "%s.[[int %s]]" (tup a) (tup b)
>             | StringSlice, [[a;b;c]] -> sprintf "%s.[[int %s..int %s]]" (tup a) 
> (tup b) (tup c)
>             | ArrayIndex, [[a;b]] -> sprintf "%s.[[int %s]]" (tup a) (tup b)
>             | ArrayIndexSet, [[a;b;c]] -> sprintf "%s.[[int %s]] <- %s" (tup a) 
> (tup b) (tup c) 
> 
>             // Math
>             | Add, [[a;b]] -> sprintf "%s + %s" (tup a) (tup b)
>             | Sub, [[a;b]] -> sprintf "%s - %s" (tup a) (tup b)
>             | Mult, [[a;b]] -> sprintf "%s * %s" (tup a) (tup b)
>             | Div, [[a;b]] -> sprintf "%s / %s" (tup a) (tup b)
>             | Mod, [[a;b]] -> sprintf "%s %% %s" (tup a) (tup b)
>             | Pow, [[a;b]] -> sprintf "%s ** %s" (tup a) (tup b)
>             | LT, [[a;b]] -> sprintf "%s < %s" (tup a) (tup b)
>             | LTE, [[a;b]] -> sprintf "%s <= %s" (tup a) (tup b)
>             | EQ, [[a;b]] -> sprintf "%s = %s" (tup a) (tup b)
>             | NEQ, [[a;b]] -> sprintf "%s <> %s" (tup a) (tup b)
>             | GT, [[a;b]] -> sprintf "%s > %s" (tup a) (tup b)
>             | GTE, [[a;b]] -> sprintf "%s >= %s" (tup a) (tup b)
>             | BoolAnd, [[a;b]] -> sprintf "%s && %s" (tup a) (tup b)
>             | BoolOr, [[a;b]] -> sprintf "%s || %s" (tup a) (tup b)
>             | BitwiseAnd, [[a;b]] -> sprintf "%s &&& %s" (tup a) (tup b)
>             | BitwiseOr, [[a;b]] -> sprintf "%s ||| %s" (tup a) (tup b)
>             | BitwiseXor, [[a;b]] -> sprintf "%s ^^^ %s" (tup a) (tup b)
>             | BitwiseComplement, [[a]] -> sprintf "~~~%s" (tup a)
> 
>             | ShiftLeft, [[a;b]] -> sprintf "%s <<< %s" (tup a) (tup b)
>             | ShiftRight, [[a;b]] -> sprintf "%s >>> %s" (tup a) (tup b)
> 
>             | Neg, [[x]] -> sprintf " -%s" (tup x)
>             | Log, [[x]] -> sprintf "log %s" (tup x)
>             | Exp, [[x]] -> sprintf "exp %s" (tup x)
>             | Tanh, [[x]] -> sprintf "tanh %s" (tup x)
>             | Sqrt, [[x]] -> sprintf "sqrt %s" (tup x)
>             | Sin, [[x]] -> sprintf "sin %s" (tup x)
>             | Cos, [[x]] -> sprintf "cos %s" (tup x)
>             | NanIs, [[x]] -> 
>                 match x with
>                 | DLit(LitFloat32 _) | DV(L(_,YPrim Float32T)) -> sprintf 
> "System.Single.IsNaN(%s)" (tup x)
>                 | DLit(LitFloat64 _) | DV(L(_,YPrim Float64T)) -> sprintf 
> "System.Double.IsNaN(%s)" (tup x)
>                 | _ -> raise_codegen_error "Compiler error: Invalid type in 
> NanIs."
>             | UnionTag, [[DV(L(i,YUnion h))]] -> 
>                 let h = h.Item
>                 let ty =
>                     match h.layout with
>                     | UHeap -> sprintf "UH%i" (uheap h.cases).tag
>                     | UStack -> sprintf "US%i" (ustack h.cases).tag
>                 let items =
>                     h.cases
>                     |> Seq.map (fun (KeyValue ((i, _), _)) ->
>                         $"{ty}_{i}, {i}"
>                     )
>                     |> String.concat "; "
>                 $"[[ {items} ]] |> Map |> Map.find v{i}"
>             | _ -> raise_codegen_error <| sprintf "Compiler error: %A with %i 
> args not supported" op l.Length
>             |> simple
>     and heap : _ -> LayoutRecFsharp = layout (fun s x ->
>         let b = x.free_vars |> Array.map (fun (L(i,t)) -> sprintf "l%i : %s" i 
> (tyv t)) |> String.concat "; "
>         if b = "" then line s (sprintf "Heap%i() = class end" x.tag)
>         else line s (sprintf "Heap%i = {%s}" x.tag b)
>         )
>     and mut : _ -> LayoutRecFsharp = layout (fun s x ->
>         let b = x.free_vars |> Array.map (fun (L(i,t)) -> sprintf "mutable l%i :
> %s" i (tyv t)) |> String.concat "; "
>         if b = "" then line s (sprintf "Mut%i() = class end" x.tag)
>         else line s (sprintf "Mut%i = {%s}" x.tag b)
>         )
>     and uheap : _ -> UnionRecFsharp = union (fun s x ->
>         line s (sprintf "UH%i =" x.tag)
>         let mutable i = 0
>         x.free_vars |> Map.iter (fun _ a ->
>             match a with
>             | [[||]] -> line (indent s) (sprintf "| UH%i_%i" x.tag i)
>             | a -> line (indent s) (sprintf "| UH%i_%i of %s" x.tag i (a |> 
> Array.map (fun (L(_,t)) -> tyv t) |> String.concat " * "))
>             i <- i+1
>             )
>         )
>     and ustack : _ -> UnionRecFsharp = union (fun s x ->
>         line s (sprintf "[[<Struct>]] US%i =" x.tag)
>         let mutable i = 0
>         x.free_vars |> Map.iter (fun _ a ->
>             match a with
>             | [[||]] -> line (indent s) (sprintf "| US%i_%i" x.tag i)
>             | a -> line (indent s) (sprintf "| US%i_%i of %s" x.tag i (a |> 
> Array.mapi (fun i' (L(_,t)) -> sprintf "f%i_%i : %s" i i' (tyv t)) |> 
> String.concat " * "))
>             i <- i+1
>             )
>         )
>     and method : _ -> MethodRecFsharp =
>         jp (fun ((jp_body,key & (C(args,_))),i) ->
>             match (fst env.join_point_method.[[jp_body]]).[[key]] with
>             | Some a, Some range, _ -> {tag=i; free_vars=rdata_free_vars args; 
> range=range; body=a}
>             | _ -> raise_codegen_error "Compiler error: The method dictionary is
> malformed"
>             ) (fun s x ->
>             line s (sprintf "method%i (%s) : %s =" x.tag (args_tys x.free_vars) 
> (tup_ty x.range))
>             binds (indent s) x.body
>             )
>     and closure : _ -> ClosureRecFsharp =
>         jp (fun ((jp_body,key & (C(args,_,fun_ty))),i) ->
>             match fun_ty with
>             | YFun(domain,range,FT_Vanilla) ->
>                 match (fst env.join_point_closure.[[jp_body]]).[[key]] with
>                 | Some(domain_args, body) -> {tag=i; free_vars=rdata_free_vars 
> args; domain_args=data_free_vars domain_args; range=range; body=body}
>                 | _ -> raise_codegen_error "Compiler error: The method 
> dictionary is malformed"
>             | YFun(_,_,_) -> raise_codegen_error "Non-standard functions are not
> supported in the F# backend."
>             | _ -> raise_codegen_error "Compiler error: Unexpected type in the 
> closure join point."
>             ) (fun s x ->
>             let domain = 
>                 match x.domain_args |> Array.map (fun (L(i,t)) -> sprintf "v%i :
> %s" i (tyv t)) with
>                 | [[||]] -> "()"
>                 | [[|x|]] -> sprintf "(%s)" x
>                 | x -> String.concat ", " x |> sprintf "struct (%s)"
>             line s (sprintf "closure%i (%s) %s : %s =" x.tag (args_tys 
> x.free_vars) domain (tup_ty x.range))
>             binds (indent s) x.body
>             )
> 
>     let main = System.Text.StringBuilder()
>     binds {text=main; indent=0} x
> 
>     let program = System.Text.StringBuilder()
>     env.globals |> Seq.iter (fun (x : string) -> program.AppendLine(x) |> 
> ignore)
>     types |> Seq.iteri (fun i x -> program.Append(if i = 0 then "type " else 
> "and ").Append(x) |> ignore)
>     functions |> Seq.iteri (fun i x -> program.Append(if i = 0 then "let rec " 
> else "and ").Append(x) |> ignore)
>     program.Append(main).ToString()
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> ── [ 2.90s - diagnostics ] ─────────────────────────────────────────────────────
> │ input.fsx (328,81)-(328,84) typecheck warning This and other
> recursive references to the object(s) being defined will be checked for 
> initialization-soundness at runtime through the use of a delayed reference. This
> is because you are defining one or more recursive objects, rather than recursive
> functions. This warning may be suppressed by using '#nowarn "40"' or 
> '--nowarn:40'.
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## CodegenGleam
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### backend_nameGleam
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let backend_nameGleam = "Gleam"
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### litGleam
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let litGleam = function
>     | LitInt8 x -> sprintf "%i" x
>     | LitInt16 x -> sprintf "%i" x
>     | LitInt32 x -> sprintf "%i" x
>     | LitInt64 x -> sprintf "%i" x
>     | LitUInt8 x -> sprintf "%i" x
>     | LitUInt16 x -> sprintf "%i" x
>     | LitUInt32 x -> sprintf "%i" x
>     | LitUInt64 x -> sprintf "%i" x
>     | LitFloat32 x -> 
>         if x = infinityf then "infinityf"
>         elif x = -infinityf then "-infinityf"
>         elif System.Single.IsNaN x then "nanf"
>         else x.ToString("R") |> add_dec_point |> sprintf "%s"
>     | LitFloat64 x ->
>         if x = infinity then "infinity"
>         elif x = -infinity then "-infinity"
>         elif System.Double.IsNaN x then "nan"
>         else x.ToString("R") |> add_dec_point
>     | LitString x -> 
>         let strb = System.Text.StringBuilder(x.Length+2)
>         strb.Append '"' |> ignore
>         String.iter (function
>             | '"' -> strb.Append "\\\"" 
>             | '\b' -> strb.Append @"\b"
>             | '\t' -> strb.Append @"\t"
>             | '\n' -> strb.Append @"\n"
>             | '\r' -> strb.Append @"\r"
>             | '\\' -> strb.Append @"\\"
>             | x -> strb.Append x
>             >> ignore 
>             ) x
>         strb.Append '"' |> ignore
>         strb.ToString()
>     | LitChar x -> 
>         match x with
>         | '\b' -> @"\b"
>         | '\n' -> @"\n"
>         | '\t' -> @"\t"
>         | '\r' -> @"\r"
>         | '\\' -> @"\\"
>         | x -> string x
>         |> sprintf "\"%s\""
>     | LitBool x -> if x then "True" else "False"
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### primGleam
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let primGleam = function
>     | Int8T -> "Int"
>     | Int16T -> "Int"
>     | Int32T -> "Int"
>     | Int64T -> "Int"
>     | UInt8T -> "Int"
>     | UInt16T -> "Int"
>     | UInt32T -> "Int"
>     | UInt64T -> "Int"
>     | Float32T -> "Float"
>     | Float64T -> "Float"
>     | BoolT -> "Bool"
>     | StringT -> "String"
>     | CharT -> "String"
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### type_litGleam
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let type_litGleam = function
>     | YLit x -> litGleam x
>     | YSymbol x -> x
>     | x -> raise_codegen_error "Compiler error: Expecting a type literal in the 
> macro." 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### UnionRecGleam
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type UnionRecGleam = {tag : int; free_vars : Map<int * string, TyV[[]]>}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### LayoutRecGleam
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type LayoutRecGleam = {tag : int; data : Data; free_vars : TyV[[]]; 
> free_vars_by_key : Map<int * string, TyV[[]]>}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### MethodRecGleam
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type MethodRecGleam = {tag : int; free_vars : L<Tag,Ty>[[]]; range : Ty; body : 
> TypedBind[[]]}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### ClosureRecGleam
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type ClosureRecGleam = {tag : int; free_vars : L<Tag,Ty>[[]]; domain_args : 
> TyV[[]]; range : Ty; body : TypedBind[[]]}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### codegenGleam
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let codegenGleam (env : PartEvalResult) (x : TypedBind [[]]) =
>     let types = ResizeArray()
>     let functions = ResizeArray()
> 
>     let print is_type show r =
>         let s = {text=System.Text.StringBuilder(); indent=0}
>         show s r
>         let text = s.text.ToString()
>         if is_type then types.Add(text) else functions.Add(text)
> 
>     let layout show =
>         let dict' = Dictionary(HashIdentity.Structural)
>         let dict = Dictionary(HashIdentity.Reference)
>         let f x : LayoutRecGleam = 
>             match x with
>             | YLayout(x,_) ->
>             let x = env.ty_to_data x
>             let a, b =
>                 match x with
>                 | DRecord a -> let a = Map.map (fun _ -> data_free_vars) a in a 
> |> Map.toArray |> Array.collect snd, a
>                 | _ -> data_free_vars x, Map.empty
>             {data=x; free_vars=a; free_vars_by_key=b; tag=dict'.Count}
>             | _ -> raise_codegen_error $"Compiler error: Expected a layout type 
> (3).\nGot: %s{show_ty x}"
>         fun x ->
>             let mutable dirty = false
>             let r = memoize dict (memoize dict' (fun x -> dirty <- true; f x)) x
>             if dirty then print true show r
>             r
> 
>     let union show =
>         let dict = Dictionary(HashIdentity.Reference)
>         let f (a : Map<int * string,Ty>) : UnionRecGleam = {free_vars=a |> 
> Map.map (fun _ -> env.ty_to_data >> data_free_vars); tag=dict.Count}
>         fun x ->
>             let mutable dirty = false
>             let r = memoize dict (fun x -> dirty <- true; f x) x
>             if dirty then print true show r
>             r
> 
>     let jp f show =
>         let dict = Dictionary(HashIdentity.Structural)
>         let f x = f (x, dict.Count)
>         fun x ->
>             let mutable dirty = false
>             let r = memoize dict (fun x -> dirty <- true; f x) x
>             if dirty then print false show r
>             r
> 
>     let args x = x |> Array.map (fun (L(i,_)) -> sprintf "v%i" i) |> 
> String.concat ", "
>     let show_w = function WV (L(i,_)) -> sprintf "v%i" i | WLit a -> litGleam a
> 
>     let global' =
>         let has_added = HashSet env.globals
>         fun x -> if has_added.Add(x) then env.globals.Add x
> 
>     let rec tyv x =
>         match x with
>         | YUnion a -> 
>             let a = a.Item
>             match a.layout with
>             | UHeap -> sprintf "Uh%i" (uheap a.cases).tag
>             | UStack -> sprintf "Us%i" (ustack a.cases).tag
>         | YLayout(_,lay) as a -> 
>             match lay with
>             | Heap -> sprintf "Heap%i" (heap a).tag
>             | HeapMutable -> sprintf "Mut%i" (mut a).tag
>             | StackMutable -> raise_codegen_error "Compiler error: The F# 
> backend doesn't support stack mutable layout types."
>         | YMacro [[Text "backend_switch "; Type (YRecord r)]] ->
>             match r |> Map.tryPick (fun (_, k) v -> if k = backend_nameGleam 
> then Some v else None) with
>             | Some x -> tup_ty x
>             | None -> raise_codegen_error $"In the backend_switch, expected a 
> record with the '{backend_nameGleam}' field."
>         | YMacro a -> a |> List.map (function Text a -> a | Type a -> tup_ty a |
> TypeLit a -> type_litGleam a) |> String.concat ""
>         | YPrim a -> primGleam a
>         | YArray a ->
>             global' "import gary.{type ErlangArray}"
>             sprintf "ErlangArray(%s)" (tup_ty a)
>         | YFun(a,b,FT_Vanilla) -> sprintf "fn(%s) -> %s" (tup_ty a) (tup_ty b)
>         | YExists -> raise_codegen_error "Existentials are not supported at 
> runtime. They are a compile time feature only."
>         | YForall -> raise_codegen_error "Foralls are not supported at runtime. 
> They are a compile time feature only."
>         | a -> raise_codegen_error $"Type not supported in the codegen.\nGot: 
> %A{a}"
>     and args_tys x = x |> Array.map (fun (L(i,t)) -> sprintf "v%i :    %s" i 
> (tup_ty t)) |> String.concat ", "
>     and binds (s : CodegenEnv) (x : TypedBind [[]]) =
>         Array.iter (function
>             | TyLet(d,trace,a) -> try op s (Some d) a with :? CodegenError as e 
> -> raise_codegen_error' trace (e.Data0,e.Data1)
>             | TyLocalReturnOp(trace,a,_) -> try op s None a with :? CodegenError
> as e -> raise_codegen_error' trace (e.Data0,e.Data1)
>             | TyLocalReturnData(d,trace) -> try line s (tup d) with :? 
> CodegenError as e -> raise_codegen_error' trace (e.Data0,e.Data1)
>             ) x
>     and tup x =
>         match data_term_vars x with
>         | [[||]] -> "Nil "
>         | [[|x|]] -> show_w x
>         | x -> Array.map show_w x |> String.concat ", " |> sprintf "#(%s) "
>     and tup_ty x =
>         match env.ty_to_data x |> data_free_vars |> Array.map (fun (L(_,x)) -> 
> tyv x) with
>         | [[||]] -> "Nil  "
>         | [[|x|]] -> x
>         | x -> String.concat ", " x |> sprintf "#(%s)  "
>     and op s d a =
>         let jp (a, b) =
>             let args = args b
>             match a with
>             | JPMethod(a,b) -> sprintf "method%i(%s)" (method (a,b)).tag args
>             | JPClosure(a,b) ->
>                 let code =
>                     [[
>                         "closure"
>                         (a, b) |> closure |> _.tag |> string
>                         "("
>                         if args = "" then "" else $")(#({args})"
>                         ")"
>                         if args = "" || args |> SpiralSm.contains ", " then "" 
> else "(Nil)"
>                     ]]
>                     |> SpiralSm.concat ""
>                 if args = "" then
>                     // trace Verbose (fun () -> $"""CodegenGleam.codegenGleam / 
> """) _locals
>                     $"fn (x) {{ {code}(#(x))(   Nil) }}"
>                 else code
>         let free_vars do_annot x =
>             let f (L(i,t)) = if do_annot then sprintf "v%i :  %s" i (tyv t) else
> sprintf "v%i" i
>             match data_free_vars x with
>             | [[||]] -> "Nil   "
>             | [[|x|]] -> f x
>             | x -> Array.map f x |> String.concat ", " |> sprintf "#(%s)   "
>         let simple x = 
>             match d with
>             | None -> x
>             | Some d ->
>                 match free_vars false d |> SpiralSm.trim with
>                 | "Nil" -> x
>                 | d -> sprintf "let %s = %s" d x
>             |> line s
>         let complex f =
>             match d with
>             | None -> f s : unit
>             | Some d ->
>                 match free_vars false d |> SpiralSm.trim with
>                 | "Nil" -> f s
>                 | d ->
>                     line s (sprintf "let %s =" d)
>                     f (indent s)
>         let layout_vars a =
>             let f i x =
>                 match x with
>                 | WV(L(i',_)) -> sprintf "l%i :  v%i" i i'
>                 | WLit x -> sprintf "l%i :  %s" i (litGleam x)
>             a |> data_term_vars |> Array.mapi f |> String.concat ", "
>         let layout_index i x =
>             x |> Array.map (fun (L(i',_)) -> sprintf "v%i.l%i" i i')
>             |> String.concat ", "
>             |> function "" -> () | x -> simple x
>         let length (a,b) =
>             global' "import gleam/string"
>             sprintf "string.length(%s)" (tup b)
>             |> simple
>         match a with
>         | TyMacro a -> a |> List.map (function CMText x -> x | CMTerm x -> tup x
> | CMType x -> tup_ty x | CMTypeLit x -> type_litGleam x) |> String.concat "" |> 
> simple
>         | TySizeOf t -> simple $"0"
>         | TyIf(cond,tr,fl) ->
>             complex <| fun s ->
>             // line s (sprintf "if %s then" (tup cond))
>             line s (sprintf "case %s {" (tup cond))
>             line (indent s) "True -> {"
>             binds (indent (indent s)) tr
>             line (indent s) "}"
>             line (indent s) "False -> {"
>             match fl with
>             | [[|TyLocalReturnData(DB,_)|]] ->
>                 line (indent s) "Nil"
>             | _ ->
>                 binds (indent (indent s)) fl
>             line (indent s) "}"
>             line s "}"
>         | TyJoinPoint(a,args) -> simple (jp (a, args))
>         | TyBackend(_,_,r) -> raise_codegen_error_backend r "The Gleam backend 
> does not support nesting other backends."
>         | TyWhile(a,b) ->
>             complex <| fun s ->
>             line s (sprintf "while %s {" (jp a))
>             binds (indent s) b
>             line s "}"
>         | TyDo a ->
>             complex <| fun s ->
>             line s "{"
>             binds (indent s) a
>             line s "}"
>         | TyIndent a ->
>             complex <| fun s ->
>             binds (indent s) a
>         | TyIntSwitch(L(i,_),on_succ,on_fail) ->
>             complex <| fun s ->
>             line s (sprintf "case v%i {" i)
>             Array.iteri (fun i x ->
>                 line (indent s) (sprintf "%i -> {" i)
>                 binds (indent (indent s)) x
>                 line (indent s) "}"
>                 ) on_succ
>             line (indent s) "_ -> {"
>             binds (indent (indent s)) on_fail
>             line (indent s) "}"
>         | TyUnionUnbox(is,x,on_succs,on_fail) ->
>             complex <| fun s ->
>             let case_tags = x.Item.tags
>             line s (sprintf "case %s {" (is |> List.map (fun (L(i,_)) -> 
> $"v{i}") |> String.concat ", "))
>             let prefix = 
>                 let x = x.Item
>                 match x.layout with
>                 | UHeap -> sprintf "Uh%i" (uheap x.cases).tag
>                 | UStack -> sprintf "Us%i" (ustack x.cases).tag
>             Map.iter (fun k (a,b) ->
>                 let i = case_tags.[[k]]
>                 let cases = 
>                     a |> List.map (fun a ->
>                         match data_free_vars a with
>                         | [[||]] -> ""
>                         | x -> sprintf "(%s)" (args x)
>                         |> sprintf "%si%i%s" prefix i
>                         )
>                     |> String.concat ", "
>                 line (indent s) (sprintf "%s -> { // %s" cases k)
>                 binds (indent (indent s)) b
>                 line (indent s) "}"
>                 ) on_succs
>             on_fail |> Option.iter (fun b ->
>                 line (indent s) "_ -> {"
>                 binds (indent (indent s)) b
>                 line (indent s) "}"
>                 )
>             line s "}"
>         | TyUnionBox(a,b,c) ->
>             let c = c.Item
>             let i = c.tags.[[a]]
>             let vars =
>                 match data_term_vars b with
>                 | [[||]] -> ""
>                 | x -> Array.map show_w x |> String.concat ", " |> sprintf 
> "(%s)"
>             match c.layout with
>             | UHeap -> sprintf "Uh%ii%i%s" (uheap c.cases).tag i vars
>             | UStack -> sprintf "Us%ii%i%s" (ustack c.cases).tag i vars
>             |> simple
>         | TyToLayout(a,b) -> 
>             let a = layout_vars a
>             match b with
>             | YLayout(_,layout) -> 
>                 match layout with
>                 | Heap -> if a = "" then sprintf "Heap%i()" (heap b).tag else 
> sprintf "Heap%i(%s)" (heap b).tag a
>                 | HeapMutable -> if a = "" then sprintf "Mut%i()" (mut b).tag 
> else sprintf "Mut%i(%s)" (mut b).tag a
>                 | StackMutable -> raise_codegen_error "The F# backend doesn't 
> support stack mutable layout types."
>             | _ -> raise_codegen_error $"Compiler error: Expected a layout type 
> (4).\nGot: %s{show_ty b}"
>             |> simple
>         | TyLayoutIndexAll(L(i,YLayout(_,lay) & a)) -> 
>             match lay with
>             | Heap -> heap a 
>             | HeapMutable -> mut a 
>             | StackMutable -> raise_codegen_error "The F# backend doesn't 
> support indexing into stack mutable layout types."
>             |> fun x -> x.free_vars |> layout_index i
>         | TyLayoutIndexByKey(L(i,YLayout(_,lay) & a),key) -> 
>             match lay with
>             | Heap -> heap a
>             | HeapMutable -> mut a 
>             | StackMutable -> raise_codegen_error "The F# backend doesn't 
> support indexing into stack mutable layout types."
>             |> fun x ->
>                 x.free_vars_by_key
>                 |> Map.tryPick (fun (_, k) v -> if k = key then Some v else 
> None)
>                 |> Option.iter (layout_index i)
>         | TyLayoutIndexAll _ | TyLayoutIndexByKey _ -> raise_codegen_error 
> "Compiler error: Expected the TyV in layout index to be a layout type."
>         | TyLayoutMutableSet(L(i,t),b,c) ->
>             let a = List.fold (fun s k ->
>                 match s with
>                 | DRecord l -> l |> Map.pick (fun (_,k') v -> if k' = k then 
> Some v else None)
>                 | _ -> raise_codegen_error "Compiler error: Expected a record.")
> (mut t).data b
>             let a_vars = data_free_vars a
>             Array.iter2 (fun (L(i',_)) b ->
>                 if a_vars |> Array.length > 1
>                 then line s (sprintf "let v%i = %s(..v%i, l%i: %s)" i (tup_ty t)
> i i' (show_w b))
>                 else line s (sprintf "let v%i = %s(l%i: %s)" i (tup_ty t) i' 
> (show_w b))
>                 ) a_vars (data_term_vars c)
>         | TyArrayLiteral(a,b) -> simple <| sprintf "[[ %s ]]" (List.map tup b |>
> String.concat ", ")
>         | TyArrayCreate(a,b) -> simple "[[]]"
>         | TyArrayLength(a,b) -> length (a,b)
>         | TyStringLength(a,b) -> length (a,b)
>         | TyFailwith(a,b) -> simple (sprintf "panic as %s" (tup b))
>         | TyConv(a,b) ->
>             let b = tup b
>             match a with
>             | YPrim Int8T -> $"{b}"
>             | YPrim Int16T -> $"{b}"
>             | YPrim Int32T -> $"{b}"
>             | YPrim Int64T -> $"{b}"
>             | YPrim UInt8T -> $"{b}"
>             | YPrim UInt16T -> $"{b}"
>             | YPrim UInt32T -> $"{b}"
>             | YPrim UInt64T -> $"{b}"
>             | YPrim Float32T -> $"{b}"
>             | YPrim Float64T -> $"{b}"
>             | _ -> raise_codegen_error $"Compiler error: Unexpected type in 
> Conv. Got: {show_ty a}"
>             |> simple
>         | TyApply(L(i,t),b) ->
>             match tup b with
>             | "Nil " when tup_ty t |> SpiralSm.starts_with "fn(Nil  ) -> " -> 
> $"v{i}(Nil     ) "
>             | "Nil " -> $"v{i} "
>             | b' -> $"v{i}({b'})"
>             |> simple
>         | TyOp(Global, [[DLit (LitString x)]]) -> global' x
>         | TyOp(op,l) ->
>             match op, l with
>             | Dyn,[[a]] -> tup a
>             | TypeToVar, _ -> raise_codegen_error "The use of `` should never 
> appear in generated code."
>             | StringIndex, [[a;b]] ->
>                 global' "import gleam/string"
>                 sprintf "%s |> string.slice(%s, 1)" (tup a) (tup b)
>             | StringSlice, [[a;b;c]] ->
>                 global' "import gleam/string"
>                 sprintf "%s |> string.slice(%s, %s)" (tup a) (tup b) (tup c)
>             | ArrayIndex, [[a;b]] ->
>                 global' "import gary/array"
>                 global' "import gleam/result"
>                 sprintf "%s |> array.get(%s) |> result.unwrap" (tup a) (tup b)
>             | ArrayIndexSet, [[a;b;c]] ->
>                 global' "import gary/array"
>                 global' "import gleam/result"
>                 sprintf "%s |> array.set(%s, %s) |> result.unwrap" (tup a) (tup 
> b) (tup c)
> 
>             // Math
>             | Add, [[a;b]] -> sprintf "%s + %s" (tup a) (tup b)
>             | Sub, [[a;b]] -> sprintf "%s - %s" (tup a) (tup b)
>             | Mult, [[a;b]] -> sprintf "%s * %s" (tup a) (tup b)
>             | Div, [[a;b]] -> sprintf "%s / %s" (tup a) (tup b)
>             | Mod, [[a;b]] -> sprintf "%s %% %s" (tup a) (tup b)
>             | Pow, [[a;b]] -> sprintf "%s ** %s" (tup a) (tup b)
>             | LT, [[a;b]] -> sprintf "%s < %s" (tup a) (tup b)
>             | LTE, [[a;b]] -> sprintf "%s <= %s" (tup a) (tup b)
>             | EQ, [[a;b]] -> sprintf "%s == %s" (tup a) (tup b)
>             | NEQ, [[a;b]] -> sprintf "%s != %s" (tup a) (tup b)
>             | GT, [[a;b]] -> sprintf "%s > %s" (tup a) (tup b)
>             | GTE, [[a;b]] -> sprintf "%s >= %s" (tup a) (tup b)
>             | BoolAnd, [[a;b]] -> sprintf "%s && %s" (tup a) (tup b)
>             | BoolOr, [[a;b]] -> sprintf "%s || %s" (tup a) (tup b)
>             | BitwiseAnd, [[a;b]] -> sprintf "%s &&& %s" (tup a) (tup b)
>             | BitwiseOr, [[a;b]] -> sprintf "%s ||| %s" (tup a) (tup b)
>             | BitwiseXor, [[a;b]] -> sprintf "%s ^^^ %s" (tup a) (tup b)
>             | BitwiseComplement, [[a]] -> sprintf "~~~%s" (tup a)
> 
>             | ShiftLeft, [[a;b]] -> sprintf "%s <<< %s" (tup a) (tup b)
>             | ShiftRight, [[a;b]] -> sprintf "%s >>> %s" (tup a) (tup b)
> 
>             | Neg, [[x]] -> sprintf " -%s" (tup x)
>             | Log, [[x]] -> sprintf "log %s" (tup x)
>             | Exp, [[x]] -> sprintf "exp %s" (tup x)
>             | Tanh, [[x]] -> sprintf "tanh %s" (tup x)
>             | Sqrt, [[x]] -> sprintf "sqrt %s" (tup x)
>             | Sin, [[x]] -> sprintf "sin %s" (tup x)
>             | Cos, [[x]] -> sprintf "cos %s" (tup x)
>             | NanIs, [[x]] -> 
>                 match x with
>                 | DLit(LitFloat32 _) | DV(L(_,YPrim Float32T)) -> sprintf 
> "System.Single.IsNaN(%s)" (tup x)
>                 | DLit(LitFloat64 _) | DV(L(_,YPrim Float64T)) -> sprintf 
> "System.Double.IsNaN(%s)" (tup x)
>                 | _ -> raise_codegen_error "Compiler error: Invalid type in 
> NanIs."
>             | UnionTag, [[DV(L(i,YUnion h))]] -> 
>                 let h = h.Item
>                 let ty =
>                     match h.layout with
>                     | UHeap -> sprintf "Uh%i" (uheap h.cases).tag
>                     | UStack -> sprintf "Us%i" (ustack h.cases).tag
>                 let items =
>                     h.cases
>                     |> Seq.map (fun (KeyValue ((i, _), _)) ->
>                         $"{ty}_{i}, {i}"
>                     )
>                     |> String.concat "; "
>                 $"[[ {items} ]] |> Map |> Map.find v{i}"
>             | _ -> raise_codegen_error <| sprintf "Compiler error: %A with %i 
> args not supported" op l.Length
>             |> simple
>     and heap : _ -> LayoutRecGleam = layout (fun s x ->
>         let b = x.free_vars |> Array.map (fun (L(i,t)) -> sprintf "l%i : %s" i 
> (tyv t)) |> String.concat ", "
>         if b = "" then line s (sprintf "Heap%i { Heap%i() }" x.tag x.tag)
>         else line s (sprintf "Heap%i { Heap%i(%s) }" x.tag x.tag b)
>         )
>     and mut : _ -> LayoutRecGleam = layout (fun s x ->
>         let b = x.free_vars |> Array.map (fun (L(i,t)) -> sprintf "l%i : %s" i 
> (tyv t)) |> String.concat ", "
>         if b = "" then line s (sprintf "Mut%i { Mut%i() }" x.tag x.tag)
>         else line s (sprintf "Mut%i { Mut%i(%s) }" x.tag x.tag b)
>         )
>     and uheap : _ -> UnionRecGleam = union (fun s x ->
>         line s (sprintf "Uh%i {" x.tag)
>         let mutable i = 0
>         x.free_vars |> Map.iter (fun _ a ->
>             match a with
>             | [[||]] -> line (indent s) (sprintf "Uh%ii%i" x.tag i)
>             | a -> line (indent s) (sprintf "Uh%ii%i(%s)" x.tag i (a |> 
> Array.map (fun (L(_,t)) -> tyv t) |> String.concat ", "))
>             i <- i+1
>             )
>         line s "}"
>         )
>     and ustack : _ -> UnionRecGleam = union (fun s x ->
>         line s (sprintf "Us%i {" x.tag)
>         let mutable i = 0
>         x.free_vars |> Map.iter (fun _ a ->
>             match a with
>             | [[||]] -> line (indent s) (sprintf "Us%ii%i" x.tag i)
>             | a -> line (indent s) (sprintf "Us%ii%i(%s)" x.tag i (a |> 
> Array.mapi (fun i' (L(_,t)) -> sprintf "f%ii%i : %s" i i' (tyv t)) |> 
> String.concat ", "))
>             i <- i+1
>             )
>         line s "}"
>         )
>     and method : _ -> MethodRecGleam =
>         jp (fun ((jp_body,key & (C(args,_))),i) ->
>             match (fst env.join_point_method.[[jp_body]]).[[key]] with
>             | Some a, Some range, _ -> {tag=i; free_vars=rdata_free_vars args; 
> range=range; body=a}
>             | _ -> raise_codegen_error "Compiler error: The method dictionary is
> malformed"
>             ) (fun s x ->
>             let range_ty = tup_ty x.range
>             let is_fn = range_ty |> SpiralSm.starts_with "fn(Nil  ) -> "
>             let ret =
>                 if is_fn
>                 then $"{range_ty} {{ fn(_)"
>                 else range_ty
>             line s (sprintf "method%i (%s) -> %s {" x.tag (args_tys x.free_vars)
> ret)
>             binds (indent s) x.body
>             if is_fn
>             then line s "}}"
>             else line s "}"
>             )
>     and closure : _ -> ClosureRecGleam =
>         jp (fun ((jp_body,key & (C(args,_,fun_ty))),i) ->
>             match fun_ty with
>             | YFun(domain,range,FT_Vanilla) ->
>                 match (fst env.join_point_closure.[[jp_body]]).[[key]] with
>                 | Some(domain_args, body) -> {tag=i; free_vars=rdata_free_vars 
> args; domain_args=data_free_vars domain_args; range=range; body=body}
>                 | _ -> raise_codegen_error "Compiler error: The method 
> dictionary is malformed"
>             | YFun(_,_,_) -> raise_codegen_error "Non-standard functions are not
> supported in the F# backend."
>             | _ -> raise_codegen_error "Compiler error: Unexpected type in the 
> closure join point."
>             ) (fun s x ->
>             let domain = 
>                 let domain_args =
>                     if x.domain_args |> Array.length < 1 then
>                         x.domain_args
>                         |> Array.map (fun (L(i,t)) ->
>                             sprintf "v%i :   %s" i (tyv t)
>                         )
>                     else
>                         let t =
>                             x.domain_args
>                             |> Array.map (fun (L(_,t)) -> $"{tyv t}")
>                             |> String.concat ", "
>                         if x.domain_args |> Array.length > 1
>                         then [[| $"x : #(#( {t}))" |]]
>                         else [[| $"x : #( {t})" |]]
>                 match domain_args with
>                 | [[||]] -> ""
>                 | [[|x|]] -> x
>                 | x -> String.concat ", " x
>             let free_vars_tys =
>                 if x.domain_args |> Array.length < 1 then
>                     let t =
>                         x.free_vars
>                         |> Array.map (fun (L(_,t)) -> tup_ty t)
>                         |> String.concat ", "
>                     $"x : #(  {t})"
>                 else args_tys x.free_vars
>             let args =
>                 [[| free_vars_tys; domain |]]
>                 |> Array.filter ((<>) "")
>                 |> String.concat ", "
>             let args' =
>                 if x.domain_args |> Array.length < 0 then
>                     ""
>                 else
>                     let args =
>                         (if x.domain_args |> Array.isEmpty then x.free_vars else
> x.domain_args)
>                         |> Array.map (fun (L(i,_)) -> $"v{i}")
>                         |> String.concat ", "
>                     if x.domain_args |> Array.length > 1
>                     then $"let #(#({args})) = x"
>                     else $"let #({args}) = x"
>             // line s (sprintf "closure%i () -> fn(_) -> %s { fn(%s) { %s" x.tag
> (tup_ty x.range) args args')
>             line s (sprintf "closure%i () -> fn(_) -> fn(Nil) -> %s { fn(%s) { 
> %s\nfn (_) {" x.tag (tup_ty x.range) args args')
>             binds (indent s) x.body
>             line s "}}}"
>             )
> 
>     let main = System.Text.StringBuilder()
>     binds {text=main; indent=0} x
> 
>     let program = System.Text.StringBuilder()
>     env.globals |> Seq.iter (fun (x : string) -> program.AppendLine(x) |> 
> ignore)
>     types |> Seq.iteri (fun i x -> program.Append("pub type ").Append(x) |> 
> ignore)
>     functions |> Seq.iteri (fun i x -> program.Append("pub fn ").Append(x) |> 
> ignore)
>     program.Append($"pub fn main () {{ {main} }}").ToString()
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> ── [ 2.97s - diagnostics ] ─────────────────────────────────────────────────────
> │ input.fsx (372,81)-(372,84) typecheck warning This and other
> recursive references to the object(s) being defined will be checked for 
> initialization-soundness at runtime through the use of a delayed reference. This
> is because you are defining one or more recursive objects, rather than recursive
> functions. This warning may be suppressed by using '#nowarn "40"' or 
> '--nowarn:40'.
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## RefCounting
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> // Here are the reference counting analysis passes.
> open System.Collections.Generic
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### varc_add
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let varc_add x i v =
>     let c = Option.defaultValue 0 (Map.tryFind x v) + i
>     if c = 0 then Map.remove x v else Map.add x c v
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### varc_union
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let varc_union a b = Map.foldBack varc_add a b
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### varc_data
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let varc_data call_data =
>     let mutable v = Map.empty
>     let rec f = function
>         | DPair(a,b) -> f a; f b
>         | DForall(_,a,_,_,_) | DFunction(_,_,a,_,_,_) -> Array.iter f a
>         | DRecord l -> Map.iter (fun _ -> f) l
>         | DV x -> v <- varc_add x 1 v
>         | DExists(_,a) | DUnion(a,_) | DNominal(a,_) -> f a
>         | DLit _ | DTLit _ | DSymbol _ | DB -> ()
>         | DHashSet x -> Seq.iter f x
>         | DHashMap(x,_) -> x |> Seq.iter (fun kv -> f kv.Value)
>     f call_data
>     v
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### varc_set
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let varc_set x i = Set.fold (fun s v -> Map.add v i s) Map.empty x
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### refc_used_vars
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let refc_used_vars (x : TypedBind [[]]) =
>     let g_bind : Dictionary<TypedBind, TyV Set> = 
> Dictionary(HashIdentity.Reference)
>     let fv x = x |> data_free_vars |> Set
>     let jp (x : JoinPointCall) = snd x |> Set
>     let rec binds x =
>         Array.foldBack (fun k vs ->
>             match k with
>             | TyLet(d,_,o) -> vs + op o - fv d
>             | TyLocalReturnOp(_,o,_) -> vs + op o
>             | TyLocalReturnData(d,_) -> vs + fv d
>             |> fun vs -> g_bind.Add(k,vs); vs
>             ) x Set.empty
>     and op (x : TypedOp) : TyV Set =
>         match x with
>         | TySizeOf _ -> Set.empty
>         | TyMacro l -> List.fold (fun s -> function CMTerm d -> s + fv d | _ -> 
> s) Set.empty l
>         | TyArrayLiteral(_,l) | TyOp(_,l) -> List.fold (fun s x -> s + fv x) 
> Set.empty l
>         | TyToLayout(x,_) | TyUnionBox(_,x,_) | TyFailwith(_,x) | TyConv(_,x) | 
> TyArrayCreate(_,x) | TyArrayLength(_,x) | TyStringLength(_,x) -> fv x
>         | TyWhile(cond,body) -> jp cond + binds body
>         | TyDo body | TyIndent body -> binds body
>         | TyLayoutIndexAll(i) | TyLayoutIndexByKey(i,_) -> Set.singleton i
>         | TyApply(i,d) | TyLayoutMutableSet(i,_,d) -> Set.singleton i + fv d
>         | TyJoinPoint x -> jp x
>         | TyBackend(_,_,_) -> Set.empty
>         | TyIf(cond,tr',fl') -> fv cond + binds tr' + binds fl'
>         | TyUnionUnbox(vs,_,on_succs',on_fail') ->
>             let vs = vs |> Set
>             let on_fail = 
>                 match on_fail' with
>                 | Some x -> binds x
>                 | None -> Set.empty
>             Map.fold (fun s k (lets,body) -> 
>                 let lets = List.fold (fun s x -> s + fv x) Set.empty lets
>                 s + (binds body - lets)
>                 ) (vs + on_fail) on_succs'
>         | TyIntSwitch(tag,on_succs',on_fail') ->
>             let vs = Set.singleton tag
>             let on_fail = binds on_fail'
>             Array.fold (fun s body -> s + binds body) (vs + on_fail) on_succs'
>     binds x |> ignore
>     g_bind
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### RefcVars
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type RefcVars = {g_incr : Dictionary<TypedBind,TyV Set>; g_decr : 
> Dictionary<TypedBind,TyV Set>; g_op : Dictionary<TypedBind,Map<TyV, int>>; 
> g_op_decr : Dictionary<TypedBind,TyV Set>}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### refc_prepass
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let refc_prepass (new_vars : TyV Set) (increfed_vars : TyV Set) (x : TypedBind 
> [[]]) =
>     let used_vars = refc_used_vars x
>     let g_incr : Dictionary<TypedBind, TyV Set> = 
> Dictionary(HashIdentity.Reference)
>     let g_decr : Dictionary<TypedBind, TyV Set> = 
> Dictionary(HashIdentity.Reference)
>     let g_op : Dictionary<TypedBind, _> = Dictionary(HashIdentity.Reference)
>     let g_op_decr : Dictionary<TypedBind, TyV Set> = 
> Dictionary(HashIdentity.Reference)
> 
>     let add (d : Dictionary<TypedBind, TyV Set>) k x = if Set.isEmpty x then () 
> else d.Add(k,x)
>     let add' (d : Dictionary<TypedBind, Map<TyV,int>>) k x = if Map.isEmpty x 
> then () else d.Add(k,x)
>     let fv x = x |> data_free_vars |> Set
>     let rec binds (new_vars : TyV Set) (increfed_vars : TyV Set) (k : TypedBind 
> [[]]) =
>         Array.fold (fun (new_vars, increfed_vars) k ->
>             add g_incr k new_vars
>             let increfed_vars = new_vars + increfed_vars
> 
>             let used_vars = used_vars.[[k]]
>             let decref_vars = increfed_vars - used_vars
>             add g_decr k decref_vars
>             let r = increfed_vars - decref_vars
>             match k with
>             | TyLet(d,_,o) ->
>                 op k Set.empty o
>                 let new_vars = fv d
>                 match o with
>                 | TyLayoutIndexAll _ | TyLayoutIndexByKey _ | TyOp(ArrayIndex,_)
> -> new_vars, r
>                 | _ -> Set.empty, r + new_vars
>             | TyLocalReturnOp(_,o,_) -> 
>                 op k r o
>                 Set.empty, r
>             | TyLocalReturnData(d,_) ->
>                 add' g_op k (varc_data d)
>                 add g_op_decr k r
>                 Set.empty, r
>             ) (new_vars, increfed_vars) k
>         |> ignore
>     and op k increfed_vars (x : TypedOp) : unit =
>         let fun_call q = add' g_op k q; add g_op_decr k increfed_vars
>         match x with
>         | TyApply(a,b) -> varc_add a 1 (varc_data b) |> fun_call
>         | TyJoinPoint(_,x) -> Array.fold (fun s x -> varc_add x 1 s) Map.empty x
> |> fun_call
>         | TyArrayLiteral(_,x) -> List.fold (fun s x -> varc_union s (varc_data 
> x)) Map.empty x |> fun_call
>         | TyUnionBox(_,x,_) | TyToLayout(x,_) -> varc_data x |> fun_call
>         | TySizeOf _ | TyLayoutIndexAll _ | TyLayoutIndexByKey _ | TyMacro _ | 
> TyOp _ | TyFailwith _ | TyConv _ 
>         | TyArrayCreate _ | TyArrayLength _ | TyStringLength _ | 
> TyLayoutMutableSet _ | TyBackend _ -> ()
>         | TyWhile(_,body) -> binds Set.empty Set.empty body
>         | TyDo body | TyIndent body -> binds Set.empty Set.empty body
>         | TyIf(_,tr',fl') -> binds Set.empty increfed_vars tr'; binds Set.empty 
> increfed_vars fl'
>         | TyUnionUnbox(_,_,on_succs',on_fail') ->
>             Map.iter (fun _ (lets,body) -> 
>                 binds (List.fold (fun s x -> s + fv x) Set.empty lets) 
> increfed_vars body
>                 ) on_succs'
>             Option.iter (binds Set.empty increfed_vars) on_fail'
>         | TyIntSwitch(_,on_succs',on_fail') ->
>             Array.iter (binds Set.empty increfed_vars) on_succs'
>             binds Set.empty increfed_vars on_fail'
>     binds new_vars increfed_vars x
>     
>     {g_incr=g_incr; g_op=g_op; g_decr=g_decr; g_op_decr=g_op_decr}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## CodegenC
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> module CodegenC =
>     // open System
>     // open System.Text
>     open System.Collections.Generic
> 
>     let sizeof_tyvC = function
>         | YPrim (Int64T | UInt64T | Float64T) -> 8
>         | YPrim (Int32T | UInt32T | Float32T) -> 4
>         | YPrim (Int16T | UInt16T) -> 2
>         | YPrim (Int8T | UInt8T | CharT | BoolT) -> 1
>         | _ -> 8
>     let order_argsC v = v |> Array.sortWith (fun (L(_,t)) (L(_,t')) -> compare 
> (sizeof_tyvC t') (sizeof_tyvC t))
>     let lineC x s = if s <> "" then x.text.Append(' ', x.indent).AppendLine s |>
> ignore
>     let line' x s = line x (String.concat " " s)
> 
>     let rec is_heap f x = 
>         Array.exists (fun (L(i,t)) -> 
>             match t with
>             | YUnion a when a.Item.layout = UStack -> Array.exists (snd >> f >> 
> is_heap f) a.Item.tag_cases
>             | YPrim StringT -> true
>             | YPrim _ -> false
>             | _ -> true
>             ) x
>     let is_stringC = function DV(L(_,YPrim StringT)) | DLit(LitString _) -> true
> | _ -> false
> 
>     type BindsReturnC =
>         | BindsTailEnd
>         | BindsLocal of TyV [[]]
> 
>     let term_vars_to_tysC x = x |> Array.map (function WV(L(_,t)) -> t | WLit x 
> -> YPrim (lit_to_primitive_type x))
>     let binds_last_dataC x = x |> Array.last |> function TyLocalReturnData(x,_) 
> | TyLocalReturnOp(_,_,x) -> x | TyLet _ -> raise_codegen_error "Compiler error: 
> Cannot find the return data of the last bind."
> 
>     type UnionRecC = {tag : int; free_vars : Map<int * string, TyV[[]]>}
>     type LayoutRecC = {tag : int; data : Data; free_vars : TyV[[]]; 
> free_vars_by_key : Map<int * string, TyV[[]]>}
>     type MethodRecC = {tag : int; free_vars : L<Tag,Ty>[[]]; range : Ty; body : 
> TypedBind[[]]; name : string option}
>     type ClosureRecC = {tag : int; free_vars : L<Tag,Ty>[[]]; domain : Ty; 
> domain_args : TyV[[]]; range : Ty; body : TypedBind[[]]}
>     type TupleRecC = {tag : int; tys : Ty [[]]}
>     type ArrayRecC = {tag : int; ty : Ty; tyvs : TyV[[]]}
>     type CFunRecC = {tag : int; domain_args_ty : Ty[[]]; range : Ty}
> 
>     let size_t = UInt32T
> 
>     let lit_stringC x =
>         let strb = System.Text.StringBuilder(String.length x + 2)
>         strb.Append '"' |> ignore
>         String.iter (function
>             | '"' -> strb.Append "\\\"" 
>             | '\b' -> strb.Append @"\b"
>             | '\t' -> strb.Append @"\t"
>             | '\n' -> strb.Append @"\n"
>             | '\r' -> strb.Append @"\r"
>             | '\\' -> strb.Append @"\\"
>             | x -> strb.Append x
>             >> ignore 
>             ) x
>         strb.Append '"' |> ignore
>         strb.ToString()
> 
>     let codegenC (env : PartEvalResult) (x : TypedBind [[]]) =
>         let globals = ResizeArray()
>         let fwd_dcls = ResizeArray()
>         let types = ResizeArray()
>         let functions = ResizeArray()
> 
>         let malloc, free = "malloc", "free"
> 
>         let print_decref s_fun name_fun type_arg name_decref =
>             line s_fun (sprintf "void %s(%s * x){" name_fun type_arg)
>             let _ =
>                 let s_fun = indent s_fun
>                 line s_fun (sprintf "if (x != NULL && --(x->refc) == 0) { %s(x);
> %s(x); }" name_decref free)
>             line s_fun "}"
> 
>         let print show r =
>             let s_typ_fwd = {text=System.Text.StringBuilder(); indent=0}
>             let s_typ = {text=System.Text.StringBuilder(); indent=0}
>             let s_fun = {text=System.Text.StringBuilder(); indent=0}
>             show s_typ_fwd s_typ s_fun r
>             let f (a : _ ResizeArray) (b : CodegenEnv) = 
>                 let text = b.text.ToString()
>                 if text <> "" then a.Add(text)
>             f fwd_dcls s_typ_fwd
>             f types s_typ
>             f functions s_fun
> 
>         let layout show =
>             let dict' = Dictionary(HashIdentity.Structural)
>             let dict = Dictionary(HashIdentity.Reference)
>             let f x : LayoutRecC = 
>                 match x with
>                 | YLayout(x,_) ->
>                     let x = env.ty_to_data x
>                     let a, b =
>                         match x with
>                         | DRecord a -> let a = Map.map (fun _ -> data_free_vars)
> a in a |> Map.toArray |> Array.collect snd, a
>                         | _ -> data_free_vars x, Map.empty
>                     {data=x; free_vars=a; free_vars_by_key=b; tag=dict'.Count}
>                 | _ -> raise_codegen_error $"Compiler error: Expected a layout 
> type (7).\nGot: %s{show_ty x}"
>             fun x ->
>                 let mutable dirty = false
>                 let r = memoize dict (memoize dict' (fun x -> dirty <- true; f 
> x)) x
>                 if dirty then print show r
>                 r
> 
>         let union show =
>             let dict = Dictionary(HashIdentity.Reference)
>             let f (a : Union) : UnionRecC = 
>                 let free_vars = a.Item.cases |> Map.map (fun _ -> env.ty_to_data
> >> data_free_vars)
>                 {free_vars=free_vars; tag=dict.Count}
>             fun x ->
>                 let mutable dirty = false
>                 let r = memoize dict (fun x -> dirty <- true; f x) x
>                 if dirty then print show r
>                 r
> 
>         let jp f show =
>             let dict = Dictionary(HashIdentity.Structural)
>             let f x = f (x, dict.Count)
>             fun x ->
>                 let mutable dirty = false
>                 let r = memoize dict (fun x -> dirty <- true; f x) x
>                 if dirty then print show r
>                 r
> 
>         let tuple show =
>             let dict = Dictionary(HashIdentity.Structural)
>             let f x = {tag=dict.Count; tys=x}
>             fun x ->
>                 let mutable dirty = false
>                 let r = memoize dict (fun x -> dirty <- true; f x) x
>                 if dirty then print show r
>                 r
> 
>         let carray' show =
>             let dict = Dictionary(HashIdentity.Structural)
>             let f x = {tag=dict.Count; ty=x; tyvs = env.ty_to_data x |> 
> data_free_vars}
>             fun x ->
>                 let mutable dirty = false
>                 let r = memoize dict (fun x -> dirty <- true; f x) x
>                 if dirty then print show r
>                 r
> 
>         let cstring' show =
>             let mutable dirty = true
>             fun () ->
>                 if dirty then print show ()
>                 dirty <- false
> 
>         let cfun' show =
>             let dict = Dictionary(HashIdentity.Structural)
>             let f (a : Ty, b : Ty) = {tag=dict.Count; domain_args_ty=a |> 
> env.ty_to_data |> data_free_vars |> Array.map (fun (L(_,t)) -> t); range=b}
>             fun x ->
>                 let mutable dirty = false
>                 let r = memoize dict (fun x -> dirty <- true; f x) x
>                 if dirty then print show r
>                 r
> 
>         let args x = x |> Array.map (fun (L(i,_)) -> sprintf "v%i" i) |> 
> String.concat ", "
> 
>         let tmp =
>             let mutable i = 0u
>             fun () -> let x = i in i <- i + 1u; x
> 
>         let global' =
>             let has_added = HashSet()
>             fun x -> if has_added.Add(x) then globals.Add x
> 
>         let import x = global' $"#include <{x}>"
>         let import' x = global' $"#include \"{x}\""
> 
>         let tyvs_to_tys (x : TyV [[]]) = Array.map (fun (L(i,t)) -> t) x
>         
>         let rec binds_start (args : TyV [[]]) (s : CodegenEnv) (x : TypedBind 
> [[]]) = binds (refc_prepass Set.empty (Set args) x) s BindsTailEnd x
>         and return_local s ret (x : string) = 
>             match ret with
>             | [[||]] -> line s $"{x};"
>             | [[|L(i,_)|]] -> line s $"v{i} = {x};"
>             | ret ->
>                 let tmp_i = tmp()
>                 line s $"{tup_ty_tyvs ret} tmp{tmp_i} = {x};"
>                 Array.mapi (fun i (L(i',_)) -> $"v{i'} = tmp{tmp_i}.v{i};") ret 
> |> line' s
>         and binds (vars : RefcVars) (s : CodegenEnv) (ret : BindsReturnC) (stmts
> : TypedBind [[]]) = 
>             let tup_destruct (a,b) =
>                 Array.map2 (fun (L(i,_)) b -> 
>                     match b with
>                     | WLit b -> $"v{i} = {lit b};"
>                     | WV (L(i',_)) -> $"v{i} = v{i'};"
>                     ) a b
>             Array.iter (fun x ->
>                 // This complicated looking piece of code is responsible for 
> putting the incref and decref statements at the beginning of every
>                 // statement. It's actually the only place where ref counting 
> code is outputted in the codegen.
>                 let _ =
>                     let f k = get_default k x (fun () -> Set.empty)
>                     let f' k = get_default k x (fun () -> Map.empty)
>                     let incr, decr, op, op_decr = varc_set (f vars.g_incr) 1, 
> varc_set (f vars.g_decr) -1, f' vars.g_op, varc_set (f vars.g_op_decr) -1
>                     let incr, decr = varc_union incr decr |> varc_union op |> 
> varc_union op_decr |> Map.partition (fun _ v -> 0 < v)
>                     refc_varc incr |> line' s; refc_varc decr |> line' s
>                 match x with
>                 | TyLet(d,trace,a) ->
>                     try let d = data_free_vars d
>                         let decl_vars = Array.map (fun (L(i,t)) -> $"{tyv t} 
> v{i};") d
>                         match a with
>                         | TyMacro a ->
>                             let m = a |> List.map (function CMText x -> x | 
> CMTerm x -> tup_data x | CMType x -> tup_ty x | CMTypeLit x -> type_lit x) |> 
> String.concat ""
>                             let q = m.Split("\\v")
>                             if q.Length = 1 then 
>                                 decl_vars |> line' s
>                                 return_local s d m 
>                             else
>                                 if d.Length = q.Length-1 then
>                                     let w = 
> System.Text.StringBuilder(m.Length+8)
>                                     let tag (L(i,_)) = i : int
>                                     Array.iteri (fun i v -> 
> w.Append(q.[[i]]).Append('v').Append(tag v) |> ignore) d
>                                     
> w.Append(q.[[d.Length]]).Append(';').ToString() |> line s
>                                 else
>                                     raise_codegen_error "The special \\v macro 
> requires the same number of free vars in its binding as there are \\v in the 
> code."
>                         | _ ->
>                             decl_vars |> line' s
>                             op vars s (BindsLocal d) a
>                     with :? CodegenError as e -> raise_codegen_error' trace 
> (e.Data0, e.Data1)
>                 | TyLocalReturnOp(trace,a,_) ->
>                     try op vars s ret a
>                     with :? CodegenError as e -> raise_codegen_error' trace 
> (e.Data0, e.Data1)
>                 | TyLocalReturnData(d,trace) ->
>                     try match ret with
>                         | BindsLocal l -> line' s (tup_destruct 
> (l,data_term_vars d))
>                         | BindsTailEnd -> line s $"return {tup_data d};"
>                     with :? CodegenError as e -> raise_codegen_error' trace 
> (e.Data0, e.Data1)
>                 ) stmts
>         and refc_change'' (f : int * Ty -> string) count (L(i,t')) =
>             let v = i,t'
>             let inline g decref =
>                 if count = -1 then Some (decref())
>                 elif count = 1 then Some $"{f v}->refc++;"
>                 elif 1 < count then Some $"{f v}->refc += {count};"
>                 else raise_codegen_error $"Compiler error: Invalid count in 
> refc_change''. Got: {count}"
>             match t' with
>             | YUnion t -> 
>                 match t.Item.layout with
>                 | UStack -> 
>                     if count = -1 then Some $"USDecref{(ustack t).tag}(&({f 
> v}));"
>                     elif 0 < count then Some (String.replicate count 
> $"USIncref{(ustack t).tag}(&({f v}));")
>                     else raise_codegen_error $"Compiler error: Invalid count in 
> refc_change''. UStack case. Got: {count}"
>                 | UHeap -> g (fun () -> $"UHDecref{(uheap t).tag}({f v});")
>             | YArray t -> g (fun () -> $"ArrayDecref{(carray t).tag}({f v});")
>             | YFun(a,b,FT_Vanilla) -> g (fun () ->  $"{f v}->decref_fptr({f 
> v});")
>             | YPrim StringT -> g (fun () ->  $"StringDecref({f v});" )
>             | YLayout(_,Heap) as a -> g (fun () ->  $"HeapDecref{(heap 
> a).tag}({f v});")
>             | YLayout(_,HeapMutable) as a -> g (fun () ->  $"MutDecref{(mut 
> a).tag}({f v});")
>             | _ -> None
>         and refc_change' (f : int * Ty -> string) count (x : TyV [[]]) : string 
> [[]] = Array.choose (refc_change'' f count) x
>         and refc_change f c x = refc_change' (fun (i,t) -> f i) c x
>         and refc_varc x = 
>             let ar = ResizeArray(Map.count x)
>             Map.iter (fun k v -> refc_change'' (fun (i,_) -> $"v{i}") v k |> 
> Option.iter ar.Add) x
>             ar
>         //and refc_incr x : string [[]] = refc_change (fun i -> $"v{i}") 1 x
>         //and refc_decr x : string [[]] = refc_change (fun i -> $"v{i}") -1 x
>         and show_w = function WV(L(i,_)) -> sprintf "v%i" i | WLit a -> lit a
>         and args' b = data_term_vars b |> Array.map show_w |> String.concat ", "
>         and tup_term_vars x =
>             let args = Array.map show_w x |> String.concat ", "
>             if 1 < x.Length then sprintf "TupleCreate%i(%s)" (tup 
> (term_vars_to_tysC x)).tag args else args
>         and tup_data x = tup_term_vars (data_term_vars x)
>         and tup_ty_tys = function
>             | [[||]] -> "void"
>             | [[|x|]] -> tyv x
>             | x -> sprintf "Tuple%i" (tup x).tag
>         and tup_ty_tyvs (x : TyV [[]]) = tup_ty_tys (tyvs_to_tys x)
>         and tup_ty x = env.ty_to_data x |> data_free_vars |> tup_ty_tyvs
>         and tyv x =
>             match x with
>             | YUnion a ->
>                 match a.Item.layout with
>                 | UStack -> sprintf "US%i" (ustack a).tag
>                 | UHeap -> sprintf "UH%i *" (uheap a).tag
>             | YLayout(_,lay) as a -> 
>                 match lay with
>                 | Heap -> sprintf "Heap%i *" (heap a).tag
>                 | HeapMutable -> sprintf "Mut%i *" (mut a).tag
>                 | StackMutable -> raise_codegen_error "Compiler error: The C 
> backend doesn't support stack mutable layout types."
>             | YMacro a -> a |> List.map (function Text a -> a | Type a -> tup_ty
> a | TypeLit a -> type_lit a) |> String.concat ""
>             | YPrim a -> prim a
>             | YArray a -> sprintf "Array%i *" (carray a).tag
>             | YFun(a,b,FT_Vanilla) -> sprintf "Fun%i *" (cfun (a,b)).tag
>             | YExists -> raise_codegen_error "Existentials are not supported at 
> runtime. They are a compile time feature only."
>             | YForall -> raise_codegen_error "Foralls are not supported at 
> runtime. They are a compile time feature only."
>             | a -> raise_codegen_error (sprintf "Compiler error: Type not 
> supported in the codegen.\nGot: %A" a)
>         and prim = function
>             | Int8T -> "int8_t" 
>             | Int16T -> "int16_t"
>             | Int32T -> "int32_t"
>             | Int64T -> "int64_t"
>             | UInt8T -> "uint8_t"
>             | UInt16T -> "uint16_t"
>             | UInt32T -> "uint32_t"
>             | UInt64T -> "uint64_t" // are defined in stdint.h
>             | Float32T -> "float"
>             | Float64T -> "double"
>             | BoolT -> "bool" // is defined in stdbool.h
>             | CharT -> "char"
>             | StringT -> cstring(); "String *"
>         and lit = function
>             | LitInt8 x -> sprintf "%i" x
>             | LitInt16 x -> sprintf "%i" x
>             | LitInt32 x -> sprintf "%il" x
>             | LitInt64 x -> sprintf "%ill" x
>             | LitUInt8 x -> sprintf "%iu" x
>             | LitUInt16 x -> sprintf "%iu" x
>             | LitUInt32 x -> sprintf "%iul" x
>             | LitUInt64 x -> sprintf "%iull" x
>             | LitFloat32 x -> 
>                 if x = infinityf then "HUGE_VALF" // nan/inf macros are defined 
> in math.h
>                 elif x = -infinityf then "-HUGE_VALF"
>                 elif System.Single.IsNaN x then "NAN"
>                 else x.ToString("R") |> add_dec_point |> sprintf "%sf"
>             | LitFloat64 x ->
>                 if x = infinity then "HUGE_VAL"
>                 elif x = -infinity then "-HUGE_VAL"
>                 elif System.Double.IsNaN x then "NAN"
>                 else x.ToString("R") |> add_dec_point
>             | LitString x ->
>                 cstring()
>                 lit_stringC x |> sprintf "StringLit(%i, %s)" (x.Length + 1)
>             | LitChar x -> 
>                 match x with
>                 | '\b' -> @"\b"
>                 | '\n' -> @"\n"
>                 | '\t' -> @"\t"
>                 | '\r' -> @"\r"
>                 | '\\' -> @"\\"
>                 | x -> string x
>                 |> sprintf "'%s'"
>             | LitBool x -> if x then "true" else "false" // true and false are 
> defined in stddef.h
>         and type_lit = function
>             | YLit x -> lit x
>             | YSymbol x -> x
>             | YNominal _ | YApply _ as x -> type_lit (env.nominal_apply x)
>             | x -> raise_codegen_error "Compiler error: Expecting a type literal
> in the macro." 
>         and op (vars : RefcVars) s (ret : BindsReturnC) a =
>             let binds a b = binds vars a b
>             let return' (x : string) =
>                 match ret with
>                 | BindsLocal ret -> return_local s ret x
>                 | BindsTailEnd -> line s $"return {x};"
>             let layout_index (x'_i : int) (x' : TyV [[]]) =
>                 match ret with
>                 | BindsLocal x -> Array.map2 (fun (L(i,_)) (L(i',_)) -> $"v{i} =
> v{x'_i}->v{i'};") x x' |> line' s
>                 | BindsTailEnd -> raise_codegen_error "Compiler error: Layout 
> index should never come in end position."
>             let jp (a,b') =
>                 let args = args b'
>                 match a with
>                 | JPMethod(a,b) -> 
>                     let x = method (a,b)
>                     sprintf "%s%i(%s)" (Option.defaultValue "method" x.name) 
> x.tag args
>                 | JPClosure(a,b) -> sprintf "ClosureCreate%i(%s)" (closure 
> (a,b)).tag args
>             let string_in_op = function DLit (LitString b) -> lit_stringC b | b 
> -> $"{tup_data b}->ptr"
>             match a with
>             | TySizeOf t -> return' $"sizeof({tup_ty t})"
>             | TyMacro _ -> raise_codegen_error "Macros are supposed to be taken 
> care of in the `binds` function."
>             | TyIf(cond,tr,fl) ->
>                 line s (sprintf "if (%s){" (tup_data cond))
>                 binds (indent s) ret tr
>                 line s "} else {"
>                 binds (indent s) ret fl
>                 line s "}"
>             | TyJoinPoint(a,args) -> return' (jp (a, args))
>             | TyBackend(_,_,r) -> raise_codegen_error_backend r "The C backend 
> does not support nesting of other backends."
>             | TyWhile(a,b) ->
>                 let cond =
>                     match a with
>                     | JPMethod(a,b),b' -> sprintf "method_while%i(%s)" 
> (method_while (a,b)).tag (args b')
>                     | _ -> raise_codegen_error "Expected a regular method rather
> than closure create in the while conditional."
>                 line s (sprintf "while (%s){" cond)
>                 binds (indent s) (BindsLocal [[||]]) b
>                 line s "}"
>             | TyDo a | TyIndent a ->
>                 binds s ret a
>             | TyIntSwitch(L(v_i,_),on_succ,on_fail) ->
>                 line s (sprintf "switch (v%i) {" v_i)
>                 let _ =
>                     let s = indent s
>                     Array.iteri (fun i x ->
>                         line s (sprintf "case %i: {" i)
>                         binds (indent s) ret x
>                         line (indent s) "break;"
>                         line s "}"
>                         ) on_succ
>                     line s "default: {"
>                     binds (indent s) ret on_fail
>                     line s "}"
>                 line s "}"
>             | TyUnionUnbox(is,x,on_succs,on_fail) ->
>                 let case_tags = x.Item.tags
>                 let acs = match x.Item.layout with UHeap -> "->" | UStack -> "."
>                 let head = List.head is |> fun (L(i,_)) -> $"v{i}{acs}tag"
>                 List.pairwise is
>                 |> List.map (fun (L(i,_), L(i',_)) -> $"v{i}{acs}tag == 
> v{i'}{acs}tag")
>                 |> String.concat " && "
>                 |> function "" -> head | x -> $"{x} ? {head} : -1"
>                 |> sprintf "switch (%s) {" |> line s
>                 let _ =
>                     let s = indent s
>                     Map.iter (fun k (a,b) ->
>                         let union_i = case_tags.[[k]]
>                         let decr = get_default vars.g_decr (Array.head b) (fun 
> () -> Set.empty)
>                         line s (sprintf "case %i: { // %s" union_i k)
>                         List.iter2 (fun (L(data_i,_)) a ->
>                             let a, s = data_free_vars a, indent s
>                             let qs = ResizeArray(a.Length)
>                             Array.iteri (fun field_i (L(v_i,t) as v) -> 
>                                 if Set.contains v decr = false then qs.Add 
> $"{tyv t} v{v_i} = v{data_i}{acs}case{union_i}.v{field_i};"
>                                 ) a 
>                             line' s qs
>                             ) is a
>                         binds (indent s) ret b
>                         line (indent s) "break;"
>                         line s "}"
>                         ) on_succs
>                     on_fail |> Option.iter (fun b ->
>                         line s "default: {"
>                         binds (indent s) ret b
>                         line s "}"
>                         )
>                 line s "}"
>             | TyUnionBox(a,b,c') ->
>                 let c = c'.Item
>                 let i = c.tags.[[a]]
>                 let vars = args' b
>                 match c.layout with
>                 | UHeap -> sprintf "UH%i_%i(%s)" (uheap c').tag i vars
>                 | UStack -> sprintf "US%i_%i(%s)" (ustack c').tag i vars
>                 |> return'
>             | TyToLayout(a,b) -> 
>                 match b with
>                 | YLayout(_,layout) -> 
>                     match layout with
>                     | Heap -> sprintf "HeapCreate%i(%s)" (heap b).tag (args' a)
>                     | HeapMutable -> sprintf "MutCreate%i(%s)" (mut b).tag 
> (args' a)
>                     | StackMutable -> raise_codegen_error "The C backend doesn't
> support stack mutable layout types."
>                 | _ -> raise_codegen_error $"Compiler error: Expected a layout 
> type (8).\nGot: %s{show_ty b}"
>                 |> return'
>             | TyLayoutIndexAll(L(i,YLayout(_,lay) & a)) ->
>                 match lay with
>                 | Heap -> heap a 
>                 | HeapMutable -> mut a
>                 | StackMutable -> raise_codegen_error "The C backend doesn't 
> support indexing into stack mutable layout types."
>                 |> fun x -> x.free_vars |> layout_index i 
>             | TyLayoutIndexByKey(L(i,YLayout(_,lay) & a),key) ->
>                 match lay with
>                 | Heap -> heap a 
>                 | HeapMutable -> mut a
>                 | StackMutable -> raise_codegen_error "The C backend doesn't 
> support indexing into stack mutable layout types."
>                 |> fun x ->
>                     x.free_vars_by_key
>                     |> Map.tryPick (fun (_, k) v -> if k = key then Some v else 
> None)
>                     |> Option.iter (layout_index i)
>             | TyLayoutIndexAll _ | TyLayoutIndexByKey _ -> raise_codegen_error 
> "Compiler error: Expected the TyV in layout index to be a layout type."
>             | TyLayoutMutableSet(L(i,t),b,c) ->
>                 let q = mut t // `mut t` is correct here, peval strips the 
> YLayout.
>                 let a = List.fold (fun s k ->
>                     match s with
>                     | DRecord l -> l |> Map.pick (fun (_,k') v -> if k' = k then
> Some v else None)
>                     | _ -> raise_codegen_error "Compiler error: Expected a 
> record.") q.data b 
>                 Array.map2 (fun (L(i',_)) b -> $"&(v{i}->v{i'}), {show_w b}") 
> (data_free_vars a) (data_term_vars c) |> String.concat ", " 
>                 |> sprintf "AssignMut%i(%s)" (assign_mut (tyvs_to_tys 
> q.free_vars)).tag |> return'
>             | TyArrayLiteral(a,b') ->
>                 let b = List.map tup_data b' |> String.concat "," |> sprintf 
> "{%s}"
>                 $"ArrayLit{(carray a).tag}({b'.Length}, ({tup_ty a} [[]]){b})" 
> |> return'
>             | TyArrayCreate(a,b) -> 
>                 let a = carray a
>                 let is_heap : string = is_heap (env.ty_to_data >> 
> data_free_vars) a.tyvs |> sprintf "%b"
>                 $"ArrayCreate{a.tag}({tup_data b}, {is_heap})" |> return'
>             | TyFailwith(a,b) -> 
>                 let fmt = @"%s\n"
>                 line s $"fprintf(stderr, \"{fmt}\", {string_in_op b});"
>                 line s "exit(EXIT_FAILURE);" // TODO: Print out the error traces
> as well.
>             | TyConv(a,b) -> return' $"({tyv a}){tup_data b}"
>             | TyApply(L(i,_),b) -> 
>                 match args' b with
>                 | "" -> $"v{i}->fptr(v{i})"
>                 | b -> $"v{i}->fptr(v{i}, {b})"
>                 |> return'
>             | TyArrayLength(_,b) -> return' $"{tup_data b}->len"
>             | TyStringLength(_,b) -> return' $"{tup_data b}->len-1"
>             | TyOp(Global,[[DLit (LitString x)]]) -> global' x
>             | TyOp(op,l) ->
>                 let float_suffix = function
>                     | DV(L(_,YPrim Float32T)) | DLit(LitFloat32 _) -> "f"
>                     | _ -> ""
>                 match op, l with
>                 | Dyn,[[a]] -> tup_data a
>                 | TypeToVar, _ -> raise_codegen_error "The use of `` should 
> never appear in generated code."
>                 | StringIndex, [[a;b]] -> sprintf "%s->ptr[[%s]]" (tup_data a) 
> (tup_data b)
>                 | StringSlice, [[a;b;c]] -> raise_codegen_error "String slice is
> not supported natively in the C backend. Use a library implementation instead."
>                 | ArrayIndex, [[DV(L(_,YArray t)) & a;b]] -> 
>                     match tup_ty t with
>                     | "void" -> "/* void array index */"
>                     | _ -> sprintf "%s->ptr[[%s]]" (tup_data a) (tup_data b)
>                 | ArrayIndexSet, [[DV(L(_,YArray t)) as a;b;c]] -> 
>                     let a',b',c' = tup_data a, tup_data b, tup_data c
>                     match c' with
>                     | "" -> "/* void array set */"
>                     | _ -> $"AssignArray{(assign_array (tyvs_to_tys (carray 
> t).tyvs)).tag}(&({a'}->ptr[[{b'}]]), {c'})"
>                 // Math
>                 | Add, [[a;b]] -> sprintf "%s + %s" (tup_data a) (tup_data b)
>                 | Sub, [[a;b]] -> sprintf "%s - %s" (tup_data a) (tup_data b)
>                 | Mult, [[a;b]] -> sprintf "%s * %s" (tup_data a) (tup_data b)
>                 | Div, [[a;b]] -> sprintf "%s / %s" (tup_data a) (tup_data b)
>                 | Mod, [[a;b]] -> sprintf "%s %% %s" (tup_data a) (tup_data b)
>                 | Pow, [[a;b]] -> sprintf "pow%s(%s,%s)" (float_suffix a) 
> (tup_data a) (tup_data b)
>                 | LT, [[a;b]] -> sprintf "%s < %s" (tup_data a) (tup_data b)
>                 | LTE, [[a;b]] -> sprintf "%s <= %s" (tup_data a) (tup_data b)
>                 | EQ, [[a;b]] when is_stringC a -> import "string.h"; sprintf 
> "strcmp(%s->ptr, %s->ptr) == 0" (string_in_op a) (string_in_op b) // TODO: 
> Optimize string structural comparison in the real_core
>                 | NEQ, [[a;b]] when is_stringC a -> import "string.h"; sprintf 
> "strcmp(%s->ptr, %s->ptr) != 0" (string_in_op a) (string_in_op b)
>                 | GT, [[a;b]] when is_stringC a -> import "string.h"; sprintf 
> "strcmp(%s->ptr, %s->ptr) > 0" (string_in_op a) (string_in_op b)
>                 | GTE, [[a;b]] when is_stringC a -> import "string.h"; sprintf 
> "strcmp(%s->ptr, %s->ptr) >= 0" (string_in_op a) (string_in_op b)
>                 | EQ, [[a;b]] -> sprintf "%s == %s" (tup_data a) (tup_data b)
>                 | NEQ, [[a;b]] -> sprintf "%s != %s" (tup_data a) (tup_data b)
>                 | GT, [[a;b]] -> sprintf "%s > %s" (tup_data a) (tup_data b)
>                 | GTE, [[a;b]] -> sprintf "%s >= %s" (tup_data a) (tup_data b)
>                 | BoolAnd, [[a;b]] -> sprintf "%s && %s" (tup_data a) (tup_data 
> b)
>                 | BoolOr, [[a;b]] -> sprintf "%s || %s" (tup_data a) (tup_data 
> b)
>                 | BitwiseAnd, [[a;b]] -> sprintf "%s & %s" (tup_data a) 
> (tup_data b)
>                 | BitwiseOr, [[a;b]] -> sprintf "%s | %s" (tup_data a) (tup_data
> b)
>                 | BitwiseXor, [[a;b]] -> sprintf "%s ^ %s" (tup_data a) 
> (tup_data b)
>                 | BitwiseComplement, [[a]] -> sprintf "~%s" (tup_data a)
> 
>                 | ShiftLeft, [[a;b]] -> sprintf "%s << %s" (tup_data a) 
> (tup_data b)
>                 | ShiftRight, [[a;b]] -> sprintf "%s >> %s" (tup_data a) 
> (tup_data b)
> 
>                 | Neg, [[x]] -> sprintf "-%s" (tup_data x)
>                 | Log, [[x]] -> import "math.h"; sprintf "log%s(%s)" 
> (float_suffix x) (tup_data x)
>                 | Exp, [[x]] -> import "math.h"; sprintf "exp%s(%s)" 
> (float_suffix x) (tup_data x)
>                 | Tanh, [[x]] -> import "math.h"; sprintf "tanh%s(%s)" 
> (float_suffix x) (tup_data x)
>                 | Sqrt, [[x]] -> import "math.h"; sprintf "sqrt%s(%s)" 
> (float_suffix x) (tup_data x)
>                 | NanIs, [[x]] -> import "math.h"; sprintf "isnan(%s)" (tup_data
> x)
>                 | UnionTag, [[DV(L(i,YUnion l)) as x]] -> 
>                     match l.Item.layout with
>                     | UHeap -> "->tag"
>                     | UStack -> ".tag"
>                     |> sprintf "v%i%s" i
>                 | _ -> raise_codegen_error <| sprintf "Compiler error: %A with 
> %i args not supported" op l.Length
>                 |> return'
>         and print_ordered_args s v = // Unlike C# for example, C keeps the 
> struct fields in input order. To reduce padding, it is best to order the fields 
> from largest to smallest.
>             order_argsC v |> Array.iter (fun (L(i,x)) -> line s $"{tyv x} 
> v{i};")
>         and method_templ is_while fun_name : _ -> MethodRecC =
>             jp (fun ((jp_body,key & (C(args,_))),i) ->
>                 match (fst env.join_point_method.[[jp_body]]).[[key]] with
>                 | Some a, Some range, name -> {tag=i; free_vars=rdata_free_vars 
> args; range=range; body=a; name=name}
>                 | _ -> raise_codegen_error "Compiler error: The method 
> dictionary is malformed"
>                 ) (fun _ s_typ s_fun x ->
>                 let ret_ty = tup_ty x.range
>                 let args = x.free_vars |> Array.mapi (fun i (L(_,x)) -> $"{tyv 
> x} v{i}") |> String.concat ", "
>                 let fun_name = Option.defaultValue fun_name x.name
>                 line s_fun (sprintf "%s %s%i(%s){" ret_ty fun_name x.tag args)
>                 binds_start (if is_while then [[||]] else x.free_vars) (indent 
> s_fun) x.body
>                 line s_fun "}"
>                 )
>         and method_while : _ -> MethodRecC = method_templ true "method_while"
>         and method : _ -> MethodRecC = method_templ false "method"
>         and closure : _ -> ClosureRecC =
>             jp (fun ((jp_body,key & (C(args,_,fun_ty))),i) ->
>                 match fun_ty with
>                 | YFun(domain,range,FT_Vanilla) ->
>                     match (fst env.join_point_closure.[[jp_body]]).[[key]] with
>                     | Some(domain_args, body) -> {tag=i; 
> free_vars=rdata_free_vars args; domain=domain; domain_args=data_free_vars 
> domain_args; range=range; body=body}
>                     | _ -> raise_codegen_error "Compiler error: The method 
> dictionary is malformed"
>                 | YFun(_,_,_)-> raise_codegen_error "Non-standard functions are 
> not supported in the C backend."
>                 | _ -> raise_codegen_error "Compiler error: Unexpected type in 
> the closure join point."
>                 ) (fun _ s_typ s_fun x ->
>                 let i, range = x.tag, tup_ty x.range
>                 line s_typ (sprintf "typedef struct Closure%i Closure%i;" i i)
>                 line s_typ (sprintf "struct Closure%i {" i)
>                 let _ =
>                     let s_typ = indent s_typ
>                     line s_typ $"int refc;"
>                     line s_typ $"void (*decref_fptr)(Closure{i} *);"
>                     match x.domain_args |> Array.map (fun (L(_,t)) -> tyv t) |> 
> String.concat ", " with
>                     | "" -> $"{range} (*fptr)(Closure{i} *);"
>                     | domain_args_ty -> $"{range} (*fptr)(Closure{i} *, 
> {domain_args_ty});"
>                     |> line s_typ
>                     print_ordered_args s_typ x.free_vars
>                 line s_typ "};"
> 
>                 line s_fun (sprintf "static inline void 
> ClosureDecrefBody%i(Closure%i * x){" i i)
>                 let _ =
>                     let s_fun = indent s_fun
>                     x.free_vars |> refc_change (fun i -> $"x->v{i}") -1 |> line'
> s_fun
>                 line s_fun "}"
> 
>                 print_decref s_fun $"ClosureDecref{i}" $"Closure{i}" 
> $"ClosureDecrefBody{i}"
>                 
>                 match x.domain_args |> Array.map (fun (L(i,t)) -> $"{tyv t} 
> v{i}") |> String.concat ", " with
>                 | "" -> sprintf "%s ClosureMethod%i(Closure%i * x){" range i i
>                 | domain_args -> sprintf "%s ClosureMethod%i(Closure%i * x, 
> %s){" range i i domain_args
>                 |> line s_fun
>                 let _ =
>                     let s_fun = indent s_fun
>                     x.free_vars |> Array.map (fun (L(i,t)) -> $"{tyv t} v{i} = 
> x->v{i};") |> line' s_fun
>                     line s_fun $"ClosureDecref{i}(x);"
>                     binds_start x.domain_args s_fun x.body
>                 line s_fun "}"
> 
>                 let fun_tag = (cfun (x.domain,x.range)).tag
>                 let free_vars = x.free_vars |> Array.map (fun (L(i,t)) -> $"{tyv
> t} v{i}")
>                 line s_fun (sprintf "Fun%i * ClosureCreate%i(%s){" fun_tag i 
> (String.concat ", " free_vars))
>                 let _ =
>                     let s_fun = indent s_fun
>                     line s_fun $"Closure{i} * x = {malloc}(sizeof(Closure{i}));"
>                     line s_fun "x->refc = 1;"
>                     line s_fun $"x->decref_fptr = ClosureDecref{i};"
>                     line s_fun $"x->fptr = ClosureMethod{i};"
>                     x.free_vars |> Array.map (fun (L(i,_)) -> $"x->v{i} = 
> v{i};")  |> line' s_fun
>                     line s_fun $"return (Fun{fun_tag} *) x;"
>                 line s_fun "}"
>                 )
>         and cfun : _ -> CFunRecC =
>             cfun' (fun _ s_typ s_fun x ->
>                 let i, range = x.tag, tup_ty x.range
>                 line s_typ $"typedef struct Fun{i} Fun{i};"
>                 line s_typ (sprintf "struct Fun%i{" i)
>                 let _ =
>                     let s_typ = indent s_typ
>                     line s_typ $"int refc;"
>                     line s_typ $"void (*decref_fptr)(Fun{i} *);"
>                     match x.domain_args_ty |> Array.map tyv |> String.concat ", 
> " with
>                     | "" -> $"{range} (*fptr)(Fun{i} *);"
>                     | domain_args_ty -> $"{range} (*fptr)(Fun{i} *, 
> {domain_args_ty});"
>                     |> line s_typ
>                 line s_typ "};"
>                 )
>         and tup : _ -> TupleRecC =
>             tuple (fun _ s_typ s_fun x ->
>                 let name = sprintf "Tuple%i" x.tag
>                 line s_typ "typedef struct {"
>                 x.tys |> Array.mapi (fun i x -> L(i,x)) |> print_ordered_args 
> (indent s_typ)
>                 line s_typ (sprintf "} %s;" name)
> 
>                 let args = x.tys |> Array.mapi (fun i x -> $"{tyv x} v{i}")
>                 line s_fun (sprintf "static inline %s TupleCreate%i(%s){" name 
> x.tag (String.concat ", " args))
>                 let _ =
>                     let s_fun = indent s_fun
>                     line s_fun $"{name} x;"
>                     Array.init args.Length (fun i -> $"x.v{i} = v{i};") |> line'
> s_fun
>                     line s_fun $"return x;"
>                 line s_fun "}"
>                 )
>         and assign_mut : _ -> TupleRecC = 
>             tuple (fun _ s_typ s_fun x ->
>                 let tyvs = Array.mapi (fun i t -> L(i,t)) x.tys
>                 let args = Array.mapi (fun i t -> let t = tyv t in $"{t} * a{i},
> {t} b{i}") x.tys |> String.concat ", "
>                 line s_fun (sprintf "static inline void AssignMut%i(%s){" x.tag 
> args)
>                 let _ =
>                     let s_fun = indent s_fun
>                     refc_change (fun i -> $"b{i}") 1 tyvs |> line' s_fun
>                     refc_change (fun i -> $"*a{i}") -1 tyvs |> line' s_fun
>                     Array.init tyvs.Length (fun i -> $"*a{i} = b{i};") |> line' 
> s_fun
>                 line s_fun "}"
>                 )
>         and assign_array : _ -> TupleRecC = 
>             tuple (fun _ s_typ s_fun x ->
>                 let tyvs, T = Array.mapi (fun i t -> L(i,t)) x.tys, tup_ty_tys 
> x.tys
>                 line s_fun (sprintf "static inline void AssignArray%i(%s * a, %s
> b){" x.tag T T)
>                 let _ =
>                     let s_fun = indent s_fun
>                     match tyvs with
>                     | [[||]] -> raise_codegen_error "Compiler error: Void types 
> not allowed in assign."
>                     | [[|t|]] -> 
>                         refc_change (fun i -> "b") 1 tyvs |> line' s_fun
>                         refc_change (fun i -> "*a") -1 tyvs |> line' s_fun
>                         $"*a = b;" |> line s_fun
>                     | _ ->
>                         refc_change (fun i -> $"b.v{i}") 1 tyvs |> line' s_fun
>                         refc_change (fun i -> $"a->v{i}") -1 tyvs |> line' s_fun
>                         $"*a = b;" |> line s_fun
>                 line s_fun "}"
>                 )
>         and layout_tmpl name : _ -> LayoutRecC =
>             layout (fun _ s_typ s_fun (x : LayoutRecC) ->
>                 let i = x.tag
>                 let name' = sprintf "%s%i" name i
> 
>                 line s_typ "typedef struct {"
>                 let _ =
>                     let s_typ = indent s_typ
>                     line s_typ "int refc;"
>                     print_ordered_args s_typ x.free_vars
>                 line s_typ (sprintf "} %s;" name')
> 
>                 line s_fun (sprintf "static inline void %sDecrefBody%i(%s * x){"
> name i name')
>                 let _ =
>                     let s_fun = indent s_fun
>                     x.free_vars |> refc_change (fun i -> $"x->v{i}") -1 |> line'
> s_fun
>                 line s_fun "}"
> 
>                 print_decref s_fun $"{name}Decref{i}" name' 
> $"{name}DecrefBody{i}"
> 
>                 let args = x.free_vars |> Array.map (fun (L(i,x)) -> $"{tyv x} 
> v{i}")
>                 line s_fun (sprintf "%s * %sCreate%i(%s){" name' name i 
> (String.concat ", " args))
>                 let _ =
>                     let s_fun = indent s_fun
>                     line s_fun $"{name'} * x = {malloc}(sizeof({name'}));"
>                     line s_fun "x->refc = 1;"
>                     Array.init args.Length (fun i -> $"x->v{i} = v{i};") |> 
> line' s_fun
>                     line s_fun $"return x;"
>                 line s_fun "}"
>                 )
>         and heap : _ -> LayoutRecC = layout_tmpl "Heap"
>         and mut : _ -> LayoutRecC = layout_tmpl "Mut"
>         and union_tmpl is_stack : Union -> UnionRecC = 
>             let inline map_iteri f x = Map.fold (fun i k v -> f i k v; i+1) 0 x 
> |> ignore
>             union (fun s_fwd s_typ s_fun x ->
>                 let i = x.tag
>                 match is_stack with
>                 | true  -> line s_typ "typedef struct {"
>                 | false -> 
>                     line s_fwd (sprintf "typedef struct UH%i UH%i;" i i)
>                     line s_typ (sprintf "struct UH%i {" i)
>                 let _ =
>                     let s_typ = indent s_typ
>                     match is_stack with
>                     | true -> ()
>                     | false -> line s_typ "int refc;"
>                     line s_typ "int tag;"
>                     line s_typ "union {"
>                     let _ =
>                         let s_typ = indent s_typ
>                         map_iteri (fun tag (_, k) v -> 
>                             if Array.isEmpty v = false then
>                                 line s_typ "struct {"
>                                 print_ordered_args (indent s_typ) v
>                                 line s_typ (sprintf "} case%i; // %s" tag k)
>                             ) x.free_vars
>                     line s_typ "};"
>                 match is_stack with
>                 | true  -> line s_typ (sprintf "} US%i;" i)
>                 | false -> line s_typ "};"
> 
>                 let print_refc name typ q =
>                     line s_fun (sprintf "static inline void %s(%s * x){" name 
> typ)
>                     let _ =
>                         let s_fun = indent s_fun
>                         line s_fun "switch (x->tag) {"
>                         map_iteri (fun tag k v -> 
>                             let s_fun = indent s_fun
>                             let refc = v |> refc_change (fun i -> 
> $"x->case{tag}.v{i}") q
>                             if refc.Length <> 0 then
>                                 line s_fun (sprintf "case %i: {" tag)
>                                 let _ =
>                                     let s_fun = indent s_fun
>                                     refc |> line' s_fun
>                                     line s_fun "break;"
>                                 line s_fun "}"
>                             ) x.free_vars
>                         line s_fun "}"
>                     line s_fun "}"
> 
>                 match is_stack with
>                 | true  -> 
>                     print_refc $"USIncrefBody{i}" $"US{i}" 1
>                     print_refc $"USDecrefBody{i}" $"US{i}" -1
>                 | false -> print_refc $"UHDecrefBody{i}" $"UH{i}" -1
> 
>                 match is_stack with
>                 | true  -> 
>                     line s_fun (sprintf "void USIncref%i(US%i * x){ 
> USIncrefBody%i(x); }" i i i)
>                     line s_fun (sprintf "void USDecref%i(US%i * x){ 
> USDecrefBody%i(x); }" i i i)
>                 | false -> 
>                     line s_fwd (sprintf "void UHDecref%i(UH%i * x);" i i)
>                     print_decref s_fun $"UHDecref{i}" $"UH{i}" 
> $"UHDecrefBody{i}"
>                 
>                 map_iteri (fun tag (_, k) v -> 
>                     let args = v |> Array.map (fun (L(i,t)) -> $"{tyv t} v{i}") 
> |> String.concat ", "
>                     if is_stack then
>                         line s_fun (sprintf "US%i US%i_%i(%s) { // %s" i i tag 
> args k)
>                         let _ =
>                             let s_fun = indent s_fun
>                             line s_fun $"US{i} x;"
>                             line s_fun $"x.tag = {tag};"
>                             if v.Length <> 0 then
>                                 v |> Array.map (fun (L(i,t)) -> 
> $"x.case{tag}.v{i} = v{i};") |> line' s_fun
>                             line s_fun "return x;"
>                         line s_fun "}"
>                     else
>                         line s_fun (sprintf "UH%i * UH%i_%i(%s) { // %s" i i tag
> args k)
>                         let _ =
>                             let s_fun = indent s_fun
>                             line s_fun $"UH{i} * x = {malloc}(sizeof(UH{i}));"
>                             line s_fun $"x->tag = {tag};"
>                             line s_fun "x->refc = 1;"
>                             if v.Length <> 0 then
>                                 v |> Array.map (fun (L(i,t)) -> 
> $"x->case{tag}.v{i} = v{i};") |> line' s_fun
>                             line s_fun $"return x;"
>                         line s_fun "}"
>                     ) x.free_vars
>                 )
>         and ustack : _ -> UnionRecC = union_tmpl true
>         and uheap : _ -> UnionRecC = union_tmpl false
>         and carray : _ -> ArrayRecC =
>             carray' (fun _ s_typ s_fun x ->
>                 let i, len_t, ptr_t = x.tag, prim size_t, tup_ty_tyvs x.tyvs
>                 line s_typ "typedef struct {"
>                 let _ =
>                     let s_typ = indent s_typ
>                     line s_typ "int refc;"
>                     line s_typ $"{len_t} len;"
>                     if ptr_t <> "void" then line s_typ $"{ptr_t} ptr[[]];" // 
> flexible array member
>                 line s_typ (sprintf "} Array%i;" i)
> 
> 
>                 let print_body p s_fun q =
>                     let refcs = x.tyvs |> refc_change (fun i -> if 1 < 
> x.tyvs.Length then $"v.v{i}" else "v") q
>                     if refcs.Length <> 0 then
>                         p()
>                         line s_fun (sprintf "for (%s i=0; i < len; i++){" len_t)
>                         let _ =
>                             let s_fun = indent s_fun
>                             line s_fun $"{ptr_t} v = ptr[[i]];"
>                             refcs |> line' s_fun
>                         line s_fun "}"
> 
>                 line s_fun (sprintf "static inline void 
> ArrayDecrefBody%i(Array%i * x){" i i)
>                 let _ =
>                     let s_fun = indent s_fun
>                     print_body (fun () ->
>                         line s_fun $"{len_t} len = x->len;"
>                         line s_fun $"{ptr_t} * ptr = x->ptr;"
>                         ) s_fun -1
>                 line s_fun "}"
> 
>                 print_decref s_fun $"ArrayDecref{i}" $"Array{i}" 
> $"ArrayDecrefBody{i}"
>                 
>                 line s_fun (sprintf "Array%i * ArrayCreate%i(%s len, bool 
> init_at_zero){" i i len_t)
>                 let _ =
>                     let s_fun = indent s_fun
>                     match ptr_t with
>                     | "void" -> line s_fun $"{len_t} size = sizeof(Array{i});"
>                     | _ -> line s_fun $"{len_t} size = sizeof(Array{i}) + 
> sizeof({ptr_t}) * len;"
>                     line s_fun $"Array{i} * x = {malloc}(size);"
>                     line s_fun "if (init_at_zero) { memset(x,0,size); }"
>                     line s_fun "x->refc = 1;"
>                     line s_fun "x->len = len;"
>                     line s_fun "return x;"
>                 line s_fun "}"
> 
>                 line s_fun (sprintf "Array%i * ArrayLit%i(%s len, %s * ptr){" i 
> i len_t ptr_t)
>                 let _ =
>                     let s_fun = indent s_fun
>                     line s_fun $"Array{i} * x = ArrayCreate{i}(len, false);"
>                     if ptr_t <> "void" then 
>                         line s_fun $"memcpy(x->ptr, ptr, sizeof({ptr_t}) * 
> len);"
>                         print_body (fun () -> ()) (indent s_fun) 1
>                     line s_fun "return x;"
>                 line s_fun "}"
>                 )
>         and cstring : unit -> unit =
>             cstring' (fun _ s_typ s_fun () ->
>                 let char = YPrim CharT
>                 let size_t, ptr_t, tag = prim size_t, tyv char, (carray 
> char).tag
>                 line s_typ $"typedef Array{tag} String;"
> 
>                 line s_fun "static inline void StringDecref(String * x){"
>                 line (indent s_fun) $"return ArrayDecref{tag}(x);"
>                 line s_fun "}"
> 
>                 line s_fun (sprintf "static inline String * StringLit(%s len, %s
> * ptr){" size_t ptr_t)
>                 line (indent s_fun) $"return ArrayLit{tag}(len, ptr);"
>                 line s_fun "}"
>                 )
> 
>         match binds_last_dataC x |> data_term_vars |> term_vars_to_tysC with
>         | [[|YPrim Int32T|]] ->
>             import "stdbool.h"
>             import "stdint.h"
>             import "stdio.h"
>             import "stdlib.h"
> 
>             let main_defs = {text=System.Text.StringBuilder(); indent=0}
>             import "string.h" // for memcpy
> 
>             line main_defs (sprintf "%s main(){" (prim Int32T))
>             binds_start [[||]] (indent main_defs) x
>             line main_defs "}"
> 
>             let program = System.Text.StringBuilder()
> 
>             globals |> Seq.iter (fun x -> program.AppendLine(x) |> ignore)
>             fwd_dcls |> Seq.iter (fun x -> program.Append(x) |> ignore)
>             types |> Seq.iter (fun x -> program.Append(x) |> ignore)
>             functions |> Seq.iter (fun x -> program.Append(x) |> ignore)
>             program.Append(main_defs.text).ToString()
>         | _ ->
>             raise_codegen_error "The return type of main in the C backend should
> be a 32-bit int."
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> ── [ 5.56s - diagnostics ] ─────────────────────────────────────────────────────
> │ input.fsx (572,39)-(572,45) typecheck warning This and other
> recursive references to the object(s) being defined will be checked for 
> initialization-soundness at runtime through the use of a delayed reference. This
> is because you are defining one or more recursive objects, rather than recursive
> functions. This warning may be suppressed by using '#nowarn "40"' or 
> '--nowarn:40'.
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## CodegenCuda
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> module CodegenCuda =
>     // open System
>     // open System.Text
>     open System.Collections.Generic
> 
>     let backend_nameCuda = "Cuda"
>     let max_tag = 255uy
> 
>     let is_stringCuda = function DV(L(_,YPrim StringT)) | DLit(LitString _) -> 
> true | _ -> false
>     let sizeof_tyvCuda = function
>         | YPrim (Int64T | UInt64T | Float64T) -> 8
>         | YPrim (Int32T | UInt32T | Float32T) -> 4
>         | YPrim (Int16T | UInt16T) -> 2
>         | YPrim (Int8T | UInt8T | CharT | BoolT) -> 1
>         | _ -> 8
>     let order_args v = v |> Array.sortWith (fun (L(_,t)) (L(_,t')) -> compare 
> (sizeof_tyvCuda t') (sizeof_tyvCuda t))
>     let lineCuda x s = if s <> "" then x.text.Append(' ', x.indent).AppendLine s
> |> ignore
>     let lineCuda' x s = line x (String.concat " " s)
> 
>     type BindsReturnCuda =
>         | BindsTailEnd
>         | BindsLocal of TyV [[]]
> 
>     let term_vars_to_tysCuda x = x |> Array.map (function WV(L(_,t)) -> t | WLit
> x -> YPrim (lit_to_primitive_type x))
>     let binds_last_dataCuda x = x |> Array.last |> function 
> TyLocalReturnData(x,_) | TyLocalReturnOp(_,_,x) -> x | TyLet _ -> 
> raise_codegen_error "Compiler error: Cannot find the return data of the last 
> bind."
> 
>     type LayoutRecCuda = {tag : int; data : Data; free_vars : TyV[[]]; 
> free_vars_by_key : Map<int * string, TyV[[]]>}
>     type UnionRecCuda = {tag : int; free_vars : Map<int * string, TyV[[]]>; 
> is_heap : bool}
>     type MethodRecCuda = {tag : int; free_vars : TyV[[]]; range : Ty; body : 
> TypedBind[[]]; name : string option}
>     type ClosureRecCuda = {tag : int; free_vars : TyV[[]]; domain : Ty; range : 
> Ty; funtype : FunType; body : TypedBind[[]]}
>     type TupleRecCuda = {tag : int; tys : Ty [[]]}
>     type CFunRecCuda = {tag : int; domain : Ty; range : Ty; funtype : FunType}
> 
>     //let size_t = UInt32T
> 
>     // Replaces the invalid symbols in Spiral method names for the C backend.
>     let fix_method_name (x : string) = x.Replace(''','_') + "_"
> 
>     let unroll_pop (s : Stack<int>) = if s.Count > 0 then s.Pop() else -1
>     let unroll_peek (s : Stack<int>) = if s.Count > 0 then s.Peek() else -1
> 
>     let lit_stringCuda x =
>         let strb = System.Text.StringBuilder(String.length x + 2)
>         strb.Append '"' |> ignore
>         String.iter (function
>             | '"' -> strb.Append "\\\"" 
>             | '\b' -> strb.Append @"\b"
>             | '\t' -> strb.Append @"\t"
>             | '\n' -> strb.Append @"\n"
>             | '\r' -> strb.Append @"\r"
>             | '\\' -> strb.Append @"\\"
>             | x -> strb.Append x
>             >> ignore 
>             ) x
>         strb.Append '"' |> ignore
>         strb.ToString()
> 
>     let codegenCuda (default_env : DefaultEnv) (globals : _ ResizeArray, 
> fwd_dcls : _ ResizeArray, types : _ ResizeArray, functions : _ ResizeArray, 
> main_defs : _ ResizeArray) (env : PartEvalResult) =
>         let print show r =
>             let s_typ_fwd = {text=System.Text.StringBuilder(); indent=0}
>             let s_typ = {text=System.Text.StringBuilder(); indent=0}
>             let s_fun = {text=System.Text.StringBuilder(); indent=0}
>             show s_typ_fwd s_typ s_fun r
>             let f (a : _ ResizeArray) (b : CodegenEnv) = 
>                 let text = b.text.ToString()
>                 if text <> "" then a.Add(text)
>             f fwd_dcls s_typ_fwd
>             f types s_typ
>             f functions s_fun
> 
>         let layout show =
>             let dict' = Dictionary(HashIdentity.Structural)
>             let dict = Dictionary(HashIdentity.Reference)
>             let f x : LayoutRecCuda = 
>                 match x with
>                 | YLayout(x,_) ->
>                 let x = env.ty_to_data x
>                 let a, b =
>                     match x with
>                     | DRecord a -> let a = Map.map (fun _ -> data_free_vars) a 
> in a |> Map.toArray |> Array.collect snd, a
>                     | _ -> data_free_vars x, Map.empty
>                 {data=x; free_vars=a; free_vars_by_key=b; tag=dict'.Count}
>                 | _ -> raise_codegen_error $"Compiler error: Expected a layout 
> type (1).\nGot: %s{show_ty x}"
>             fun x ->
>                 let mutable dirty = false
>                 let r = memoize dict (memoize dict' (fun x -> dirty <- true; f 
> x)) x
>                 if dirty then print show r
>                 r
> 
>         let union show =
>             let dict = Dictionary(HashIdentity.Reference)
>             let f (a : Union) : UnionRecCuda = 
>                 let free_vars = a.Item.cases |> Map.map (fun _ -> env.ty_to_data
> >> data_free_vars)
>                 {free_vars=free_vars; tag=dict.Count; is_heap=a.Item.layout = 
> UHeap}
>             fun x ->
>                 let mutable dirty = false
>                 let r = memoize dict (fun x -> dirty <- true; f x) x
>                 if dirty then print show r
>                 r
> 
>         let jp f show =
>             let dict = Dictionary(HashIdentity.Structural)
>             let f x = f (x, dict.Count)
>             fun x ->
>                 let mutable dirty = false
>                 let r = memoize dict (fun x -> dirty <- true; f x) x
>                 if dirty then print show r
>                 r
> 
>         let tuple show =
>             let dict = Dictionary(HashIdentity.Structural)
>             let f x = {tag=dict.Count; tys=x}
>             fun x ->
>                 let mutable dirty = false
>                 let r = memoize dict (fun x -> dirty <- true; f x) x
>                 if dirty then print show r
>                 r
> 
>         let cfun' show =
>             let dict = Dictionary(HashIdentity.Structural)
>             let f (a : Ty, b : Ty, t : FunType) = {tag=dict.Count; domain=a; 
> range=b; funtype=t}
>             fun x ->
>                 let mutable dirty = false
>                 let r = memoize dict (fun x -> dirty <- true; f x) x
>                 if dirty then print show r
>                 r
> 
>         let args x = x |> Array.map (fun (L(i,_)) -> sprintf "v%i" i) |> 
> String.concat ", "
> 
>         let tmp =
>             let mutable i = 0u
>             fun () -> let x = i in i <- i + 1u; x
> 
>         let global' =
>             let has_added = HashSet()
>             fun x -> if has_added.Add(x) then globals.Add x
> 
>         let import x = global' $"#include <{x}>"
>         let import' x = global' $"#include \"{x}\""
> 
>         let tyvs_to_tys (x : TyV [[]]) = Array.map (fun (L(i,t)) -> t) x
> 
>         let rec binds_start (s : CodegenEnv) (x : TypedBind [[]]) = binds 
> (Stack()) s BindsTailEnd x
>         and return_local s ret (x : string) = 
>             match ret with
>             | [[||]] -> line s $"{x};"
>             | [[|L(i,_)|]] -> line s $"v{i} = {x};"
>             | ret ->
>                 let tmp_i = tmp()
>                 line s $"{tup_ty_tyvs ret} tmp{tmp_i} = {x};"
>                 Array.mapi (fun i (L(i',_)) -> $"v{i'} = tmp{tmp_i}.v{i};") ret 
> |> lineCuda' s
>         and get_layout_rec lay a =
>             match lay with 
>             | Heap -> heap a 
>             | HeapMutable -> mut a
>             | StackMutable -> stack_mut a
>         and binds (unroll : Stack<int>) (s : CodegenEnv) (ret : BindsReturnCuda)
> (stmts : TypedBind [[]]) =
>             let tup_destruct (a,b) =
>                 Array.map2 (fun (L(i,_)) b ->
>                     match b with
>                     | WLit b -> $"v{i} = {lit b};"
>                     | WV (L(i',_)) -> $"v{i} = v{i'};"
>                     ) a b
>             Array.forall (fun x ->
>                 match x with
>                 | TyLet(d,trace,a) ->
>                     try let d = data_free_vars d
>                         let decl_vars () = Array.map (fun (L(i,t)) -> $"{tyv t} 
> v{i};") d
>                         let layout_index layout (x'_i : int) (x' : TyV [[]]) = 
>                             match layout with
>                             | Heap | HeapMutable -> Array.map2 (fun (L(i,t)) 
> (L(i',_)) -> $"{tyv t} & v{i} = v{x'_i}.base->v{i'};") d x' |> lineCuda' s
>                             | StackMutable -> Array.map2 (fun (L(i,t)) (L(i',_))
> -> $"{tyv t} & v{i} = v{x'_i}.v{i'};") d x' |> lineCuda' s
>                         match a with
>                         | TyToLayout(a,YLayout(_,StackMutable) & b) ->
>                             match d with
>                             | [[|L(i,YLayout(_,StackMutable))|]] -> // For the 
> regular arrays.
>                                 let tag = (stack_mut b).tag
>                                 line s $"StackMut{tag} v{i}{{{args' a}}};"
>                                 true
>                             | _ ->
>                                 raise_codegen_error "Compiler error: Expected a 
> stack mutable layout type."
>                         | TyLayoutIndexAll(x) -> 
>                             match x with 
>                             | L(i,YLayout(_,lay) & a) -> (get_layout_rec lay 
> a).free_vars |> layout_index lay i 
>                             | _ -> raise_codegen_error "Compiler error: Expected
> the TyV in layout index to be a layout type."
>                             true
>                         | TyLayoutIndexByKey(x,key) -> 
>                             match x with 
>                             | L(i,YLayout(_,lay) & a) -> (get_layout_rec lay 
> a).free_vars_by_key |> Map.pick (fun (_, k') v' -> if key = k' then Some v' else
> None) |> layout_index lay i 
>                             | _ -> raise_codegen_error "Compiler error: Expected
> the TyV in layout index by key to be a layout type."
>                             true
>                         | TyMacro a ->
>                             let m = a |> List.map (function CMText x -> x | 
> CMTerm x -> tup_data x | CMType x -> tup_ty x | CMTypeLit x -> type_lit x) |> 
> String.concat ""
>                             if m.StartsWith("#pragma") then 
>                                 line s m
>                                 true
>                             elif m = "break" then
>                                 line s "break;"
>                                 false
>                             elif m.StartsWith("return") then
>                                 line s $"{m};"
>                                 false
>                             else
>                                 let q = m.Split("\\v")
>                                 if q.Length = 1 then 
>                                     decl_vars() |> lineCuda' s
>                                     return_local s d m 
>                                     true
>                                 else
>                                     if d.Length = q.Length-1 then
>                                         let w = 
> System.Text.StringBuilder(m.Length+8)
>                                         let tag (L(i,_)) = i : int
>                                         Array.iteri (fun i v -> 
> w.Append(q.[[i]]).Append('v').Append(tag v) |> ignore) d
>                                         
> w.Append(q.[[d.Length]]).Append(';').ToString() |> line s
>                                         true
>                                     else
>                                         raise_codegen_error "The special \\v 
> macro requires the same number of free vars in its binding as there are \\v in 
> the code."
>                         | TyArrayLiteral(a,b') -> 
>                             let inits = List.map tup_data b' |> String.concat 
> "," |> sprintf "{%s}"
>                             match d with
>                             | [[|L(i,YArray t)|]] -> // For the regular arrays.
>                                 line s $"%s{tup_ty t} v{i}[[]] = %s{inits};"
>                                 true
>                             | _ ->
>                                 raise_codegen_error "Compiler error: Expected a 
> single variable on the left side of an array literal op."
>                         | TyArrayCreate(a,b) ->  
>                             match d with
>                             | [[|L(i,YArray t)|]] -> 
>                                 match tup_ty t with
>                                 | "void" -> line s "/* void array create */"
>                                 | t -> line s $"{t} v{i}[[{tup_data b}]];"
>                                 true
>                             | _ -> raise_codegen_error "Compiler error: Expected
> a single variable on the left side of an array create op."
>                         | TyJoinPoint(JPClosure(a,b),b') ->
>                             match d with
>                             | [[|L(i,_)|]] -> 
>                                 let x = closure (a,b)
>                                 match x.funtype with
>                                 | FT_Pointer ->
>                                     let y = cfun (x.domain,x.range,x.funtype)
>                                     line s $"Fun{y.tag} v{i} = 
> FunPointerMethod{x.tag};"
>                                 | FT_Vanilla ->
>                                     let args = args b'
>                                     line s $"Closure{x.tag} v{i}{{{args}}};"
>                                 | FT_Closure -> 
>                                     let y = cfun (x.domain,x.range,x.funtype)
>                                     let args = args b'
>                                     line s $"Fun{y.tag} v{i}{{new 
> Closure{x.tag}{{{args}}}}};"
>                                 true
>                             | _ -> raise_codegen_error "Compiler error: Expected
> a single variable on the left side of a closure join point."
>                         | _ ->
>                             decl_vars() |> lineCuda' s
>                             op unroll s (BindsLocal d) a
>                             true
>                     with :? CodegenError as e -> raise_codegen_error' trace 
> (e.Data0, e.Data1)
>                 | TyLocalReturnOp(trace,a,_) ->
>                     try op unroll s ret a
>                         true
>                     with :? CodegenError as e -> raise_codegen_error' trace 
> (e.Data0, e.Data1)
>                 | TyLocalReturnData(d,trace) ->
>                     try match ret with
>                         | BindsLocal l -> lineCuda' s (tup_destruct 
> (l,data_term_vars d))
>                         | BindsTailEnd -> line s $"return {tup_data d};"
>                         true
>                     with :? CodegenError as e -> raise_codegen_error' trace 
> (e.Data0, e.Data1)
>                 ) stmts
>             |> ignore
>         and show_w = function WV(L(i,_)) -> sprintf "v%i" i | WLit a -> lit a
>         and args' b = data_term_vars b |> Array.map show_w |> String.concat ", "
>         and tup_term_vars x =
>             let args = Array.map show_w x |> String.concat ", "
>             if 1 < x.Length then sprintf "Tuple%i{%s}" (tup 
> (term_vars_to_tysCuda x)).tag args else args
>         and tup_data x = tup_term_vars (data_term_vars x)
>         and tup_ty_tys = function
>             | [[||]] -> "void"
>             | [[|x|]] -> tyv x
>             | x -> sprintf "Tuple%i" (tup x).tag
>         and tup_ty_tyvs (x : TyV [[]]) = tup_ty_tys (tyvs_to_tys x)
>         and tup_ty x = env.ty_to_data x |> data_free_vars |> tup_ty_tyvs
>         and tyv x =
>             match x with
>             | YUnion a ->
>                 match a.Item.layout with
>                 | UStack -> sprintf "Union%i" (unions a).tag
>                 | UHeap -> sprintf "sptr<Union%i>" (unions a).tag
>             | YLayout(_,lay) as a -> 
>                 match lay with
>                 | Heap -> sprintf "sptr<Heap%i>" (heap a).tag
>                 | HeapMutable -> sprintf "sptr<Mut%i>" (mut a).tag
>                 | StackMutable -> sprintf "StackMut%i &" (stack_mut a).tag
>             | YMacro [[Text "backend_switch "; Type (YRecord r)]] ->
>                 match r |> Map.tryPick (fun (_, k) v -> if k = backend_nameCuda 
> then Some v else None) with
>                 | Some x -> tup_ty x
>                 | None -> raise_codegen_error $"In the backend_switch, expected 
> a record with the '{backend_nameCuda}' field."
>             | YMacro a -> a |> List.map (function Text a -> a | Type a -> tup_ty
> a | TypeLit a -> type_lit a) |> String.concat ""
>             | YPrim a -> prim a
>             | YArray a -> sprintf "%s *" (tup_ty a)
>             | YFun(a,b,t) -> $"Fun%i{(cfun (a,b,t)).tag}"
>             | YExists -> raise_codegen_error "Existentials are not supported at 
> runtime. They are a compile time feature only."
>             | YForall -> raise_codegen_error "Foralls are not supported at 
> runtime. They are a compile time feature only."
>             | a -> raise_codegen_error (sprintf "Compiler error: Type not 
> supported in the codegen.\nGot: %A" a)
>         and prim = function
>             | Int8T -> "char" 
>             | Int16T -> "short"
>             | Int32T -> "int"
>             | Int64T -> "long long"
>             | UInt8T -> "unsigned char"
>             | UInt16T -> "unsigned short"
>             | UInt32T -> "unsigned int"
>             | UInt64T -> "unsigned long long"
>             | Float32T -> "float"
>             | Float64T -> "double"
>             | BoolT -> "bool" // part of c++ standard
>             | CharT -> "char"
>             | StringT -> "const char *"
>         and lit = function
>             | LitInt8 x -> sprintf "%i" x
>             | LitInt16 x -> sprintf "%i" x
>             | LitInt32 x -> sprintf "%i" x
>             | LitInt64 x -> sprintf "%ill" x
>             | LitUInt8 x -> sprintf "%iu" x
>             | LitUInt16 x -> sprintf "%iu" x
>             | LitUInt32 x -> sprintf "%iu" x
>             | LitUInt64 x -> sprintf "%iull" x
>             | LitFloat32 x -> 
>                 if x = infinityf then "1.0f / 0.0f"
>                 elif x = -infinityf then "-1.0f / 0.0f"
>                 elif System.Single.IsNaN x then "0.0f / 0.0f"
>                 else x.ToString("R") |> add_dec_point |> sprintf "%sf"
>             | LitFloat64 x ->
>                 if x = infinity then "1.0 / 0.0"
>                 elif x = -infinity then "-1.0 / 0.0"
>                 elif System.Double.IsNaN x then "0.0 / 0.0"
>                 else x.ToString("R") |> add_dec_point
>             | LitString x -> lit_stringCuda x
>             | LitChar x -> 
>                 match x with
>                 | '\b' -> @"\b"
>                 | '\n' -> @"\n"
>                 | '\t' -> @"\t"
>                 | '\r' -> @"\r"
>                 | '\\' -> @"\\"
>                 | x -> string x
>                 |> sprintf "'%s'"
>             | LitBool x -> if x then "true" else "false" // true and false are 
> defined in stddef.h
>         and type_lit = function
>             | YLit x -> lit x
>             | YSymbol x -> x
>             | x -> raise_codegen_error "Compiler error: Expecting a type literal
> in the macro." 
>         and op (unroll : Stack<int>)s (ret : BindsReturnCuda) a =
>             let binds a b = binds unroll a b
>             let return' (x : string) =
>                 match ret with
>                 | BindsLocal ret -> return_local s ret x
>                 | BindsTailEnd -> line s $"return {x};"
>             let jp (a,b') =
>                 let args = args b'
>                 match a with
>                 | JPMethod(a,b) -> 
>                     let x = method (a,b)
>                     let method_name = Option.defaultValue "method_" x.name
>                     $"{method_name}{x.tag}({args})"
>                 | JPClosure(a,b) ->
>                     let x = closure (a,b)
>                     match x.funtype with
>                     | FT_Vanilla -> raise_codegen_error "Compiler error: The 
> vanilla function case should have been blocked elsewhere."
>                     | FT_Pointer -> $"FunPointerMethod{x.tag}"
>                     | FT_Closure -> $"csptr<ClosureBase{x.tag}>{{new 
> Closure{x.tag}{{{args}}}}}"
>             match a with
>             | TyMacro _ -> raise_codegen_error "Macros are supposed to be taken 
> care of in the `binds` function."
>             | TyIf(cond,tr,fl) ->
>                 line s (sprintf "if (%s){" (tup_data cond))
>                 binds (indent s) ret tr
>                 line s "} else {"
>                 binds (indent s) ret fl
>                 line s "}"
>             | TyJoinPoint(a,args) -> return' (jp (a, args))
>             | TyBackend(_,_,r) -> raise_codegen_error_backend r "The Cuda 
> backend does not support the nesting of other backends."
>             | TyWhile(a,b) ->
>                 let cond =
>                     match a with
>                     | JPMethod(a,b),b' -> sprintf "while_method_%i(%s)" 
> (method_while (a,b)).tag (args b')
>                     | _ -> raise_codegen_error "Expected a regular method rather
> than closure create in the while conditional."
>                 match unroll_peek unroll with
>                 | -1 -> ()
>                 | 0 -> line s $"#pragma unroll"
>                 | i -> line s $"#pragma unroll %i{i}"
>                 line s (sprintf "while (%s){" cond)
>                 binds (indent s) (BindsLocal [[||]]) b
>                 line s "}"
>             | TyDo a | TyIndent a ->
>                 binds s ret a
>             | TyIntSwitch(L(v_i,_),on_succ,on_fail) ->
>                 line s (sprintf "switch (v%i) {" v_i)
>                 let _ =
>                     let s = indent s
>                     Array.iteri (fun i x ->
>                         line s (sprintf "case %i: {" i)
>                         binds (indent s) ret x
>                         line (indent s) "break;"
>                         line s "}"
>                         ) on_succ
>                     line s "default: {"
>                     binds (indent s) ret on_fail
>                     line s "}"
>                 line s "}"
>             | TyUnionUnbox(is,x,on_succs,on_fail) ->
>                 let case_tags = x.Item.tags
>                 let acs = match x.Item.layout with UHeap -> ".base->" | UStack 
> -> "."
>                 let head = List.head is |> fun (L(i,_)) -> $"v{i}{acs}tag"
>                 List.pairwise is
>                 |> List.map (fun (L(i,_), L(i',_)) -> $"v{i}{acs}tag == 
> v{i'}{acs}tag")
>                 |> String.concat " && "
>                 |> function "" -> head | x -> $"{x} ? {head} : {max_tag}"
>                 |> sprintf "switch (%s) {" |> line s
>                 let _ =
>                     let s = indent s
>                     Map.iter (fun k (a,b) ->
>                         let union_i = case_tags.[[k]]
>                         line s (sprintf "case %i: { // %s" union_i k)
>                         List.iter2 (fun (L(data_i,_)) a ->
>                             let a, s = data_free_vars a, indent s
>                             let qs = ResizeArray(a.Length)
>                             Array.iteri (fun field_i (L(v_i,t) as v) -> 
>                                 qs.Add $"{tyv t} v{v_i} = 
> v{data_i}{acs}case{union_i}.v{field_i};"
>                                 ) a 
>                             lineCuda' s qs
>                             ) is a
>                         binds (indent s) ret b
>                         line (indent s) "break;"
>                         line s "}"
>                         ) on_succs
>                     line s "default: {"
>                     let _ =
>                         let s = indent s
>                         match on_fail with
>                         | Some b -> binds s ret b
>                         | None -> line s "assert(\"Invalid tag.\" && false); 
> __trap();"
>                     line s "}"
>                 line s "}"
>             | TyUnionBox(a,b,c') ->
>                 let c = c'.Item
>                 let i = c.tags.[[a]]
>                 let vars = args' b
>                 let tag = (unions c').tag
>                 match c.layout with
>                 | UHeap -> $"sptr<Union{tag}>{{new 
> Union{tag}{{Union{tag}_{i}{{{vars}}}}}}}"
>                 | UStack -> $"Union{tag}{{Union{tag}_{i}{{{vars}}}}}"
>                 |> return'
>             | TyToLayout(a,b) -> 
>                 match b with
>                 | YLayout(_,layout) -> 
>                     match layout with
>                     | Heap ->
>                         let tag = (heap b).tag
>                         $"sptr<Heap{tag}>{{new Heap{tag}{{{args' a}}}}}"
>                     | HeapMutable ->
>                         let tag = (mut b).tag
>                         $"sptr<Mut{tag}>{{new Mut{tag}{{{args' a}}}}}"
>                     | StackMutable -> raise_codegen_error "The Cuda backend 
> doesn't support stack mutable layout types."
>                 | _ -> raise_codegen_error "Compiler error: Expected a layout 
> type (2)."
>                 |> return'
>             | TyLayoutIndexAll(x) -> raise_codegen_error "Compiler error: 
> TyLayoutIndexAll should have been taken care of in TyLet."
>             | TyLayoutIndexByKey(x,key) -> raise_codegen_error "Compiler error: 
> TyLayoutIndexByKey should have been taken care of in TyLet."
>             | TyLayoutMutableSet(L(i,t),b,c) ->
>                 match t with
>                 | YLayout(_,lay) ->
>                     match lay with
>                     | HeapMutable -> 
>                         let a =
>                             List.fold
>                                 (fun s k ->
>                                     match s with
>                                     | DRecord l -> l |> Map.pick (fun (_, k') v'
> -> if k = k' then Some v' else None)
>                                     | _ -> raise_codegen_error "Compiler error: 
> Expected a record.")
>                                 (mut t).data b
>                         Array.map2 (fun (L(i',_)) b -> $"v{i}.base->v{i'} = 
> {show_w b};") (data_free_vars a) (data_term_vars c)
>                     | StackMutable -> 
>                         let a = List.fold (fun s k -> match s with DRecord l -> 
> l |> Map.pick (fun (_, k') v' -> if k = k' then Some v' else None) | _ -> 
> raise_codegen_error "Compiler error: Expected a record.") (stack_mut t).data b
>                         Array.map2 (fun (L(i',_)) b -> $"v{i}.v{i'} = {show_w 
> b};") (data_free_vars a) (data_term_vars c)
>                     | Heap -> raise_codegen_error "Compiler error (1): 
> TyLayoutMutableSet should only be HeapMutable or StackMutable."
>                 | _ -> raise_codegen_error "Compiler error (2): 
> TyLayoutMutableSet should only be HeapMutable or StackMutable."
>                 |> String.concat " " |> line s
>             | TyArrayLiteral(a,b') -> raise_codegen_error "Compiler error: 
> TyArrayLiteral should have been taken care of in TyLet."
>             | TyArrayCreate(a,b) ->  raise_codegen_error "Compiler error: 
> TyArrayCreate should have been taken care of in TyLet."
>             | TyFailwith(a,b) ->
>                 let string_in_op = function DLit (LitString b) -> lit_stringCuda
> b | b -> raise_codegen_error "In the Cuda backend, the exception string must be 
> a literal."
>                 let fmt = @"%s\n"
>                 line s $"printf(\"{fmt}\", {string_in_op b});"
>                 line s "__trap();" // TODO: Print out the error traces as well.
>             | TyConv(a,b) -> return' $"({tyv a}){tup_data b}"
>             | TyApply(L(i,_),b) -> 
>                 let rec loop = function
>                     | DPair(a,b) -> tup_data a :: loop b
>                     | a -> [[tup_data a]]
>                 let args = loop b |> List.filter ((<>) "") |> String.concat ", "
>                 $"v{i}({args})" |> return'
>             | TyArrayLength(_,b) -> raise_codegen_error "Array length is not 
> supported in the Cuda C++ backend as they are bare pointers."
>             | TyStringLength(_,b) -> raise_codegen_error "String length is not 
> supported in the Cuda C++ backend."
>             | TySizeOf t -> return' $"sizeof({tup_ty t})"
>             | TyOp(Global,[[DLit (LitString x)]]) -> global' x
>             | TyOp(PragmaUnrollPush,[[DLit (LitInt32 x)]]) -> unroll.Push(x); 
> line s $"// Pushing the loop unrolling to: {x}"
>             | TyOp(PragmaUnrollPop,[[]]) -> line s $"// Poping the loop 
> unrolling to: {unroll_pop unroll}"
>             | TyOp(op,l) ->
>                 match op, l with
>                 | Dyn,[[a]] -> tup_data a
>                 | TypeToVar, _ -> raise_codegen_error "The use of `` should 
> never appear in generated code."
>                 | StringIndex, [[a;b]] -> sprintf "%s[[%s]]" (tup_data a) 
> (tup_data b)
>                 | StringSlice, [[a;b;c]] -> raise_codegen_error "String slice is
> not supported natively in the C backend. Use a library implementation instead."
>                 | ArrayIndex, [[DV(L(_,YArray t)) & a;b]] -> 
>                     match tup_ty t with
>                     | "void" -> "/* void array index */"
>                     | _ -> sprintf "%s[[%s]]" (tup_data a) (tup_data b)
>                 | ArrayIndexSet, [[DV(L(_,YArray t)) as a;b;c]] -> 
>                     let a',b',c' = tup_data a, tup_data b, tup_data c
>                     match c' with
>                     | "" -> "/* void array set */"
>                     | _ -> $"{a'}[[{b'}]] = {c'}"
>                 // Math
>                 | Add, [[a;b]] -> sprintf "%s + %s" (tup_data a) (tup_data b)
>                 | Sub, [[a;b]] -> sprintf "%s - %s" (tup_data a) (tup_data b)
>                 | Mult, [[a;b]] -> sprintf "%s * %s" (tup_data a) (tup_data b)
>                 | Div, [[a;b]] -> sprintf "%s / %s" (tup_data a) (tup_data b)
>                 | Mod, [[a;b]] -> sprintf "%s %% %s" (tup_data a) (tup_data b)
>                 | Pow, [[a;b]] -> sprintf "pow(%s,%s)" (tup_data a) (tup_data b)
>                 | LT, [[a;b]] -> sprintf "%s < %s" (tup_data a) (tup_data b)
>                 | LTE, [[a;b]] -> sprintf "%s <= %s" (tup_data a) (tup_data b)
>                 | EQ, [[a;b]] | NEQ, [[a;b]] | GT, [[a;b]] | GTE, [[a;b]] when 
> is_stringCuda a -> raise_codegen_error "String comparison operations are not 
> supported in the Cuda C++ backend."
>                 | EQ, [[a;b]] -> sprintf "%s == %s" (tup_data a) (tup_data b)
>                 | NEQ, [[a;b]] -> sprintf "%s != %s" (tup_data a) (tup_data b)
>                 | GT, [[a;b]] -> sprintf "%s > %s" (tup_data a) (tup_data b)
>                 | GTE, [[a;b]] -> sprintf "%s >= %s" (tup_data a) (tup_data b)
>                 | BoolAnd, [[a;b]] -> sprintf "%s && %s" (tup_data a) (tup_data 
> b)
>                 | BoolOr, [[a;b]] -> sprintf "%s || %s" (tup_data a) (tup_data 
> b)
>                 | BitwiseAnd, [[a;b]] -> sprintf "%s & %s" (tup_data a) 
> (tup_data b)
>                 | BitwiseOr, [[a;b]] -> sprintf "%s | %s" (tup_data a) (tup_data
> b)
>                 | BitwiseXor, [[a;b]] -> sprintf "%s ^ %s" (tup_data a) 
> (tup_data b)
>                 | BitwiseComplement, [[a]] -> sprintf "~%s" (tup_data a)
> 
>                 | ShiftLeft, [[a;b]] -> sprintf "%s << %s" (tup_data a) 
> (tup_data b)
>                 | ShiftRight, [[a;b]] -> sprintf "%s >> %s" (tup_data a) 
> (tup_data b)
> 
>                 | Neg, [[x]] -> sprintf "-%s" (tup_data x)
>                 | Log, [[x]] -> sprintf "log(%s)" (tup_data x)
>                 | Exp, [[x]] -> sprintf "exp(%s)" (tup_data x)
>                 | Tanh, [[x]] -> sprintf "tanh(%s)" (tup_data x)
>                 | Sqrt, [[x]] -> sprintf "sqrt(%s)" (tup_data x)
>                 | Sin, [[x]] -> sprintf "sin(%s)" (tup_data x)
>                 | Cos, [[x]] -> sprintf "cos(%s)" (tup_data x)
>                 | NanIs, [[x]] -> sprintf "isnan(%s)" (tup_data x)
>                 | Printf, [[fmt;str]] -> 
>                     match args' str with
>                     | "" -> sprintf "printf(%s)" (tup_data fmt)
>                     | str -> sprintf "printf(%s,%s)" (tup_data fmt) str
>                 | UnionTag, [[DV(L(i,YUnion l)) as x]] -> 
>                     match l.Item.layout with
>                     | UHeap -> ".base->tag"
>                     | UStack -> ".tag"
>                     |> sprintf "v%i%s" i
>                 | _ -> raise_codegen_error <| sprintf "Compiler error: %A with 
> %i args not supported" op l.Length
>                 |> return'
>         and print_ordered_args s v = // Unlike C# for example, C keeps the 
> struct fields in input order. To reduce padding, it is best to order the fields 
> from largest to smallest.
>             order_args v |> Array.iter (fun (L(i,x)) -> line s $"{tyv x} v{i};")
>         and method_template is_while : _ -> MethodRecCuda =
>             jp (fun ((jp_body,key & (C(args,_))),i) ->
>                 match (fst env.join_point_method.[[jp_body]]).[[key]] with
>                 | Some a, Some range, name -> {tag=i; free_vars=rdata_free_vars 
> args; range=range; body=a; name=Option.map fix_method_name name}
>                 | _ -> raise_codegen_error "Compiler error: The method 
> dictionary is malformed"
>                 ) (fun s_fwd s_typ s_fun x ->
>                 let ret_ty = tup_ty x.range
>                 let fun_name = Option.defaultValue (if is_while then 
> "while_method_" else "method_") x.name
>                 let args = x.free_vars |> Array.mapi (fun i (L(_,x)) -> $"{tyv 
> x} v{i}") |> String.concat ", "
>                 let inline_ = 
>                     if is_while then "inline "
>                     else 
>                         line s_fwd $"__device__ {ret_ty} 
> {fun_name}{x.tag}({args});"
>                         if fun_name.StartsWith "noinline" then "__noinline__ " 
> else ""
>                 line s_fun $"__device__ {inline_}{ret_ty} 
> {fun_name}{x.tag}({args}){{"
>                 binds_start (indent s_fun) x.body
>                 line s_fun "}"
>                 )
>         and method : _ -> MethodRecCuda = method_template false
>         and method_while : _ -> MethodRecCuda = method_template true
>         and closure_args domain count_start =
>             let rec loop = function
>                 | YPair(a,b) -> a :: loop b
>                 | a -> [[a]]
>             let mutable count = count_start
>             let rename x = Array.map (fun (L(i,t)) -> let x = L(count,t) in 
> count <- count+1; x) x
>             let mutable i = 0
>             loop domain |> List.choose (fun x -> 
>                 let n = env.ty_to_data x |> data_free_vars 
>                 let x = if n.Length <> 0 then Some(i, tup_ty_tyvs n, n |> 
> rename) else None
>                 i <- i+1
>                 x
>                 )
>         and closure : _ -> ClosureRecCuda =
>             jp (fun ((jp_body,key & (C(args,_,fun_ty))),i) ->
>                 match fun_ty with
>                 | YFun(domain,range,t) ->
>                     match (fst env.join_point_closure.[[jp_body]]).[[key]] with
>                     | Some(domain_args, body) -> {tag=i; domain=domain; 
> range=range; body=body; free_vars=rdata_free_vars args; funtype=t}
>                     | _ -> raise_codegen_error "Compiler error: The method 
> dictionary is malformed"
>                 | _ -> raise_codegen_error "Compiler error: Unexpected type in 
> the closure join point."
>                 ) (fun _ s_typ s_fun x ->
>                 let i, range = x.tag, tup_ty x.range
>                 let closure_args = closure_args x.domain x.free_vars.Length
>                 let args = closure_args |> List.map (fun (i,ty,_) -> $"{ty} 
> tup{i}") |> String.concat ", "
>                 let print_body s_fun =
>                     let s_fun = indent s_fun
>                     x.free_vars |> Array.map (fun (L(i,t)) ->
>                         $"{tyv t} & v{i} = this->v{i};"
>                         ) |> String.concat " " |> line s_fun
>                     closure_args |> List.map (fun (i'',_,vars) ->
>                         Array.mapi (fun i' (L(i,t)) -> 
>                             if vars.Length <> 1 then $"{tyv t} v{i} = 
> tup{i''}.v{i'};"
>                             else $"{tyv t} v{i} = tup{i''};"
>                             ) vars
>                         |> String.concat " "
>                         ) |> String.concat " " |> line s_fun
>                     binds_start s_fun x.body
>                 match x.funtype with
>                 | FT_Pointer ->
>                     $"__device__ {range} FunPointerMethod{i}({args}){{" |> line 
> s_fun
>                     print_body s_fun
>                     line s_fun "}"
>                 | FT_Vanilla | FT_Closure ->
>                     match x.funtype with
>                     | FT_Pointer -> raise_codegen_error "Compiler error: The 
> pointer case have been taken care of (1)."
>                     | FT_Closure ->
>                         let i' = (cfun (x.domain,x.range,x.funtype)).tag
>                         line s_typ $"struct Closure{i} : public ClosureBase{i'} 
> {{"
>                     | FT_Vanilla ->
>                         line s_typ $"struct Closure{i} {{"
>                     let () =
>                         let s_typ = indent s_typ
>                         let () = // free vars in the environment
>                             print_ordered_args s_typ x.free_vars
>                         let () = // operator()
>                             match x.funtype with
>                             | FT_Pointer -> raise_codegen_error "Compiler error:
> The pointer case have been taken care of (2)."
>                             | FT_Vanilla -> line s_typ $"__device__ {range} 
> operator()({args}){{"
>                             | FT_Closure -> line s_typ $"__device__ {range} 
> operator()({args}) override {{"
>                             print_body s_typ
>                             line s_typ "}"
>                         let () = // constructor
>                             match x.free_vars with
>                             | [[||]] -> ()
>                             | _ ->
>                                 let constructor_args = 
>                                     x.free_vars 
>                                     |> Array.map (fun (L(i,t)) -> $"{tyv t} 
> _v{i}")
>                                     |> String.concat ", "
>                                 let initializer_args = 
>                                     x.free_vars 
>                                     |> Array.map (fun (L(i,t)) -> 
> $"v{i}(_v{i})")
>                                     |> String.concat ", "
>                                 line s_typ $"__device__ 
> Closure{i}({constructor_args}) : {initializer_args} {{ }}"
>                         let () = // destructor
>                             match x.funtype with
>                             | FT_Pointer | FT_Vanilla -> ()
>                             | FT_Closure -> line s_typ $"__device__ 
> ~Closure{i}() override = default;"
>                         ()
>                     line s_typ "};"
>                 )
>         and cfun : _ -> CFunRecCuda =
>             cfun' (fun s_fwd s_typ s_fun x ->
>                 let i, range = x.tag, tup_ty x.range
>                 let domain_args_ty = closure_args x.domain 0 |> List.map (fun 
> (_,ty,_) -> ty) |> String.concat ", "
>                 match x.funtype with
>                 | FT_Vanilla -> raise_codegen_error "Regular functions do not 
> have a composable type in the Cuda backend. Consider explicitly converting them 
> to either closures or pointers using `to_closure` or `to_fptr` if you want to 
> pass them through boundaries."
>                 | FT_Pointer -> line s_fwd $"typedef {range} (* 
> Fun{i})({domain_args_ty});"
>                 | FT_Closure ->
>                     line s_fwd $"struct ClosureBase{i} {{ int refc{{0}}; 
> __device__ virtual {range} operator()({domain_args_ty}) = 0; __device__ virtual 
> ~ClosureBase{i}() = default; }};"
>                     line s_fwd $"typedef csptr<ClosureBase{i}> Fun{i};"
>                 )
>         and tup : _ -> TupleRecCuda = 
>             tuple (fun s_fwd s_typ s_fun x ->
>                 let name = sprintf "Tuple%i" x.tag
>                 line s_fwd $"struct {name};"
>                 line s_typ $"struct {name} {{"
>                 x.tys |> Array.mapi (fun i x -> L(i,x)) |> print_ordered_args 
> (indent s_typ)
>                 let concat x = String.concat ", " x
>                 let args = x.tys |> Array.mapi (fun i x -> $"{tyv x} t{i}")
>                 let con_init = x.tys |> Array.mapi (fun i x -> $"v{i}(t{i})")
>                 if args.Length <> 0 then
>                     line (indent s_typ) $"__device__ {name}() = default;"
>                     line (indent s_typ) $"__device__ {name}({concat args}) : 
> {concat con_init} {{}}"
>                 line s_typ "};"
>                 )
>         and unions : _ -> UnionRecCuda = 
>             let inline map_iteri f x = Map.fold (fun i k v -> f i k v; i+1) 0 x 
> |> ignore
>             union (fun s_fwd s_typ s_fun x ->
>                 let i = x.tag
>                 line s_fwd $"struct Union{i};" // Forward declaration for the 
> union.
>                 map_iteri (fun tag k v -> // The individual union cases.
>                     line s_typ $"struct Union{i}_{tag} {{ // {k}"
>                     // The free vars in the env.
>                     print_ordered_args (indent s_typ) v
>                     let () = // constructors
>                         let s_typ = indent s_typ
>                         let concat x = String.concat ", " x
>                         let args = v |> Array.map (fun (L(i,x)) -> $"{tyv x} 
> t{i}")
>                         let con_init = v |> Array.map (fun (L(i,x)) -> 
> $"v{i}(t{i})")
>                         if v.Length <> 0 then 
>                             line s_typ $"__device__ Union{i}_{tag}({concat 
> args}) : {concat con_init} {{}}" 
>                             line s_typ $"__device__ Union{i}_{tag}() = delete;" 
>                     line s_typ "};"
>                     ) x.free_vars
>                     
>                 line s_typ $"struct Union{i} {{" // The union definition.
>                 let _ = // Union cases inside the union.
>                     let s_typ = indent s_typ
>                     line s_typ $"union {{"
>                     let _ =
>                         let s_typ = indent s_typ
>                         map_iteri (fun tag (_,k) v -> line s_typ 
> $"Union{i}_{tag} case{tag}; // {k}") x.free_vars
>                     line s_typ "};"
> 
>                     if x.is_heap then line s_typ "int refc{0};"
>                     if x.free_vars.Count > int max_tag then raise_codegen_error 
> $"Too many union cases. They should not be more than {max_tag}."
>                     line s_typ $"unsigned char tag{{{max_tag}}};"
>                     line s_typ $"__device__ Union{i}() {{}}" // default 
> constructor, the refc and tag have def value so we don't have to do anything 
> here.
>                     
>                     map_iteri (fun tag k v -> // The constructors for all the 
> union cases.
>                         line s_typ $"__device__ Union{i}(Union{i}_{tag} t) : 
> tag({tag}), case{tag}(t) {{}} // {k}"
>                         ) x.free_vars
>                     
>                     line s_typ $"__device__ Union{i}(Union{i} & x) : tag(x.tag) 
> {{" // copy constructor
>                     let () =
>                         let s_typ = indent s_typ
>                         line s_typ "switch(x.tag){"
>                         let () = // copy constructor cases
>                             let s_typ = indent s_typ
>                             map_iteri (fun tag k v -> 
>                                 line s_typ $"case {tag}: new (&this->case{tag}) 
> Union{i}_{tag}(x.case{tag}); break; // {k}"
>                                 ) x.free_vars
>                         line s_typ "}"
>                     line s_typ "}"
>                     line s_typ $"__device__ Union{i}(Union{i} && x) : tag(x.tag)
> {{" // move constructor
>                     let () =
>                         let s_typ = indent s_typ
>                         line s_typ "switch(x.tag){"
>                         let () = // move constructor cases
>                             let s_typ = indent s_typ
>                             map_iteri (fun tag k v -> 
>                                 line s_typ $"case {tag}: new (&this->case{tag}) 
> Union{i}_{tag}(std::move(x.case{tag})); break; // {k}"
>                                 ) x.free_vars
>                         line s_typ "}"
>                     line s_typ "}"
>                     line s_typ $"__device__ Union{i} & operator=(Union{i} & x) 
> {{" // copy assignment operator
>                     let () =
>                         let s_typ = indent s_typ
>                         line s_typ "if (this->tag == x.tag) {" 
>                         let () =
>                             let s_typ = indent s_typ
>                             line s_typ "switch(x.tag){"
>                             let () = // copy assignment cases
>                                 let s_typ = indent s_typ
>                                 map_iteri (fun tag k v -> 
>                                     line s_typ $"case {tag}: this->case{tag} = 
> x.case{tag}; break; // {k}"
>                                     ) x.free_vars
>                             line s_typ "}"
>                         line s_typ "} else {"
>                         let () =
>                             let s_typ = indent s_typ
>                             line s_typ $"this->~Union{i}();"
>                             line s_typ $"new (this) Union{i}{{x}};"
>                         line s_typ "}"
>                         line s_typ "return *this;"
>                     line s_typ "}"
>                     line s_typ $"__device__ Union{i} & operator=(Union{i} && x) 
> {{" // move assignment operator
>                     let () =
>                         let s_typ = indent s_typ
>                         line s_typ "if (this->tag == x.tag) {" 
>                         let () =
>                             let s_typ = indent s_typ
>                             line s_typ "switch(x.tag){"
>                             let () = // move assignment cases
>                                 let s_typ = indent s_typ
>                                 map_iteri (fun tag k v -> 
>                                     line s_typ $"case {tag}: this->case{tag} = 
> std::move(x.case{tag}); break; // {k}"
>                                     ) x.free_vars
>                             line s_typ "}"
>                         line s_typ "} else {"
>                         let () =
>                             let s_typ = indent s_typ
>                             line s_typ $"this->~Union{i}();"
>                             line s_typ $"new (this) Union{i}{{std::move(x)}};"
>                         line s_typ "}"
>                         line s_typ "return *this;"
>                     line s_typ "}"
>                     line s_typ $"__device__ ~Union{i}() {{"
>                     let () = // destructor
>                         let s_typ = indent s_typ
>                         line s_typ "switch(this->tag){"
>                         let () = // destructor cases
>                             let s_typ = indent s_typ
>                             map_iteri (fun tag k v -> 
>                                 line s_typ $"case {tag}: 
> this->case{tag}.~Union{i}_{tag}(); break; // {k}"
>                                 ) x.free_vars
>                         line s_typ "}"
>                         line s_typ $"this->tag = {max_tag};"
>                     line s_typ "}"
>                 line s_typ "};"
>                 )
>         and layout_tmpl is_heap name : _ -> LayoutRecCuda =
>             layout (fun s_fwd s_typ s_fun (x : LayoutRecCuda) ->
>                 let name = sprintf "%s%i" name x.tag
>                 line s_fwd $"struct {name};"
>                 line s_typ $"struct {name} {{"
>                 let () =
>                     let s_typ = indent s_typ
>                     if is_heap then line s_typ "int refc{0};"
>                     x.free_vars |> print_ordered_args s_typ
>                     let concat x = String.concat ", " x
>                     let args = x.free_vars |> Array.map (fun (L(i,x)) -> $"{tyv 
> x} t{i}")
>                     let con_init = x.free_vars |> Array.map (fun (L(i,x)) -> 
> $"v{i}(t{i})")
>                     if args.Length <> 0 then
>                         line s_typ $"__device__ {name}() = default;"
>                         line s_typ $"__device__ {name}({concat args}) : {concat 
> con_init} {{}}" 
>                 line s_typ "};"
>                 )
>         and heap : _ -> LayoutRecCuda = layout_tmpl true "Heap"
>         and mut : _ -> LayoutRecCuda = layout_tmpl true "Mut"
>         and stack_mut : _ -> LayoutRecCuda = layout_tmpl false "StackMut"
> 
>         fun vs (x : TypedBind [[]]) ->
>             let ret_ty =
>                 let er() = raise_codegen_error "The return type of the 
> __global__ kernel in the Cuda backend should be a void type or a record of type 
> {cluster_dims : {x : int; y : int; z : int}}."
>                 match binds_last_dataCuda x with
>                 | DRecord m when m.Count = 1 ->
>                     match Map.tryPick (fun (_, k) v -> if k = "cluster_dims" 
> then Some v else None) m with
>                     | Some(DRecord m) when m.Count = 3 ->
>                         match
>                             Map.tryPick (fun (_, k) v -> if k = "x" then Some v 
> else None) m,
>                             Map.tryPick (fun (_, k) v -> if k = "y" then Some v 
> else None) m,
>                             Map.tryPick (fun (_, k) v -> if k = "z" then Some v 
> else None) m
>                         with
>                         | Some(DSymbol x), Some(DSymbol y), Some(DSymbol z) ->  
> $"void __cluster_dims__({x},{y},{z})"
>                         | Some(DV _), _, _
>                         | _, Some(DV _), _
>                         | _, _, Some(DV _) ->  raise_codegen_error "All the 
> variables have to be known at compile time."
>                         | _ -> er()
>                     | _ -> er()
>                 | DB -> "void"
>                 | _ -> er()
>             let main_defs' = {text=System.Text.StringBuilder(); indent=0}
>             let args = vs |> Array.mapi (fun i (L(_,x)) -> $"{tyv x} v{i}") |> 
> String.concat ", "
>             line main_defs' $"extern \"C\" __global__ {ret_ty} 
> entry%i{main_defs.Count}(%s{args}) {{"
>             binds_start (indent main_defs') x
>             line main_defs' "}"
>             main_defs.Add(main_defs'.text.ToString())
> 
>             global' $"using default_int = {prim default_env.default_int};"
>             global' $"using default_uint = {prim default_env.default_uint};"
>             global' (System.IO.File.ReadAllText(System.IO.Path.Join(
>                 // AppDomain.CurrentDomain.BaseDirectory,
>                 System.IO.Path.Combine (SpiralFileSystem.get_workspace_root (), 
> "deps/The-Spiral-Language/The Spiral Language 2"),
>                 "reference_counting.cuh"
>             )))
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> ── [ 4.13s - diagnostics ] ─────────────────────────────────────────────────────
> │ input.fsx (606,39)-(606,45) typecheck warning This and other
> recursive references to the object(s) being defined will be checked for 
> initialization-soundness at runtime through the use of a delayed reference. This
> is because you are defining one or more recursive objects, rather than recursive
> functions. This warning may be suppressed by using '#nowarn "40"' or 
> '--nowarn:40'.
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## CodegenPython
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> module CodegenPython =
>     // open System
>     // open System.Text
>     open System.Collections.Generic
> 
>     let backend_namePython = "Python"
> 
>     let litPython = function
>         | LitInt8 x -> sprintf "%i" x
>         | LitInt16 x -> sprintf "%i" x
>         | LitInt32 x -> sprintf "%i" x
>         | LitInt64 x -> sprintf "%i" x
>         | LitUInt8 x -> sprintf "%i" x
>         | LitUInt16 x -> sprintf "%i" x
>         | LitUInt32 x -> sprintf "%i" x
>         | LitUInt64 x -> sprintf "%i" x
>         | LitFloat32 x -> 
>             if x = infinityf then "float('inf')"
>             elif x = -infinityf then "float('-inf')"
>             elif System.Single.IsNaN x then "float()"
>             else x.ToString("R") |> add_dec_point
>         | LitFloat64 x ->
>             if x = infinity then "float('inf')"
>             elif x = -infinity then "float('-inf')"
>             elif System.Double.IsNaN x then "float()"
>             else x.ToString("R") |> add_dec_point
>         | LitString x -> 
>             let strb = System.Text.StringBuilder(x.Length+2)
>             strb.Append '"' |> ignore
>             String.iter (function
>                 | '"' -> strb.Append "\\\"" 
>                 | '\b' -> strb.Append @"\b"
>                 | '\t' -> strb.Append @"\t"
>                 | '\n' -> strb.Append @"\n"
>                 | '\r' -> strb.Append @"\r"
>                 | '\\' -> strb.Append @"\\"
>                 | x -> strb.Append x
>                 >> ignore 
>                 ) x
>             strb.Append '"' |> ignore
>             strb.ToString()
>         | LitChar x -> 
>             match x with
>             | '\b' -> @"\b"
>             | '\n' -> @"\n"
>             | '\t' -> @"\t"
>             | '\r' -> @"\r"
>             | '\\' -> @"\\"
>             | ''' -> @"\'"
>             | x -> string x
>             |> sprintf "'%s'"
>         | LitBool x -> if x then "True" else "False"
> 
>     let type_litPython = function
>         | YLit x -> litPython x
>         | YSymbol x -> x
>         | x -> raise_codegen_error "Compiler error: Expecting a type literal in 
> the macro." 
> 
>     let show_w = function WV(L(i,_)) -> sprintf "v%i" i | WLit a -> litPython a
>     let args x = x |> Array.map (fun (L(i,_)) -> sprintf "v%i" i) |> 
> String.concat ", "
>     let primPython x = show_primt x
>     let cupy_ty x =
>         match x with
>         | [[|L(_,x)|]] ->
>             match x with
>             | YPrim x ->
>                 match x with
>                 | Int8T -> "cp.int8"
>                 | Int16T -> "cp.int16"
>                 | Int32T -> "cp.int32"
>                 | Int64T -> "cp.int64"
>                 | UInt8T -> "cp.uint8"
>                 | UInt16T -> "cp.uint16"
>                 | UInt32T -> "cp.uint32"
>                 | UInt64T -> "cp.uint64"
>                 | Float32T -> "cp.float32"
>                 | Float64T -> "cp.float64"
>                 | BoolT -> "cp.bool_"
>                 | _ -> "object"
>             | _ -> "object"
>         | _ -> "object"
> 
>     type UnionRecPython = {tag : int; free_vars : Map<int * string, TyV[[]]>}
>     type LayoutRecPython = {tag : int; data : Data; free_vars : TyV[[]]; 
> free_vars_by_key : Map<int * string, TyV[[]]>}
>     type MethodRecPython = {tag : int; free_vars : L<Tag,Ty>[[]]; range : Ty; 
> body : TypedBind[[]]}
>     type ClosureRecPython = {tag : int; free_vars : L<Tag,Ty>[[]]; domain : Ty; 
> domain_args : TyV[[]]; range : Ty; body : TypedBind[[]]}
> 
>     type BindsReturnPython =
>         | BindsTailEnd
>         | BindsLocal of TyV [[]]
> 
>     let linePython x s = if s <> "" then x.text.Append(' ', x.indent).AppendLine
> s |> ignore
> 
>     let codegen' backend_handler (env : PartEvalResult) (x : TypedBind [[]]) =
>         let fwd_dcls = ResizeArray()
>         let types = ResizeArray()
>         let functions = ResizeArray()
> 
>         let global' =
>             let has_added = HashSet env.globals
>             fun x -> if has_added.Add(x) then env.globals.Add x
> 
>         let import x = global' $"import {x}"
>         let from x = global' $"from {x}"
> 
>         let print is_type show r =
>             let s = {text=System.Text.StringBuilder(); indent=0}
>             show s r
>             let text = s.text.ToString()
>             if is_type then types.Add(text) else functions.Add(text)
> 
>         let union show =
>             let dict = Dictionary(HashIdentity.Reference)
>             let f (a : Union) : UnionRecPython =
>                 let free_vars = a.Item.cases |> Map.map (fun _ -> env.ty_to_data
> >> data_free_vars)
>                 {free_vars=free_vars; tag=dict.Count}
>             fun x ->
>                 let mutable dirty = false
>                 let r = memoize dict (fun x -> dirty <- true; f x) x
>                 if dirty then print true show r
>                 r
> 
>         let layout show =
>             let dict' = Dictionary(HashIdentity.Structural)
>             let dict = Dictionary(HashIdentity.Reference)
>             let f x : LayoutRecPython = 
>                 match x with
>                 | YLayout(x,_) ->
>                 let x = env.ty_to_data x
>                 let a, b =
>                     match x with
>                     | DRecord a -> let a = Map.map (fun _ -> data_free_vars) a 
> in a |> Map.toArray |> Array.collect snd, a
>                     | _ -> data_free_vars x, Map.empty
>                 {data=x; free_vars=a; free_vars_by_key=b; tag=dict'.Count}
>                 | _ -> raise_codegen_error $"Compiler error: Expected a layout 
> type (5).\nGot: %s{show_ty x}"
>             fun x ->
>                 let mutable dirty = false
>                 let r = memoize dict (memoize dict' (fun x -> dirty <- true; f 
> x)) x
>                 if dirty then print true show r
>                 r
> 
>         let jp is_type f show =
>             let dict = Dictionary(HashIdentity.Structural)
>             let f x = f (x, dict.Count)
>             fun x ->
>                 let mutable dirty = false
>                 let r = memoize dict (fun x -> dirty <- true; f x) x
>                 if dirty then print is_type show r
>                 r
> 
>         let cupy_ty x = env.ty_to_data x |> data_free_vars |> cupy_ty
>         let rec binds_start (args : TyV [[]]) (s : CodegenEnv) (x : TypedBind 
> [[]]) = binds (refc_prepass Set.empty (Set args) x).g_decr s BindsTailEnd x
>         and binds g_decr (s : CodegenEnv) (ret : BindsReturnPython) (stmts : 
> TypedBind [[]]) = 
>             let s_len = s.text.Length
>             let tup_destruct (a,b) =
>                 if 0 < Array.length a then
>                     let a = args a
>                     let b = Array.map show_w (data_term_vars b) |> String.concat
> ", "
>                     sprintf "%s = %s" a b |> line s
>             Array.iter (fun x ->
>                 let _ =
>                     let f (g : Dictionary<_,_>) = match g.TryGetValue(x) with 
> true, x -> Seq.toArray x | _ -> [[||]]
>                     match args (f g_decr) with "" -> () | x -> sprintf "del %s" 
> x |> line s
>                 match x with
>                 | TyLet(d,trace,a) ->
>                     try op g_decr s (BindsLocal (data_free_vars d)) a
>                     with :? CodegenError as e -> raise_codegen_error' trace 
> (e.Data0,e.Data1)
>                 | TyLocalReturnOp(trace,a,_) ->
>                     try op g_decr s ret a
>                     with :? CodegenError as e -> raise_codegen_error' trace 
> (e.Data0,e.Data1)
>                 | TyLocalReturnData(d,trace) ->
>                     try match ret with
>                         | BindsLocal l -> tup_destruct (l, d) 
>                         | BindsTailEnd -> line s $"return {tup_data' d}"
>                     with :? CodegenError as e -> raise_codegen_error' trace 
> (e.Data0,e.Data1)
>                 ) stmts
>             if s.text.Length = s_len then line s "pass"
>         and tup_data' x = 
>             match Array.map show_w (data_term_vars x) with
>             | [[||]] -> ""
>             | [[|x|]] -> x
>             | args -> String.concat ", " args
>         and tup_data x = 
>             match Array.map show_w (data_term_vars x) with
>             | [[||]] -> "None"
>             | [[|x|]] -> x
>             | args -> sprintf "(%s)" (String.concat ", " args)
>         and tyv x =
>             match x with
>             | YUnion a ->
>                 match a.Item.layout with
>                 | UHeap -> sprintf "UH%i" (uheap a).tag
>                 | UStack -> sprintf "US%i" (ustack a).tag
>             | YLayout(_,lay) as a -> 
>                 match lay with
>                 | Heap -> sprintf "Heap%i" (heap a).tag
>                 | HeapMutable -> sprintf "Mut%i" (mut a).tag
>                 | StackMutable -> raise_codegen_error "Compiler error: The 
> Python backend doesn't support stack mutable layout types."
>             | YMacro [[Text "backend_switch "; Type (YRecord r)]] ->
>                 match r |> Map.tryPick (fun (_, k) v -> if k = 
> backend_namePython then Some v else None) with
>                 | Some x -> tup_ty x
>                 | None -> raise_codegen_error $"In the backend_switch, expected 
> a record with the '{backend_namePython}' field."
>             | YMacro a ->
>                 a
>                 |> List.map (function
>                     | Text a -> a
>                     | Type a -> tup_ty a
>                     | TypeLit a -> type_litPython a
>                 )
>                 |> String.concat ""
>             | YPrim a -> primPython a
>             | YArray a -> "(cp if cuda else np).ndarray"
>             | YFun(a,b,FT_Vanilla) -> 
>                 let a = env.ty_to_data a |> data_free_vars |> Array.map (fun 
> (L(_,t)) -> tyv t) |> String.concat ", "
>                 $"Callable[[[[{a}]], {tup_ty b}]]"
>             | YExists -> raise_codegen_error "Existentials are not supported at 
> runtime. They are a compile time feature only."
>             | YForall -> raise_codegen_error "Foralls are not supported at 
> runtime. They are a compile time feature only."
>             | a -> raise_codegen_error $"Complier error: Type not supported in 
> the codegen.\nGot: %A{a}"
>         and tup_ty x =
>             match env.ty_to_data x |> data_free_vars |> Array.map (fun (L(_,t)) 
> -> tyv t) with
>             | [[||]] -> "None"
>             | [[|x|]] -> x
>             | x -> String.concat ", " x |> sprintf "Tuple[[%s]]"
>         and op g_decr s (ret : BindsReturnPython) a =
>             let return' (x : string) =
>                 match ret with
>                 | BindsTailEnd -> line s $"return {x}"
>                 | BindsLocal ret -> line s (if ret.Length = 0 then x else 
> sprintf "%s = %s" (args ret) x)
>             let jp (a,b) =
>                 let args = args b
>                 match a with
>                 | JPMethod(a,b) -> sprintf "method%i(%s)" (method (a,b)).tag 
> args
>                 | JPClosure(a,b) -> sprintf "Closure%i(%s)" (closure (a,b)).tag 
> args
>             let layout_index i x' =
>                 x' |> Array.map (fun (L(i',_)) -> $"v{i}.v{i'}")
>                 |> String.concat ", "
>                 |> return'
> 
>             match a with
>             | TySizeOf t -> raise_codegen_error $"The following type in `sizeof`
> is not supported in the Python back end.\nGot: {show_ty t}"
>             | TyMacro a ->
>                 // System.Console.WriteLine $"CodegenPython.TyMacro / a: %A{a}"
>                 a
>                 |> List.map (function
>                     | CMText x when x |> SpiralSm.starts_with "$\"" ->
>                         let x = x |> SpiralSm.replace "%A{" "{"
>                         $"f\"{x.[[2..]]}"
>                     | CMText x -> x
>                     | CMTerm x -> tup_data x
>                     | CMType x -> tup_ty x
>                     | CMTypeLit a -> type_litPython a
>                 )
>                 |> String.concat ""
>                 |> return'
>             | TyIf(cond,tr,fl) ->
>                 line s (sprintf "if %s:" (tup_data cond))
>                 binds g_decr (indent s) ret tr
>                 line s "else:"
>                 binds g_decr (indent s) ret fl
>             | TyJoinPoint(a,args) -> return' (jp (a, args))
>             | TyBackend(a,b,c) -> return' (backend_handler (a,b,c))
>             | TyWhile(a,b) ->
>                 line s (sprintf "while %s:" (jp a))
>                 binds g_decr (indent s) (BindsLocal [[||]]) b
>             | TyDo a ->
>                 binds g_decr s ret a
>             | TyIndent a ->
>                 binds g_decr (indent s) ret a
>             | TyIntSwitch(L(v_i,_),on_succ,on_fail) ->
>                 Array.iteri (fun i x ->
>                     if i = 0 then line s $"if v{v_i} == {i}:"
>                     else line s $"elif v{v_i} == {i}:"
>                     binds g_decr (indent s) ret x
>                     ) on_succ
>                 line s "else:"
>                 binds g_decr (indent s) ret on_fail
>             | TyUnionUnbox(is,x,on_succs,on_fail) ->
>                 let case_tags = x.Item.tags
>                 line s (sprintf "match %s:" (is |> List.map (fun (L(i,_)) -> 
> $"v{i}") |> String.concat ", "))
>                 let s = indent s
>                 let prefix = 
>                     match x.Item.layout with
>                     | UHeap -> sprintf "UH%i" (uheap x).tag
>                     | UStack -> sprintf "US%i" (ustack x).tag
>                 Map.iter (fun k (a,b) ->
>                     let i = case_tags.[[k]]
>                     let cases = 
>                         a |> List.map (fun a ->
>                             let x = data_free_vars a
>                             let g_decr' = get_default g_decr (Array.head b) (fun
> () -> Set.empty)
>                             let x,g_decr' = Array.mapFold (fun g_decr (L(i,_) as
> v) -> if Set.contains v g_decr then "_", Set.remove v g_decr else sprintf "v%i" 
> i, g_decr) g_decr' x
>                             g_decr.[[Array.head b]] <- g_decr'
>                             sprintf "%s_%i(%s)" prefix i (String.concat ", " x)
>                             )
>                         |> String.concat ", "
>                     line s (sprintf "case %s: # %s" cases k)
>                     binds g_decr (indent s) ret b
>                     ) on_succs
>                 line s "case t:"
>                 match on_fail with
>                 | Some b -> binds g_decr (indent s) ret b
>                 | None -> line (indent s) "raise Exception(f'Pattern matching 
> miss. Got: {t}')"
>             | TyUnionBox(a,b,c') ->
>                 let c = c'.Item
>                 let i = c.tags.[[a]]
>                 let vars = tup_data' b
>                 match c.layout with
>                 | UHeap -> sprintf "UH%i_%i(%s)" (uheap c').tag i vars
>                 | UStack -> sprintf "US%i_%i(%s)" (ustack c').tag i vars
>                 |> return'
>             | TyToLayout(a,b) -> 
>                 match b with
>                 | YLayout(_,layout) -> 
>                     match layout with
>                     | Heap -> sprintf "Heap%i(%s)" (heap b).tag (tup_data' a)
>                     | HeapMutable -> sprintf "Mut%i(%s)" (mut b).tag (tup_data' 
> a)
>                     | StackMutable -> raise_codegen_error "The Python backend 
> doesn't support stack mutable layout types."
>                 | _ -> raise_codegen_error "Compiler error: Expected a layout 
> type (6)."
>                 |> return'
>             | TyLayoutIndexAll(L(i,YLayout(_,lay) & a)) -> 
>                 match lay with
>                 | Heap -> heap a 
>                 | HeapMutable -> mut a
>                 | StackMutable -> raise_codegen_error "The Python backend 
> doesn't support indexing into stack mutable layout types."
>                 |> fun x -> x.free_vars |> layout_index i
>             | TyLayoutIndexByKey(L(i,YLayout(_,lay) & a),key) ->
>                 match lay with
>                 | Heap -> heap a 
>                 | HeapMutable -> mut a
>                 | StackMutable -> raise_codegen_error "The Python backend 
> doesn't support indexing into stack mutable layout types."
>                 |> fun x ->
>                     x.free_vars_by_key
>                     |> Map.tryPick (fun (_, k) v -> if k = key then Some v else 
> None)
>                     |> Option.iter (layout_index i)
>             | TyLayoutIndexAll _ | TyLayoutIndexByKey _ -> raise_codegen_error 
> "Compiler error: Expected the TyV in layout index to be a layout type."
>             | TyLayoutMutableSet(L(i,t),b,c) ->
>                 let a = List.fold (fun s k ->
>                     match s with
>                     | DRecord l -> l |> Map.pick (fun (_,k') v -> if k = k' then
> Some v else None)
>                     | _ -> raise_codegen_error "Compiler error: Expected a 
> record.") (mut t).data b
>                 Array.iter2 (fun (L(i',_)) b -> line s $"v{i}.v{i'} = {show_w 
> b}") (data_free_vars a) (data_term_vars c)
>             | TyArrayLiteral(a,b) -> return' <| sprintf "(cp if cuda else 
> np).array([[%s]],dtype=%s)" (List.map tup_data' b |> String.concat ", ") 
> (cupy_ty a)
>             | TyArrayCreate(a,b) -> return' $"(cp if cuda else 
> np).empty({tup_data b},dtype={cupy_ty a})" 
>             | TyFailwith(a,b) -> line s $"raise Exception({tup_data' b})"
>             | TyConv(a,b) -> return' $"{tyv a}({tup_data b})"
>             | TyApply(L(i,_),b) -> return' $"v{i}({tup_data' b})"
>             | TyArrayLength(a,b) -> return' $"{tup_data b}.__len__()"
>             | TyStringLength(a,b) -> return' $"len({tup_data b})"
>             | TyOp(Global,[[DLit (LitString x)]]) -> global' x
>             | TyOp(op,l) ->
>                 match op, l with
>                 | ToPythonRecord,[[DRecord x]] -> Map.foldBack (fun k v l -> 
> $"'{k}': {tup_data v}" :: l) x [[]] |> String.concat ", " |> sprintf "{%s}"
>                 | ToPythonNamedTuple,[[n;DRecord x]] -> 
>                     import "collections"
>                     let field_names = Map.foldBack (fun k v l -> $"'{k}'" :: l) 
> x [[]] |> String.concat ", "
>                     let args = Map.foldBack (fun k v l -> tup_data v :: l) x 
> [[]] |> String.concat ", "
>                     $"collections.namedtuple({tup_data 
> n},[[{field_names}]])({args})"
>                 | Dyn,[[a]] -> tup_data a
>                 | TypeToVar, _ -> raise_codegen_error "The use of `` should 
> never appear in generated code."
>                 | StringIndex, [[a;b]] -> sprintf "%s[[%s]]" (tup_data a) 
> (tup_data b)
>                 | StringSlice, [[a;b;c]] -> sprintf "%s[[%s:%s]]" (tup_data a) 
> (tup_data b) (tup_data c)
>                 | ArrayIndex, [[a;b]] -> sprintf "%s[[%s]].item()" (tup_data a) 
> (tup_data b)
>                 | ArrayIndexSet, [[a;b;c]] -> 
>                     match tup_data' c with
>                     | "" -> "pass # void array set"
>                     | c -> sprintf "%s[[%s]] = %s" (tup_data a) (tup_data b) c
>                 // Math
>                 | Add, [[a;b]] -> sprintf "%s + %s" (tup_data a) (tup_data b)
>                 | Sub, [[a;b]] -> sprintf "%s - %s" (tup_data a) (tup_data b)
>                 | Mult, [[a;b]] -> sprintf "%s * %s" (tup_data a) (tup_data b)
>                 | Div, [[(DV(L(_,YPrim (Float32T | Float64T))) | DLit(LitFloat32
> _ | LitFloat64 _)) & a;b]] -> sprintf "%s / %s" (tup_data a) (tup_data b)
>                 | Div, [[a;b]] -> sprintf "%s // %s" (tup_data a) (tup_data b)
>                 | Mod, [[a;b]] -> sprintf "%s %% %s" (tup_data a) (tup_data b)
>                 | Pow, [[a;b]] -> sprintf "pow(%s,%s)" (tup_data a) (tup_data b)
>                 | LT, [[a;b]] -> sprintf "%s < %s" (tup_data a) (tup_data b)
>                 | LTE, [[a;b]] -> sprintf "%s <= %s" (tup_data a) (tup_data b)
>                 | EQ, [[a;b]] -> sprintf "%s == %s" (tup_data a) (tup_data b)
>                 | NEQ, [[a;b]] -> sprintf "%s != %s" (tup_data a) (tup_data b)
>                 | GT, [[a;b]] -> sprintf "%s > %s" (tup_data a) (tup_data b)
>                 | GTE, [[a;b]] -> sprintf "%s >= %s" (tup_data a) (tup_data b)
>                 | BoolAnd, [[a;b]] -> sprintf "%s and %s" (tup_data a) (tup_data
> b)
>                 | BoolOr, [[a;b]] -> sprintf "%s or %s" (tup_data a) (tup_data 
> b)
>                 | BitwiseAnd, [[a;b]] -> sprintf "%s & %s" (tup_data a) 
> (tup_data b)
>                 | BitwiseOr, [[a;b]] -> sprintf "%s | %s" (tup_data a) (tup_data
> b)
>                 | BitwiseXor, [[a;b]] -> sprintf "%s ^ %s" (tup_data a) 
> (tup_data b)
>                 | BitwiseComplement, [[a]] -> sprintf "~%s" (tup_data a)
> 
>                 | ShiftLeft, [[a;b]] -> sprintf "%s << %s" (tup_data a) 
> (tup_data b)
>                 | ShiftRight, [[a;b]] -> sprintf "%s >> %s" (tup_data a) 
> (tup_data b)
> 
>                 | Neg, [[x]] -> sprintf "-%s" (tup_data x)
>                 | Log, [[x]] -> import "math"; sprintf "math.log(%s)" (tup_data 
> x)
>                 | Exp, [[x]] -> import "math"; sprintf "math.exp(%s)" (tup_data 
> x)
>                 | Tanh, [[x]] -> import "math"; sprintf "math.tanh(%s)" 
> (tup_data x)
>                 | Sqrt, [[x]] -> import "math"; sprintf "math.sqrt(%s)" 
> (tup_data x)
>                 | Sin, [[x]] -> import "math"; sprintf "math.sin(%s)" (tup_data 
> x)
>                 | Cos, [[x]] -> import "math"; sprintf "math.cos(%s)" (tup_data 
> x)
>                 | NanIs, [[x]] -> import "math"; sprintf "math.isnan(%s)" 
> (tup_data x)
>                 | UnionTag, [[DUnion(_,l) | DV(L(_,YUnion l)) as x]] -> sprintf 
> "%s.tag" (tup_data x) 
>                 | _ -> raise_codegen_error <| sprintf "Compiler error: %A with 
> %i args not supported" op l.Length
>                 |> return'
>         and uheap : _ -> UnionRecPython = union (fun s x ->
>             let cases = Array.init x.free_vars.Count (fun i -> 
> $"\"UH{x.tag}_{i}\"") |> function [[|x|]] -> x | x -> x |> String.concat ", " |>
> sprintf "Union[[%s]]"
>             fwd_dcls.Add $"UH{x.tag} = {cases}"
>             let mutable i = 0
>             x.free_vars |> Map.iter (fun k a ->
>                 line s $"class UH{x.tag}_{i}(NamedTuple): # {k}"
>                 let s = indent s
>                 a |> Array.iter (fun (L(i,t)) -> line s $"v{i} : {tyv t}")
>                 line s $"tag = {i}"
>                 i <- i+1
>                 )
>             )
>         and ustack : _ -> UnionRecPython = union (fun s x ->
>             let mutable i = 0
>             x.free_vars |> Map.iter (fun k a ->
>                 line s $"class US{x.tag}_{i}(NamedTuple): # {k}"
>                 let s = indent s
>                 a |> Array.iter (fun (L(i,t)) -> line s $"v{i} : {tyv t}")
>                 line s $"tag = {i}"
>                 i <- i+1
>                 )
>             let cases = Array.init x.free_vars.Count (fun i -> $"US{x.tag}_{i}")
> |> function [[|x|]] -> x | x -> x |> String.concat ", " |> sprintf "Union[[%s]]"
>             line s $"US{x.tag} = {cases}"
>             )
>         and heap : _ -> LayoutRecPython = layout (fun s x -> 
>             line s $"class Heap{x.tag}(NamedTuple):"
>             let s = indent s
>             if x.free_vars.Length = 0 then line s "pass" 
>             else x.free_vars |> Array.iter (fun (L(i,t)) -> line s $"v{i} : {tyv
> t}")
>             )
>         and mut : _ -> LayoutRecPython = layout (fun s x -> 
>             line s "@dataclass"
>             line s $"class Mut{x.tag}:"
>             let s = indent s
>             if x.free_vars.Length = 0 then line s "pass" 
>             else x.free_vars |> Array.iter (fun (L(i,t)) -> line s $"v{i} : {tyv
> t}")
>             )
>         and method : _ -> MethodRecPython =
>             jp false (fun ((jp_body,key & (C(args,_))),i) ->
>                 match (fst env.join_point_method.[[jp_body]]).[[key]] with
>                 | Some a, Some range, _ -> {tag=i; free_vars=rdata_free_vars 
> args; range=range; body=a}
>                 | _ -> raise_codegen_error "Compiler error: The method 
> dictionary is malformed"
>                 ) (fun s x ->
>                 let method_args = x.free_vars |> Array.map (fun (L(i,t)) -> 
> $"v{i} : {tyv t}") |> String.concat ", "
>                 line s $"def method{x.tag}({method_args}) -> {tup_ty x.range}:"
>                 binds_start x.free_vars (indent s) x.body
>                 )
>         and closure : _ -> ClosureRecPython =
>             jp true (fun ((jp_body,key & (C(args,_,fun_ty))),i) ->
>                 match fun_ty with
>                 | YFun(domain,range,FT_Vanilla) ->
>                     match (fst env.join_point_closure.[[jp_body]]).[[key]] with
>                     | Some(domain_args, body) -> {tag=i; 
> free_vars=rdata_free_vars args; domain=domain; domain_args=data_free_vars 
> domain_args; range=range; body=body}
>                     | _ -> raise_codegen_error "Compiler error: The method 
> dictionary is malformed"
>                 | YFun _ -> raise_codegen_error "Non-standard functions are not 
> supported in the Python backend."
>                 | _ -> raise_codegen_error "Compiler error: Unexpected type in 
> the closure join point."
>                 ) (fun s x ->
>                 let env_args = x.free_vars |> Array.map (fun (L(i,t)) -> 
> $"env_v{i} : {tyv t}") |> String.concat ", "
>                 line s $"def Closure{x.tag}({env_args}):"
>                 let s = indent s
>                 let inner_args = x.domain_args |> Array.map (fun (L(i,t)) -> 
> $"v{i} : {tyv t}") |> String.concat ", "
>                 line s $"def inner({inner_args}) -> {tup_ty x.range}:"
>                 let _ =
>                     let s = indent s
>                     if x.free_vars.Length > 0 then 
>                         let nonlocal_args = x.free_vars |> Array.map (fun 
> (L(i,t)) -> $"env_v{i}") |> String.concat ", "
>                         line s $"nonlocal {nonlocal_args}"
>                         x.free_vars |> Array.map (fun (L(i,t)) -> $"v{i} = 
> env_v{i}") |> String.concat "; " |> line s
>                     binds_start x.free_vars s x.body
>                 line s "return inner"
>                 )
> 
>         import "cupy as cp"
>         import "numpy as np"
>         from "dataclasses import dataclass"
>         from "typing import NamedTuple, Union, Callable, Tuple"
>         env.globals.Add "i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; 
> u16 = int; u32 = int; u64 = int; f32 = float; f64 = float; char = str; string = 
> str"
>         env.globals.Add "cuda = False"
>         env.globals.Add ""
> 
>         let main = System.Text.StringBuilder()
>         let s = {text=main; indent=0}
>         
>         line s "def main_body():"
>         binds_start [[||]] (indent s) x
>         s.text.AppendLine() |> ignore
> 
>         line s "def main():"
>         line (indent s) "r = main_body()"
>         line (indent s) "if cuda: cp.cuda.get_current_stream().synchronize() # 
> This line is here so the `__trap()` calls on the kernel aren't missed."
>         line (indent s) "return r"
>         s.text.AppendLine() |> ignore
> 
>         line s "if __name__ == '__main__': result = main(); None if result is 
> None else print(result)"
> 
>         let program = System.Text.StringBuilder()
>         env.globals |> Seq.iter (fun x -> program.AppendLine(x) |> ignore)
>         fwd_dcls |> Seq.iter (fun x -> program.AppendLine(x) |> ignore)
>         types |> Seq.iter (fun x -> program.Append(x) |> ignore)
>         functions |> Seq.iter (fun x -> program.Append(x) |> ignore)
>         program.Append(main).ToString()
> 
>     let codegenPython (default_env : DefaultEnv) env x = 
>         let cuda_kernels = System.Text.StringBuilder().AppendLine("kernel = 
> r\"\"\"")
>         let g = Dictionary(HashIdentity.Structural)
>         let globals, fwd_dcls, types, functions, main_defs as ars = 
> ResizeArray(), ResizeArray(), ResizeArray(), ResizeArray(), ResizeArray()
> 
>         let codegen = CodegenCuda.codegenCuda default_env ars env
>         let python_code =
>             codegen' (fun (jp_body,key,r') ->
>                 let backend_name = (fst jp_body).node
>                 match backend_name with
>                 | "Cuda" -> 
>                     memoize g (fun (jp_body,key & (C(args,_))) ->
>                         let args = rdata_free_vars args
>                         match (fst env.join_point_method.[[jp_body]]).[[key]] 
> with
>                         | Some a, Some _, _ -> codegen args a
>                         | _ -> raise_codegen_error "Compiler error: The method 
> dictionary is malformed"
>                         string g.Count
>                         ) (jp_body,key)
>                 | x -> raise_codegen_error_backend r' $"The Python + Cuda 
> backend does not support the {x} backend."
>                 ) env x
> 
>         globals |> Seq.iter (fun x -> cuda_kernels.AppendLine(x) |> ignore)
>         fwd_dcls |> Seq.iter (fun x -> cuda_kernels.Append(x) |> ignore)
>         types |> Seq.iter (fun x -> cuda_kernels.Append(x) |> ignore)
>         functions |> Seq.iter (fun x -> cuda_kernels.Append(x) |> ignore)
>         main_defs |> Seq.iter (fun x -> cuda_kernels.Append(x) |> ignore)
> 
>         cuda_kernels
>             .AppendLine("\"\"\"")
>             .AppendLine(System.IO.File.ReadAllText(System.IO.Path.Join(
>     #if !INTERACTIVE
>                 // AppDomain.CurrentDomain.BaseDirectory,
>                 System.IO.Path.Combine (SpiralFileSystem.get_workspace_root (), 
> "deps/The-Spiral-Language/The Spiral Language 2"),
>     #else
>                 System.IO.Path.Combine (SpiralFileSystem.get_workspace_root (), 
> "deps/The-Spiral-Language/The Spiral Language 2"),
>     #endif
>                 "reference_counting.py"
>             )))
>             .Append(python_code).ToString()
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> ── [ 3.20s - diagnostics ] ─────────────────────────────────────────────────────
> │ input.fsx (409,67)-(409,70) typecheck warning This and other
> recursive references to the object(s) being defined will be checked for 
> initialization-soundness at runtime through the use of a delayed reference. This
> is because you are defining one or more recursive objects, rather than recursive
> functions. This warning may be suppressed by using '#nowarn "40"' or 
> '--nowarn:40'.
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## WDiff
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> // open System
> open System.IO
> open System.Collections.Generic
> 
> // Full name: Microsoft.FSharp.Core.Result<_,_>.Ok
> 
> open FSharp.Core
> 
> open Hopac
> open Hopac.Infixes
> open Hopac.Extensions
> open Hopac.Stream
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### process_errors
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let process_errors line (ers : LineTokenErrors list) : RString list =
>     ers |> List.mapi (fun i l -> 
>         let i = line + i
>         l |> List.map (fun (r,x) -> x, ({|line=i; character=r.from|}, {|line=i; 
> character=r.nearTo|}))
>         )
>     |> List.concat
>     |> List.groupBy snd
>     |> List.map (fun (k,v) -> k, process_error (List.map fst v))
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### tokenize_replace
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> /// Replaces the token lines and updates the errors given the edit.
> let tokenize_replace (lines : _ FSharpx.Collections.PersistentVector 
> FSharpx.Collections.PersistentVector, errors : _ list) (edit : SpiEdit) =
>     let toks, ers = Array.map tokenize edit.lines |> Array.unzip
>     let lines = replace edit.from edit.nearTo toks lines
>     let errors = 
>         let adj = edit.lines.Length - (edit.nearTo - edit.from)
>         errors |> List.choose (fun ((a : VSCPos,b),c as x) -> 
>             if edit.from <= a.line && a.line < edit.nearTo then None
>             elif edit.nearTo <= a.line && adj <> 0 then Some (add_line_to_range 
> adj (a,b),c)
>             else Some x
>             )
>     let errors = List.append errors (process_errors edit.from (Array.toList 
> ers))
>     lines, errors
> 
> type [[<ReferenceEquality>]] TokenizerState = {
>     lines_text : string FSharpx.Collections.PersistentVector
>     lines_token : LineTokens
>     blocks : LineTokens Block list
>     errors : RString list
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### wdiff_tokenizer_init
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let wdiff_tokenizer_init = { lines_text = 
> FSharpx.Collections.PersistentVector.empty; lines_token = 
> FSharpx.Collections.PersistentVector.empty; blocks = [[]]; errors = [[]] }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### replace'
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> /// Immutably updates the state based on the request. Does diffing to make the 
> operation efficient.
> /// It is possible for the server to go out of sync, in which case an error is 
> returned.
> let replace' (state : TokenizerState) (edit : SpiEdit) =
>     let lines_text = replace edit.from edit.nearTo edit.lines state.lines_text
>     let lines_token, errors = tokenize_replace (state.lines_token, state.errors)
> edit
>     let blocks = wdiff_block_all state.blocks (lines_token, edit.lines.Length, 
> edit.from, edit.nearTo)
>     {lines_text=lines_text; lines_token=lines_token; errors=errors; 
> blocks=blocks}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### wdiff_tokenizer_all
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let wdiff_tokenizer_all (state : TokenizerState) text = 
>     let text = lines text
>     let text' = state.lines_text |> Seq.toArray
>     let rec loop (index,text : string [[]] as x) i = if i < min text.Length 
> state.lines_text.Length && index text i = index text' i then loop x (i+1) else i
>     let from = loop ((fun text i -> text.[[i]]),text) 0
>     if from = text.Length then state else
>     let text = text.[[from..]]
>     let fromRev = loop ((fun text i -> text.[[text.Length-1-i]]),text) 0
>     replace' state {|from=from; nearTo=text'.Length-fromRev; 
> lines=text.[[..text.Length-1-fromRev]]|}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### wdiff_tokenizer_edit
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let wdiff_tokenizer_edit (state : TokenizerState) (edit : SpiEdit) = 
>     if edit.nearTo <= state.lines_text.Length then Ok (replace' state edit)
>     else Error "The edit is out of bounds and cannot be applied. The language 
> server and the editor are out of sync. Try reopening the file being edited."
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### semantic_updates_apply
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let semantic_updates_apply (block : LineTokens) updates =
>     Seq.fold (fun block (c : VectorCord, l) -> 
>         let x =
>             let r, x = FSharpx.Collections.PersistentVector.nthNth c.row c.col 
> block
>             let x =
>                 match x with
>                 | TokVar(a,_) -> TokVar(a,l)
>                 | TokSymbol(a,_) -> TokSymbol(a,l)
>                 | TokOperator(a,_) -> TokOperator(a,l)
>                 | TokUnaryOperator(a,_) -> TokUnaryOperator(a,l)
>                 | x -> failwithf "Compiler error: Cannot change the semantic 
> legend for the %A token." x
>             r, x
>         FSharpx.Collections.PersistentVector.updateNth c.row c.col x block
>         ) block updates
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### parse_block
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let parse_block default_env is_top_down (block : LineTokens) =
>     let comments, cords_tokens = 
>         Array.init block.Length (fun line ->
>             let x = block.[[line]]
>             let comment, len = match 
> FSharpx.Collections.PersistentVector.tryLast x with Some (r, TokComment c) -> 
> Some (r, c), x.Length-1 | _ -> None, x.Length
>             let tokens = Array.init len (fun i ->
>                 let r, x = x.[[i]] 
>                 {|row=line; col=i|}, (({| line=line; character=r.from |}, {| 
> line=line; character=r.nearTo |}), x)
>                 )
>             comment, tokens
>             )
>         |> Array.unzip
>     let cords, tokens = Array.unzip (Array.concat cords_tokens)
> 
>     let semantic_updates = ResizeArray()
>     let env = {
>         tokens_cords = cords; semantic_updates = semantic_updates
>         comments = comments; tokens = tokens; i = ref 0; is_top_down = 
> is_top_down
>         default_env = default_env
>         }
>     {result=parseBlockParsing env; semantic_tokens=semantic_updates_apply block 
> semantic_updates}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### wdiff_parse_init
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let wdiff_parse_init is_top_down : ParserState = {is_top_down=is_top_down; 
> blocks=[[]]}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### wdiff_parse
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let wdiff_parse default_env (state : ParserState) (unparsed_blocks : LineTokens 
> Block list) =
>     let dict = Dictionary(HashIdentity.Reference)
>     // Offset should be ignored when memoizing the results of parsing.
>     List.iter (fun (a,b) -> dict.Add(a,b.block)) state.blocks
>     let blocks = unparsed_blocks |> List.map (fun x -> 
>         x.block, {block=memoize dict (fun a -> Hopac.memo(Job.thunk <| fun () ->
> (parse_block default_env state.is_top_down) a)) x.block; offset=x.offset}
>         )  
>     {state with blocks = blocks }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### ModuleState
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type ModuleState = { tokenizer : TokenizerState; bundler : BlockBundleState; 
> parser : ParserState }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### wdiff_module_init
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let wdiff_module_init is_top_down = {tokenizer = wdiff_tokenizer_init; bundler =
> wdiff_block_bundle_init; parser = wdiff_parse_init is_top_down}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### wdiff_module_body
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let wdiff_module_body default_env state tokenizer =
>     if state.tokenizer = tokenizer then state else
>     let parser = wdiff_parse default_env state.parser tokenizer.blocks
>     let bundler = wdiff_block_bundle state.bundler parser
>     {tokenizer=tokenizer; parser=parser; bundler=bundler}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### wdiff_module_edit
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let wdiff_module_edit default_env (state : ModuleState) x = wdiff_tokenizer_edit
> state.tokenizer x |> Result.map (wdiff_module_body default_env state)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### wdiff_module_all
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let wdiff_module_all default_env state x = wdiff_tokenizer_all state.tokenizer x
> |> wdiff_module_body default_env state
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### wdiff_module_init_all
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let wdiff_module_init_all default_env is_top_down x = wdiff_module_all 
> default_env (wdiff_module_init is_top_down) x
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### FileState<'input,'result,'state>
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type [[<ReferenceEquality>]] FileState<'input,'result,'state> = { input : 
> 'input; result : 'result; state : 'state }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### FileFuns<'a,'b,'state>
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type FileFuns<'a,'b,'state> =
>     abstract member eval : 'state * 'a -> 'b
>     abstract member diff : 'state * 'b * 'a -> 'b
>     abstract member init : 'a -> FileState<'a,'b,'state>
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### TypecheckerStateValue
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type TypecheckerStateValue = Bundle option * InferResult * TopEnv
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### TypecheckerStatePropagated
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type TypecheckerStatePropagated = (bool * TopEnv) Promise
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### TypecheckerState
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type TypecheckerState = FileState<PackageId * ModuleId * BlockBundleState, 
> TypecheckerStateValue Stream, TypecheckerStatePropagated>
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### typecheck
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rec typecheck (package_id,module_id,env : TopEnv) x = x >>=* function
>     | Cons((_,b : BlockBundleValue), ls) ->
>         match b.bundle with
>         | Some bundle ->
>             let x = infer package_id module_id env bundle
>             let adds = match x.top_env_additions with AOpen x | AInclude x -> x
>             let env = unionInfer adds env
>             Job.result (Cons((b.bundle,x,env),typecheck 
> (package_id,module_id,env) ls))
>         | None ->
>             typecheck (package_id,module_id,env) ls :> _ Job
>     | Nil ->
>         Job.result Nil
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### diff
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rec diff (package_id,module_id,env) (result,input : BlockBundleState) = 
>     let tc () = typecheck (package_id,module_id,env) input
>     if Promise.Now.isFulfilled result then
>         input >>** fun input ->
>         match Promise.Now.get result,input with
>         | Cons((b',_,env as x),next), Cons((_,b),bs) when b' = b.bundle -> 
> Promise.Now.withValue (Cons(x,diff (package_id,module_id,env) (next,bs)))
>         | _ -> tc()
>     else tc()
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### funs_file_tc
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let funs_file_tc = {new FileFuns<PackageId * ModuleId * BlockBundleState, 
> TypecheckerStateValue Stream, TypecheckerStatePropagated> with
>     member _.eval(state,(pid,mid,x)) = 
>         state >>=* fun (_,env) -> 
>         typecheck (pid,mid,env) x
>     member _.diff(state,b,(pid,mid,a)) =
>         state >>=* fun (_,env) -> diff (pid,mid,env) (b,a)
>     member _.init x = {
>         input = x
>         result = Promise.Now.never()
>         state = Promise.Now.never()
>         }
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### wdiff_file_update_state
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let wdiff_file_update_state (funs : FileFuns<'a,'b,'state>) (state : 
> FileState<'a,'b,'state>) (x : 'state) =
>     if state.state = x then state else {state with state=x; 
> result=funs.eval(x,state.input)}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### wdiff_file_update_input
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let wdiff_file_update_input (funs : FileFuns<'a,'b,'state>) (state : 
> FileState<'a,'b,'state>) (x : 'a) =
>     if state.input = x then state else {state with input=x; 
> result=funs.diff(state.state,state.result,x)}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### wdiff_file
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let wdiff_file (funs : FileFuns<'a,'b,'state>) (state : FileState<'a,'b,'state>)
> (a,b) =
>     if state.state = a then wdiff_file_update_input funs state b else {state=a; 
> input=b; result=funs.eval(a,b)}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### ProjFilesTree
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type ProjFilesTree =
>     | File of module_id: ModuleId * path: string * name: string option
>     | Directory of dir_id: DirId * name: string * ProjFilesTree list
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### ProjFiles
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type ProjFiles = { tree : ProjFilesTree list; num_dirs : int; num_files : int }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### ProjFileFuns<'a,'state>
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type ProjFileFuns<'a,'state> =
>     abstract member file : string option * 'state * 'a -> 'a * 'state
>     abstract member union : 'state * 'state -> 'state
>     abstract member in_module : string * 'state -> 'state
>     abstract member default' : DefaultEnv -> 'state
>     abstract member empty : 'state
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### ProjFilesState<'a,'state>
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type [[<ReferenceEquality>]] ProjFilesState<'a,'state> = {
>     init : 'state
>     uids_file : ('a * 'state) [[]]
>     uids_directory : 'state [[]]
>     files : ProjFiles
>     result : 'state
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### proj_files_diff
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let proj_files_diff (uids_file : ('a * 'b) [[]], uids_directory : 'b [[]], 
> files) (uids, files') =
>     let uids_file' = Array.zeroCreate (Array.length uids)
>     let uids_directory' = Array.zeroCreate files'.num_dirs
>     // Ref equality is done first for performance. Most of the time the strings 
> will be the same.
>     let eq a b = System.Object.ReferenceEquals(a,b) || a = b
>     let rec loop = function
>         | File(mid,path,name), File(mid',path',name') when mid = mid' && eq path
> path' && eq name name' -> 
>             let x = uids_file.[[mid]]
>             if uids.[[mid]] = fst x then uids_file'.[[mid]] <- x; true else 
> false
>         | Directory(uid,name,l), Directory(uid',name',l') when uid = uid' && eq 
> name name' && list (l,l') -> 
>             uids_directory'.[[uid]] <- uids_directory.[[uid]]; true
>         | _ -> false
>     and list = function
>         | x :: xs, y :: ys -> loop (x,y) && list (xs,ys)
>         | _ -> false
>     if list (files.tree, files'.tree) then None else Some 
> (uids_file',uids_directory')
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### proj_files
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let proj_files (funs : ProjFileFuns<'a,'state>) uids_file uids_directory uids s 
> l =
>     let inline memo (uids : _ [[]]) uid f = 
>         let x = uids.[[uid]]
>         if isNull (box x) then let x = f() in uids.[[uid]] <- x; x
>         else x
>     let rec loop state = function
>         | File(mid,_,name) -> memo uids_file mid (fun () -> 
> funs.file(name,state,Array.get uids mid)) |> snd
>         | Directory(uid,name,l) -> memo uids_directory uid (fun () -> 
> funs.in_module(name,list state l))
>     and list s l = 
>         List.fold (fun (empty,big) x -> 
>             let small = loop big x
>             funs.union(small,empty), funs.union(small,big)
>             ) (funs.empty, s) l |> fst
>     list s l.tree
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### wdiff_proj_files_update_files
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let wdiff_proj_files_update_files (funs : ProjFileFuns<'a,'state>) (state : 
> ProjFilesState<'a,'state >) (uids,files : ProjFiles) =
>     match proj_files_diff (state.uids_file,state.uids_directory,state.files) 
> (uids,files) with
>     | Some (uids_file, uids_directory) -> {state with files=files; 
> uids_file=uids_file; uids_directory=uids_directory; result=proj_files funs 
> uids_file uids_directory uids state.init files}
>     | None -> state
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### wdiff_proj_files_update_packages
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let wdiff_proj_files_update_packages (funs : ProjFileFuns<'a,'state>) (state : 
> ProjFilesState<'a,'state >) (init : 'state) =
>     if state.init = init then state else
>     let uids_file, uids_directory = Array.zeroCreate state.uids_file.Length, 
> Array.zeroCreate state.uids_directory.Length
>     let uids = Array.map fst state.uids_file
>     {state with init=init; uids_file=uids_file; uids_directory=uids_directory; 
> result=proj_files funs uids_file uids_directory uids init state.files}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### wdiff_proj_files
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let wdiff_proj_files (funs : ProjFileFuns<'a,'state>) (state : 
> ProjFilesState<'a,'state >) (init,(uids,files)) =
>     if state.init = init then wdiff_proj_files_update_files funs state 
> (uids,files)
>     else
>         let uids_file, uids_directory = Array.zeroCreate files.num_files, 
> Array.zeroCreate files.num_dirs
>         {files=files; init=init; uids_file=uids_file; 
> uids_directory=uids_directory; result=proj_files funs uids_file uids_directory 
> uids init files}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### typechecker_results_summary
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let typechecker_results_summary l =
>     Stream.foldFun (fun (has_error,big) (_,x : InferResult,_) -> 
>         has_error || List.isEmpty x.errors = false,
>         match x.top_env_additions with 
>         | AOpen _ -> big 
>         | AInclude small -> unionInfer small big
>         ) (false,top_env_emptyInfer) l
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### funs_proj_file_tc
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let funs_proj_file_tc = {new 
> ProjFileFuns<TypecheckerState,TypecheckerStatePropagated> with
>     member _.file(name,state,x) = 
>         let x = wdiff_file_update_state funs_file_tc x state
>         let env = 
>             typechecker_results_summary x.result >>-* fun (has_error,env) -> 
>             has_error, match name with None -> env | Some name -> in_moduleInfer
> name env
>         x,env
>     member _.union(small,big) = small >>=* fun small -> big >>- fun big -> fst 
> small || fst big, unionInfer (snd small) (snd big)
>     member _.in_module(name,small) = small >>-* fun (has_error,env) -> 
> has_error, in_moduleInfer name env
>     member _.default' default_env = Promise.Now.withValue 
> (false,top_env_defaultInfer default_env)
>     member _.empty = Promise.Now.withValue (false,top_env_emptyInfer)
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### PackageEnv
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type PackageEnv = {
>     nominals_aux : Map<PackageId,Map<GlobalId, {|name : string; kind : TT|}>>
>     nominals : Map<PackageId,Map<GlobalId, {|vars : Var list; body : T|}>>
>     prototypes_instances : Map<PackageId,Map<GlobalId * GlobalId, Constraint Set
> list>>
>     prototypes : Map<PackageId,Map<GlobalId, {|name : string; signature : T; 
> kind : TT|}>>
>     ty : Map<string,T>
>     term : Map<string,T>
>     constraints : Map<string,ConstraintOrModule>
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### union
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let union small big = {
>     nominals_aux = Map.foldBack Map.add small.nominals_aux big.nominals_aux
>     nominals = Map.foldBack Map.add small.nominals big.nominals
>     prototypes_instances = Map.foldBack Map.add small.prototypes_instances 
> big.prototypes_instances
>     prototypes = Map.foldBack Map.add small.prototypes big.prototypes
>     ty = Map.foldBack Map.add small.ty big.ty
>     term = Map.foldBack Map.add small.term big.term
>     constraints = Map.foldBack Map.add small.constraints big.constraints
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### in_moduleWDiff
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let in_moduleWDiff m (a : PackageEnv) =
>     {a with 
>         ty = Map.add m (TyModule a.ty) Map.empty
>         term = Map.add m (TyModule a.term) Map.empty
>         constraints = Map.add m (M a.constraints) Map.empty
>         }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### package_to_file
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let package_to_file (x : PackageEnv) = {
>     nominals_next_tag = 0
>     nominals_aux = Map.foldBack (fun _ -> Map.foldBack Map.add) x.nominals_aux 
> Map.empty
>     nominals = Map.foldBack (fun _ -> Map.foldBack Map.add) x.nominals Map.empty
>     prototypes_next_tag = 0
>     prototypes_instances = Map.foldBack (fun _ -> Map.foldBack Map.add) 
> x.prototypes_instances Map.empty
>     prototypes = Map.foldBack (fun _ -> Map.foldBack Map.add) x.prototypes 
> Map.empty
>     ty = x.ty
>     term = x.term
>     constraints = x.constraints
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### add_file_to_package
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let add_file_to_package package_id (small : TopEnv) (big : PackageEnv): 
> PackageEnv = {
>     nominals_aux = Map.add package_id small.nominals_aux big.nominals_aux
>     nominals = Map.add package_id small.nominals big.nominals
>     prototypes_instances = Map.add package_id small.prototypes_instances 
> big.prototypes_instances
>     prototypes = Map.add package_id small.prototypes big.prototypes
>     ty = small.ty
>     term = small.term
>     constraints = small.constraints
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### package_env_empty
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let package_env_empty = {
>     nominals_aux = Map.empty
>     nominals = Map.empty
>     prototypes_instances = Map.empty
>     prototypes = Map.empty
>     ty = Map.empty
>     term = Map.empty
>     constraints = Map.empty
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### package_env_default
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let package_env_default default_env = 
>     let x = top_env_defaultInfer default_env
>     {package_env_empty with ty = x.ty; term = x.term; constraints = 
> x.constraints}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### ProjPackagesState<'a>
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type ProjPackagesState<'a> = {
>     packages : (string option * 'a) list
>     result : 'a
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### ProjState<'file_inputs,'files,'packages>
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type ProjState<'file_inputs,'files,'packages> = {
>     package_id : PackageId
>     packages : 'packages ProjPackagesState
>     files : ProjFilesState<'file_inputs,'files>
>     result : 'packages
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### TypecheckerStateTop
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type TypecheckerStateTop = (bool * PackageEnv) Promise
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### ProjStateTC
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type ProjStateTC = 
> ProjState<TypecheckerState,TypecheckerStatePropagated,TypecheckerStateTop>
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### ProjEnvTC
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type ProjEnvTC = Map<PackageId,ProjStateTC>
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### ProjPackageFuns<'file,'package>
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type ProjPackageFuns<'file,'package> =
>     abstract member unions : DefaultEnv -> (string option * 'package) list -> 
> 'package
>     abstract member union : 'package * 'package -> 'package
>     abstract member in_module : string * 'package -> 'package
>     abstract member package_to_file : 'package -> 'file
>     abstract member add_file_to_package : PackageId * 'file * 'package -> 
> 'package
>     abstract member default' : DefaultEnv -> 'package
>     abstract member empty : 'package
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### funs_proj_package_tc
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let funs_proj_package_tc = {new 
> ProjPackageFuns<TypecheckerStatePropagated,TypecheckerStateTop> with
>     member funs.unions default_env l = 
>         let f = function Some name, small -> funs.in_module(name,small) | None, 
> small -> small
>         List.fold (fun big x -> funs.union(f x,big)) (funs.default' default_env)
> l
>     member _.union(small,big) = 
>         Job.delay <| fun () ->
>             Hopac.queueIgnore big
>             small >>= fun a ->
>             big >>- fun b ->
>             fst a || fst b, union (snd a) (snd b)
>         |> Hopac.memo
>     member _.in_module(name,x) = x >>-* fun (has_error,env) -> has_error, 
> in_moduleWDiff name env
>     member _.package_to_file(x) = x >>-* fun (has_error,env) -> has_error, 
> package_to_file env
>     member _.add_file_to_package(pid,a,b) = 
>         a >>=* fun (has_error,env) ->
>         b >>-* fun (has_error',env') ->
>         has_error || has_error', add_file_to_package pid env env'
>     member _.default' default_env = Promise.Now.withValue (false, 
> package_env_default default_env)
>     member _.empty = Promise.Now.withValue (false, package_env_empty)
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### wdiff_proj_init
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let wdiff_proj_init default_env (funs_packages : 
> ProjPackageFuns<'file,'package>) (funs_files : ProjFileFuns<'file_input,'file>) 
> package_id : ProjState<'file_input,'file,'package> = 
>     let packages = { packages = [[]]; result = funs_packages.default' 
> default_env}
>     let files = {
>         files={tree=[[]]; num_dirs=0; num_files=0}
>         uids_file=[[||]]; uids_directory=[[||]]
>         init=funs_files.default' default_env; result=funs_files.empty
>         }
>     let result = funs_packages.empty
>     { package_id = package_id; packages = packages; files = files; result = 
> result}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### wdiff_proj_packages
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let wdiff_proj_packages default_env (funs : ProjPackageFuns<_,'a>) (state : 'a 
> ProjPackagesState) x =
>     if state.packages = x then state else {packages = x; result = funs.unions 
> default_env x }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### wdiff_proj_update_packages
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let wdiff_proj_update_packages default_env funs_packages funs_files (state : 
> ProjState<'a,'b,'state>) x =
>     let packages = wdiff_proj_packages default_env funs_packages state.packages 
> x
>     if state.packages = packages then state else
>     let files = wdiff_proj_files_update_packages funs_files state.files 
> (funs_packages.package_to_file(packages.result))
>     let result = 
> funs_packages.add_file_to_package(state.package_id,files.result,packages.result)
>     {state with packages=packages; files=files; result=result}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### wdiff_proj_update_files
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let wdiff_proj_update_files (funs_packages : ProjPackageFuns<_,_>) funs_files 
> (state : ProjState<'a,'b,'state>) x =
>     let files = wdiff_proj_files_update_files funs_files state.files x
>     if state.files = files then state else
>     let result = 
> funs_packages.add_file_to_package(state.package_id,files.result,state.packages.r
> esult)
>     {state with files=files; result=result}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### wdiff_proj
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let wdiff_proj default_env (funs_packages : ProjPackageFuns<_,_>) funs_files 
> (state : ProjState<'file_input,'file,'state>) (packages,files) =
>     let packages = wdiff_proj_packages default_env funs_packages state.packages 
> packages
>     if state.packages = packages then wdiff_proj_update_files funs_packages 
> funs_files state files
>     else
>         let files = wdiff_proj_files funs_files state.files 
> (funs_packages.package_to_file(packages.result),files)
>         let result = 
> funs_packages.add_file_to_package(state.package_id,files.result,packages.result)
>         {state with packages=packages; files=files; result=result}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### ProjEnvUpdate<'a>
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type ProjEnvUpdate<'a> =
>     | UpdatePackageModule of PackageId * (string option * PackageId) list * ('a 
> [[]] * ProjFiles)
>     | UpdatePackage of PackageId * (string option * PackageId) list
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### map_packages
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let map_packages s packages = packages |> List.map (fun (a,b) -> a, (Map.find b 
> s).result)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### wdiff_projenv
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let wdiff_projenv default_env funs_packages funs_files (s : 
> Map<PackageId,ProjState<'a,'b,'state>>) l =
>     List.fold (fun s -> function
>         | UpdatePackageModule(uid,packages,files) -> Map.add uid (wdiff_proj 
> default_env funs_packages funs_files s.[[uid]] (map_packages s packages,files)) 
> s
>         | UpdatePackage(uid,packages) -> Map.add uid (wdiff_proj_update_packages
> default_env funs_packages funs_files s.[[uid]] (map_packages s packages)) s
>         ) s l
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## WDiffPrepass
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> open Hopac
> open Hopac.Infixes
> open Hopac.Extensions
> open Hopac.Stream
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### PrepassStateValue
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type PrepassStateValue = InferResult * PrepassTopEnv AdditionType * 
> PrepassTopEnv
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### PrepassStatePropagated
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type PrepassStatePropagated = PrepassTopEnv Promise
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### PrepassState
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type PrepassState = FileState<PackageId * ModuleId * string * 
> TypecheckerStateValue Stream, PrepassStateValue Stream, PrepassStatePropagated>
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### prepass
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rec prepass (package_id,module_id,path,env) = function
>     | Cons((_,r,_) : TypecheckerStateValue, ls) ->
>         r.filled_top >>- fun filled_top -> 
>         let x = (prepassPrepass package_id module_id path env).filled_top 
> filled_top
>         let adds = match x with AOpen x | AInclude x -> x
>         let env = unionPrepass adds env
>         Cons((r,x,env),ls >>=* prepass (package_id,module_id,path,env))
>     | Nil ->
>         Job.result Nil
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### diffWDiffPrepass
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rec diffWDiffPrepass (package_id,module_id,path,env) (result,input : 
> TypecheckerStateValue Stream) = 
>     input >>** fun input ->
>     let tc () = prepass (package_id,module_id,path,env) input |> Hopac.memo
>     if Promise.Now.isFulfilled result then
>         match Promise.Now.get result,input with
>         | Cons((b',_,env as x),next), Cons((_,b,_),bs) when b' = b -> 
> Cons(x,diffWDiffPrepass (package_id,module_id,path,env) (next,bs)) |> 
> Promise.Now.withValue
>         | _ -> tc()
>     else tc()
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### funs_file_prepass
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let funs_file_prepass = {new FileFuns<PackageId * ModuleId * string * 
> TypecheckerStateValue Stream, PrepassStateValue Stream, PrepassStatePropagated> 
> with
>     member _.eval(state,(pid,mid,path,x)) = 
>         state >>=* fun env -> 
>         x >>= prepass (pid,mid,path,env)
>     member _.diff(state,b,(pid,mid,path,a)) =
>         state >>=* fun env -> diffWDiffPrepass (pid,mid,path,env) (b,a)
>     member _.init x = {
>         input = x
>         result = Promise.Now.never()
>         state = Promise.Now.never()
>         }
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### prepass_results_summary
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let prepass_results_summary l =
>     Stream.foldFun (fun big (_,x,_) ->
>         match x with
>         | AOpen _ -> big
>         | AInclude small -> unionPrepass small big
>         ) (top_env_emptyPrepass) l
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### funs_proj_file_prepass
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let funs_proj_file_prepass = {new 
> ProjFileFuns<PrepassState,PrepassStatePropagated> with
>     member _.file(name,state,x) = 
>         let x = wdiff_file_update_state funs_file_prepass x state
>         let env = 
>             prepass_results_summary x.result >>-* fun env -> 
>             match name with None -> env | Some name -> in_modulePrepass name env
>         x,env
>     member _.union(small,big) = small >>=* fun small -> big >>- fun big -> 
> unionPrepass small big
>     member _.in_module(name,small) = small >>-* in_modulePrepass name
>     member _.default' default_env = Promise.Now.withValue 
> (top_env_defaultPrepass default_env)
>     member _.empty = Promise.Now.withValue top_env_emptyPrepass
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### PrepassPackageEnv
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type PrepassPackageEnv = {
>     prototypes_instances : Map<int, Map<GlobalId * GlobalId,E>>
>     nominals : Map<int, Map<GlobalId,{|body : TPrepass; name : string|}>>
>     term : Map<string,E>
>     ty : Map<string,TPrepass>
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### unionWDiffPrepass
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let unionWDiffPrepass small big = {
>     prototypes_instances = Map.foldBack Map.add small.prototypes_instances 
> big.prototypes_instances
>     nominals = Map.foldBack Map.add small.nominals big.nominals
>     term = Map.foldBack Map.add small.term big.term
>     ty = Map.foldBack Map.add small.ty big.ty
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### in_module
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let in_module m (a : PrepassPackageEnv) =
>     {a with 
>         ty = Map.add m (TModule a.ty) Map.empty
>         term = Map.add m (EModule a.term) Map.empty
>         }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### package_env_emptyWDiffPrepass
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let package_env_emptyWDiffPrepass = {
>     prototypes_instances = Map.empty
>     nominals = Map.empty
>     term = Map.empty
>     ty = Map.empty
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### package_to_fileWDiffPrepass
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let package_to_fileWDiffPrepass (x : PrepassPackageEnv) = {
>     nominals_next_tag = 0
>     nominals = Map.foldBack (fun _ -> Map.foldBack Map.add) x.nominals Map.empty
>     prototypes_next_tag = 0
>     prototypes_instances = Map.foldBack (fun _ -> Map.foldBack Map.add) 
> x.prototypes_instances Map.empty
>     ty = x.ty
>     term = x.term
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### add_file_to_packageWDiffPrepass
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let add_file_to_packageWDiffPrepass package_id (small : PrepassTopEnv) (big : 
> PrepassPackageEnv): PrepassPackageEnv = {
>     nominals = Map.add package_id small.nominals big.nominals
>     prototypes_instances = Map.add package_id small.prototypes_instances 
> big.prototypes_instances
>     ty = small.ty
>     term = small.term
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### package_env_defaultWDiffPrepass
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let package_env_defaultWDiffPrepass default_env = { 
> package_env_emptyWDiffPrepass with ty = (top_env_defaultPrepass default_env).ty 
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### ProjStatePrepass
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type ProjStatePrepass = 
> ProjState<PrepassState,PrepassStatePropagated,PrepassPackageEnv Promise>
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### funs_proj_package_prepass
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let funs_proj_package_prepass = {new 
> ProjPackageFuns<PrepassStatePropagated,PrepassPackageEnv Promise> with
>     member funs.unions default_env l = 
>         let f = function Some name, small -> funs.in_module(name,small) | None, 
> small -> small
>         List.fold (fun big x -> funs.union(f x,big)) (funs.default' default_env)
> l
>     member _.union(small,big) = 
>         Job.delay <| fun () ->
>             Hopac.queueIgnore big
>             small >>= fun a -> big >>- unionWDiffPrepass a
>         |> Hopac.memo
>     member _.in_module(name,x) = x >>-* fun env -> in_module name env
>     member _.package_to_file(x) = x >>-* package_to_fileWDiffPrepass
>     member _.add_file_to_package(pid,a,b) = 
>         a >>=* fun env ->
>         b >>-* add_file_to_packageWDiffPrepass pid env
>     member _.default' default_env = Promise.Now.withValue 
> (package_env_defaultWDiffPrepass default_env)
>     member _.empty = Promise.Now.withValue package_env_emptyWDiffPrepass
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## SpiProj
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #r 
> @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
> dard2.1/FSharp.Control.AsyncSeq.dll"
> #r 
> @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
> 0/System.Reactive.dll"
> #r 
> @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/
> netstandard2.0/System.Reactive.Linq.dll"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> // Everything that deals with Spiral project files themselves goes here
> open FParsec
> // open Common
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### RawFileHierarchy
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type RawFileHierarchy =
>     | Directory of VSCRange * RString * RawFileHierarchy list
>     | File of VSCRange * RString * is_top_down : bool * is_include : bool
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### ConfigResumableError
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type ConfigResumableError =
>     | DuplicateFiles of VSCRange [[]] [[]]
>     | DuplicateRecordFields of VSCRange [[]] [[]]
>     | MissingNecessaryRecordFields of string [[]] * VSCRange
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### ConfigFatalError
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type ConfigFatalError =
>     | Tabs of VSCRange [[]]
>     | ParserError of string * VSCRange
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### ConfigException
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> exception ConfigException of ConfigFatalError
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### spaces_template
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rec spaces_template s = (spaces >>. optional (followedByString "//" >>. 
> skipRestOfLine true >>. spaces_template)) s
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### spacesSpiProj
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let spacesSpiProj s = spaces_template s
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### raise'
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let raise' x = raise (ConfigException x)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### raise_if_not_empty
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let raise_if_not_empty exn l = if Array.isEmpty l = false then raise' (exn l)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### add_to_exception_list'
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let add_to_exception_list' (p: CharStream<ResizeArray<ConfigResumableError>>) = 
> p.State.UserState.Add
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### add_to_exception_list
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let add_to_exception_list (p: CharStream<ResizeArray<ConfigResumableError>>) exn
> l = if Array.isEmpty l = false then p.State.UserState.Add (exn l)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### column
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let column (p : CharStream<_>) = p.Column
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### pos
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let pos (p : CharStream<_>) : VSCPos = {|line=int p.Line - 1; character=int 
> p.Column - 1|}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### pos'
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let pos' p = Reply(pos p)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### rangeSpiProj
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rangeSpiProj f p = pipe3 pos' f pos' (fun a b c -> ((a, c) : VSCRange), b) p
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### is_small_var_char_startingSpiProj
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let is_small_var_char_startingSpiProj c = isAsciiLower c
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### is_var_charSpiProj
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let is_var_charSpiProj c = isAsciiLetter c || c = '_' || c = ''' || isDigit c
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### file'
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let file' p = many1Satisfy2L is_small_var_char_startingSpiProj 
> is_var_charSpiProj "lowercase variable name" p
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### fileSpiProj
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let fileSpiProj p = (rangeSpiProj file' .>> spacesSpiProj) p
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### file_verify
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let file_verify p = (skipMany1Satisfy2L is_small_var_char_startingSpiProj 
> is_var_charSpiProj "lowercase variable name" .>> spacesSpiProj .>> eof) p
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### file_hierarchy
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rec file_hierarchy p =
>     let i = column p
>     let expr p = if i = column p then file_or_directory p else 
> Reply(ReplyStatus.Error,expected "file or directory on the same or greater 
> indentation as the first one")
>     (many expr |>> fun l ->
>         let _ = 
>             l |> List.toArray
>             |> Array.choose (function | File(_,(a,b),_,_) -> Some (b,a) | _ -> 
> None)
>             |> Array.groupBy fst
>             |> Array.choose (fun (a,b) -> if b.Length > 1 then Some (Array.map 
> snd b) else None)
>             |> add_to_exception_list p DuplicateFiles
>         l
>         ) p
> 
> and file_or_directory p =
>     let i = column p
>     let file_hierarchy p = if i < column p then file_hierarchy p else 
> Reply([[]])
>     (rangeSpiProj (rangeSpiProj file' >>= fun (r,name) p ->
>         let adjust_range ((a,b) : VSCRange) : VSCRange = if b.character < 
> a.character then a,{|line=b.line-1; character=System.Int32.MaxValue|} else a,b
>         let x = p.Peek2()
>         match x.Char0, x.Char1 with
>         | '/',_ -> p.Skip(); (spacesSpiProj >>. file_hierarchy |>> fun files r' 
> -> Directory(adjust_range r',(r,name),files)) p
>         | '-',_ -> p.Skip(); (spacesSpiProj >>% fun r' -> File(adjust_range 
> r',(r,name),true,true)) p
>         | '*','-' -> p.Skip(2); (spacesSpiProj >>% fun r' -> File(adjust_range 
> r',(r,name),false,true)) p
>         | '*',_ -> p.Skip(); (spacesSpiProj >>% fun r' -> File(adjust_range 
> r',(r,name),false,false)) p
>         | _ -> (spacesSpiProj >>% fun r' -> File(adjust_range 
> r',(r,name),true,false)) p
>         )
>     |>> fun (r',f) -> f r') p
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### RawSchemaPackages
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type RawSchemaPackages = {range : VSCRange; name : string; is_in_compiler_dir : 
> bool; is_include : bool}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### packages
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let packages p =
>     let i = column p
>     let file = rangeSpiProj (((skipChar '|' >>% true) <|>% false) .>>.  file') 
> >>= fun (r,(is_in_compiler_dir,name)) p ->
>         match p.Peek() with
>         | '-' -> p.Skip(); (spacesSpiProj >>% {range=r; name=name; 
> is_in_compiler_dir=is_in_compiler_dir; is_include=true}) p
>         | _ -> (spacesSpiProj >>% {range=r; name=name; 
> is_in_compiler_dir=is_in_compiler_dir; is_include=false}) p
>     let file p = if i <= column p then file p else 
> Reply(ReplyStatus.Error,expected "directory on the same or greater indentation 
> as the first one")
>     many file p
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### tab_positions
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let tab_positions (str : string): VSCRange [[]] =
>     let mutable line = -1
>     lines str |> Array.choose (fun x -> 
>         line <- line + 1
>         let x = {|line=line; character=x.IndexOf("\t")|}
>         if x.character <> -1 then Some(x,{|x with character=x.character+1|}) 
> else None
>         )
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### record_reduce
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let record_reduce (field: Parser<'schema -> 'schema, _>) s p =
>     let record_body p =
>         let i = column p
>         let indent expr p = if i = column p then expr p else 
> Reply(ReplyStatus.Error,expected "record field on the same indentation as the 
> first one")
>         many (indent field) p
>     (rangeSpiProj record_body |>> fun (r,l) -> r, List.fold (|>) s l) p
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### record_field
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let record_field (name, p) = 
>     (skipString name >>. skipChar ':' >>. spacesSpiProj >>. rangeSpiProj p)
>     |>> (fun (r,f) (s,l) -> f s, (r, name) :: l)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### record
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let record fields fields_necessary schema =
>     let fields = choice (List.map record_field fields)
>     record_reduce fields (schema, [[]]) >>= fun (range,(schema,l)) p ->
>         let l = List.toArray l
>         let _ =
>             let names = Array.map snd l
>             Set fields_necessary - Set names
>             |> Set.toArray
>             |> add_to_exception_list p (fun fields -> 
> MissingNecessaryRecordFields(fields,range))
>         let _ =
>             Array.groupBy snd l
>             |> Array.choose (fun (k, v) -> if v.Length > 1 then Some (Array.map 
> fst v) else None)
>             |> add_to_exception_list p DuplicateRecordFields
> 
>         Reply(schema)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### RawSchema
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type RawSchema = {
>     name : RString option
>     version : RString option
>     moduleDir : RString option
>     modules : RawFileHierarchy list
>     packageDir : RString option
>     packages : RawSchemaPackages list
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### schema_def
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let schema_def: RawSchema = {
>     name=None
>     version=None
>     moduleDir=None
>     modules=[[]]
>     packageDir=None
>     packages=[[]]
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### ConfigError
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type ConfigError = ResumableError of ConfigResumableError [[]] | FatalError of 
> ConfigFatalError
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### config
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let config text =
>     try 
>         let _ = tab_positions text |> raise_if_not_empty Tabs
>         
>         let directory p = (rangeSpiProj (restOfLine false) .>> spacesSpiProj |>>
> fun (r,x) -> Some(r,x.Trim())) p
> 
>         let fields = [[
>             "version", rangeSpiProj (restOfLine true .>> spacesSpiProj) |>> fun 
> (r,x) s -> {s with version=Some (r,x.TrimEnd())}
>             "name", fileSpiProj |>> fun x s -> {s with name=Some x}
>             "moduleDir", directory |>> fun x s -> {s with moduleDir=x}
>             "modules", file_hierarchy |>> fun x s -> {s with modules=x}
>             "packageDir", directory |>> fun x s -> {s with packageDir=x}
>             "packages", packages |>> fun x s -> {s with packages=x}
>             ]]
>         let necessary = [[]]
> 
>         match runParserOnString (spacesSpiProj >>. record fields necessary 
> schema_def .>> eof) (ResizeArray()) "spiral.config" text with
>         | Success(a,userstate,_) -> 
>             if userstate.Count > 0 then userstate.ToArray() |> ResumableError |>
> Result.Error else Result.Ok a
>         | Failure(messages,error,_) ->
>             let x = {|line=int error.Position.Line - 1; character=int 
> error.Position.Column - 1|}
>             ParserError(messages, (x,{|x with character=x.character+1|})) |> 
> FatalError |> Result.Error
>     with 
>         | :? ConfigException as e -> e.Data0 |> FatalError |> Result.Error
> 
>     |> Result.mapError (fun x ->
>         let fatal_error = function
>             | Tabs l -> l |> Array.map (fun r -> r, "Tab not allowed.")
>             | ParserError(x,r) -> [[|r, (lines x).[[3..]] |> String.concat 
> "\n"|]]
>         let inline duplicate er = Array.collect (fun l -> let er = er 
> (Array.length l) in Array.map (fun r -> r, er) l)
>         let resumable_error = function
>             | DuplicateFiles l -> duplicate (sprintf "Duplicate name. Count: 
> %i") l
>             | DuplicateRecordFields l -> duplicate (sprintf "Duplicate record 
> field. Count: %i") l
>             | MissingNecessaryRecordFields (l,r) -> [[|r, sprintf "Record is 
> missing the fields: %s" (String.concat ", " l)|]]
>         match x with
>         | ResumableError x -> Array.collect resumable_error x
>         | FatalError x -> fatal_error x
>         |> Array.toList
>         )
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### FileHierarchy
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type FileHierarchy =
>     | Directory of VSCRange * path: RString * name : string * FileHierarchy list
>     | File of VSCRange * path: RString * string option
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### SchemaPackages
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type SchemaPackages = {dir : RString; name : string option}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### Schema
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Schema = {
>     moduleDir : VSCRange option * string
>     modules : FileHierarchy list
>     packageDir : VSCRange option * string 
>     packages : SchemaPackages list
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### SchemaException
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> exception SchemaException of RString
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### SchemaResult
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type SchemaResult = Result<Schema,RString list>
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### schema
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let schema (pdir,text) : SchemaResult = config text |> Result.bind (fun x ->
>     try
>         let combine a (r,b) =
>             try
>                 Path.Combine(a,b)
>                 |> Path.GetFullPath
>                 |> fun result ->
>                     let result' = result |> SpiralFileSystem.standardize_path
>                     // trace Verbose (fun () -> $"""SpiProj.schema.combine / a: 
> {a} / b: {b} / result: {result |> SpiralSm.replace "\\" "|"} / result': 
> {result'}""") _locals
>                     result'
>             with e ->
>                 raise (SchemaException(r,e.Message))
>         let module_dir =
>             match x.moduleDir with
>             | Some(r,_ as x) -> Some r, combine pdir x
>             | None -> None, pdir
>         let package_dir = 
>             match x.packageDir with
>             | Some(r,_ as x) -> Some r, combine pdir x
>             | None -> None, Path.Combine(pdir,"..") |> Path.GetFullPath
>         // trace Verbose (fun () -> $"""SpiProj.schema / pdir: {pdir} / 
> module_dir: {module_dir |> snd} / package_dir: {package_dir |> snd |> 
> SpiralSm.replace "\\" "|"}""") _locals
>         let modules =
>             let rec loop prefix = function
>                 | RawFileHierarchy.Directory(r,(r',a),l) -> 
>                     let prefix = Path.Combine(prefix,a)
>                     let prefix' = prefix |> SpiralFileSystem.standardize_path
>                     trace Verbose (fun () -> $"SpiProj.schema.modules.loop | 
> RawFileHierarchy.Directory(r,(r',a),l) / prefix: {prefix} / prefix': {prefix'}")
> _locals
>                     let prefix = prefix'
>                     Directory(r,(r',prefix),a,List.map (loop prefix) l)
>                 | RawFileHierarchy.File(r,(r',a),is_top_down,is_include) ->
>                     let path = Path.Combine(prefix,a + if is_top_down then 
> ".spi" else ".spir")
>                     let path' = path |> SpiralFileSystem.standardize_path
>                     // trace Verbose (fun () -> $"SpiProj.schema.modules.loop | 
> RawFileHierarchy.File(r,(r',a),is_top_down,is_include) / path: {path} / path': 
> {path'}") _locals
>                     let path = path'
>                     File(r,(r',path),if is_include then None else Some a)
>             List.map (loop (snd module_dir)) x.modules
>         let packages =
>             let cdir =
> #if !INTERACTIVE
>                 // 
> Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory,"..")
>                 Path.Combine (SpiralFileSystem.get_workspace_root (), 
> "deps/The-Spiral-Language/VS Code Plugin")
> #else
>                 Path.Combine (SpiralFileSystem.get_workspace_root (), 
> "deps/The-Spiral-Language/VS Code Plugin")
> #endif
>                 |> Path.GetFullPath
>             x.packages |> List.map (fun x ->
>                 let name = if x.is_include then None else Some x.name
>                 let dir = Path.Combine((if x.is_in_compiler_dir then cdir else 
> snd package_dir),x.name)
>                 let dir' = dir |> SpiralFileSystem.standardize_path
>                 let dir'' = dir' |> SpiralFileSystem.standardize_path
>                 trace Verbose (fun () -> $"""SpiProj.schema.packages / dir: {dir
> |> SpiralSm.replace "\\" "|"} / dir': {dir'} / dir'': {dir''}""") _locals
>                 let dir = dir''
>                 {name = name; dir = x.range, dir}
>                 )
>         Result.Ok {moduleDir = module_dir; modules = modules; packageDir = 
> package_dir; packages = packages}
>     with :? SchemaException as e -> Result.Error [[e.Data0]]
>     )
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## Graph
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> open System.Collections.Generic
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### Graph
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Graph = Map<string,string Set>
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### MirroredGraph
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type MirroredGraph = Graph * Graph
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### mirrored_graph_empty
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let mirrored_graph_empty : MirroredGraph = Map.empty, Map.empty
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### link_add'
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let link_add' (abs : Graph) a b: Graph = 
>     match Map.tryFind a abs with
>     | Some bs -> Map.add a (Set.add b bs) abs
>     | None -> Map.add a (Set.singleton b) abs
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### link_add
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let link_add (s : MirroredGraph) a b: MirroredGraph = link_add' (fst s) a b, 
> link_add' (snd s) b a
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### link_remove'
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let link_remove' (abs : Graph) a b = 
>     match Map.tryFind a abs with
>     | Some bs -> 
>         let bs = Set.remove b bs
>         if Set.isEmpty bs then Map.remove a abs else Map.add a bs abs
>     | None -> abs
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### link_remove
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let link_remove (s : MirroredGraph) a b: MirroredGraph = link_remove' (fst s) a 
> b, link_remove' (snd s) b a
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### links_remove
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let links_remove ((abs,bas as s) : MirroredGraph) a: MirroredGraph = 
>     match Map.tryFind a abs with
>     | Some bs -> Map.remove a abs, Set.fold (fun bas b -> link_remove' bas b a) 
> bas bs
>     | None -> s
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### links_add
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let links_add s a bs = List.fold (fun s b -> link_add s a b) s bs
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### links_replace
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let links_replace (s : MirroredGraph) a bs = links_add (links_remove s a) a bs
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### links_get
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let links_get (abs : Graph) a = Map.tryFind a abs |> Option.defaultValue 
> Set.empty
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### link_exists
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let link_exists ((abs,bas) : MirroredGraph) x = Map.containsKey x abs || 
> Map.containsKey x bas
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### topological_sort_template
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline topological_sort_template add bas dirty_nodes =
>     let sort_visited = HashSet()
>     let rec dfs_rev a = if sort_visited.Add(a) then Seq.iter dfs_rev (links_get 
> bas a); add a
>     Seq.iter dfs_rev dirty_nodes
>     sort_visited
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### topological_sort'
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> // Returns the order end -> mid -> start.
> let topological_sort' bas start_nodes = let sort_order = Queue() in sort_order, 
> topological_sort_template sort_order.Enqueue bas start_nodes
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### topological_sort
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> // Returns the order start -> mid -> end.
> let topological_sort bas start_nodes = let sort_order = Stack() in sort_order, 
> topological_sort_template sort_order.Push bas start_nodes
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### circular_nodes
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let circular_nodes ((abs,bas) : MirroredGraph) dirty_nodes =
>     let sort_order, sort_visited = topological_sort bas dirty_nodes
>     let order = sort_order.ToArray()
>     let visited = HashSet()
>     let circular_nodes = Dictionary()
>     Array.fold (fun i a ->
>         let sc = ResizeArray() // This array stores the strongly connected 
> components.
>         let rec dfs a = if sort_visited.Contains(a) && visited.Add(a) then 
> Seq.iter dfs (links_get abs a); sc.Add a
>         dfs a
>         if 1 < sc.Count then 
>             sc |> Seq.iter (fun x -> circular_nodes.Add(x,i) |> ignore)
>             i+1
>         else 
>             i
>         ) 0 order |> ignore
>     order, circular_nodes
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## ServerUtils
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> // open System
> open System.IO
> open System.Collections.Generic
> 
> // open Common
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### ProjectCodeAction
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type ProjectCodeAction = 
>     | CreateFile of {|filePath : string|}
>     | DeleteFile of {|range: VSCRange; filePath : string|} // The range here 
> includes the postfix operators.
>     | RenameFile of {|filePath : string; target : string|}
>     | CreateDirectory of {|dirPath : string|}
>     | DeleteDirectory of {|range: VSCRange; dirPath : string|} // The range here
> is for the whole tree, not just the code action activation.
>     | RenameDirectory of {|dirPath : string; target : string; validate_as_file :
> bool|}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### code_action_execute
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let code_action_execute a =
>     try match a with
>         | CreateDirectory a -> Directory.CreateDirectory(a.dirPath) |> ignore; 
> Result.Ok null
>         | DeleteDirectory a -> Directory.Delete(a.dirPath,true); Result.Ok 
> a.dirPath
>         | RenameDirectory a ->
>             if a.validate_as_file then
>                 match FParsec.CharParsers.run file_verify a.target with
>                 | FParsec.CharParsers.ParserResult.Success _ -> 
> Directory.Move(a.dirPath,Path.Combine(a.dirPath,"..",a.target)); Result.Ok 
> a.dirPath
>                 | FParsec.CharParsers.ParserResult.Failure(er,_,_) -> 
> Result.Error er
>             else
>                 Directory.Move(a.dirPath,Path.Combine(a.dirPath,"..",a.target));
> Result.Ok a.dirPath
>         | CreateFile a ->
>             if File.Exists(a.filePath) then Result.Error "File already exists."
>             else 
>                 Directory.GetParent(a.filePath).Create()
>                 File.Create(a.filePath).Dispose()
>                 Result.Ok null
>         | DeleteFile a -> File.Delete(a.filePath); Result.Ok a.filePath
>         | RenameFile a ->
>             match FParsec.CharParsers.run file_verify a.target with
>             | FParsec.CharParsers.ParserResult.Success _ -> 
> File.Move(a.filePath,Path.Combine(a.filePath,"..",a.target+Path.GetExtension(a.f
> ilePath)),false); Result.Ok a.filePath
>             | FParsec.CharParsers.ParserResult.Failure(er,_,_) -> Result.Error 
> er
>     with e -> Result.Error e.Message
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### RAction
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type RAction = VSCRange * ProjectCodeAction
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### SchemaState
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type SchemaState = { schema : Schema; errors_parse : RString list; 
> errors_modules : RString list; errors_packages : RString list}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### SchemaEnv
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type SchemaEnv = Map<string,SchemaState>
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### ModuleEnv
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type ModuleEnv = Map<string,ModuleState>
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### ss_empty
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let ss_empty = {
>     schema = {moduleDir = None, null; modules = [[]]; packageDir = None, null; 
> packages = [[]]}
>     errors_parse = [[]]; errors_modules = [[]]; errors_packages = [[]]
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### ss_from_result
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let ss_from_result = function
>     | Result.Ok schema -> {ss_empty with schema = schema}
>     | Result.Error ers -> {ss_empty with errors_parse = ers}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### ss_validate_module
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let ss_validate_module (packages : SchemaEnv) (modules : ModuleEnv) (x : 
> SchemaState) =
>     let errors = ResizeArray()
>     let rec loop = function
>         | FileHierarchy.Directory(_,(r,path),_,l) -> 
>             trace Verbose (fun () -> $"ss_validate_module / dir path: {path}") 
> _locals
>             if Map.containsKey path packages then errors.Add(r,"Module directory
> has a package file in it.")
>             list l
>         | FileHierarchy.File(_,(r,path),_) ->
>             let path' = path |> SpiralFileSystem.standardize_path
>             trace Verbose (fun () -> $"ss_validate_module / file / path: {path} 
> / path': {path'}") _locals
>             if Map.containsKey path' modules = false then errors.Add(r,"Module 
> not loaded.")
>     and list l = List.iter loop l
>     list x.schema.modules
>     Seq.toList errors
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### ss_validate_modules
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let ss_validate_modules (packages : SchemaEnv) modules order = 
>     Array.fold (fun s x ->
>         match Map.tryFind x s with
>         | Some v -> Map.add x {v with errors_modules = ss_validate_module 
> packages modules v} s
>         | None -> s
>         ) packages order
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### ss_has_error
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let ss_has_error x =
>     (List.isEmpty x.errors_parse && List.isEmpty x.errors_modules && 
> List.isEmpty x.errors_packages) = false
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### ss_validate_packages
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let ss_validate_packages (packages : SchemaEnv) (order : string [[]], socs : 
> Dictionary<string,int>) : SchemaEnv =
>     Array.fold (fun s path ->
>         match Map.tryFind path s with
>         | Some (x : SchemaState) -> 
>             let c p = match socs.TryGetValue(p) with true,b -> b | false,_ -> -1
>             let is_circular x = x <> -1
>             let are_in_same_strong_component a b = is_circular a && is_circular 
> b && a = b
>             let ers =
>                 let cpath = c path
>                 (x.schema.packages, [[]]) ||> List.foldBack (fun {dir=r,p} ers 
> ->
>                     let cp = c p
>                     if are_in_same_strong_component cpath cp then (r,"Package is
> circular and loops through the current one.") :: ers
>                     elif path = p then (r,"Self referential links are not 
> allowed.") :: ers
>                     else
>                         match Map.tryFind p s with
>                         | Some s' when ss_has_error s' -> (r,"Package has an 
> error.") :: ers
>                         | Some _ -> ers
>                         | None -> (r,"Package not loaded.") :: ers
>                     ) 
>             Map.add path {x with errors_packages=ers} s
>         | _ -> s
>         ) packages order
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### ss_validate
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let ss_validate packages modules (order,socs) =
>     let packages = ss_validate_modules packages modules order
>     ss_validate_packages packages (order,socs)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### ResultMap<'a,'b>
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type ResultMap<'a,'b> when 'a : comparison = {ok : Map<'a,'b>; error: 
> Map<'a,'b>}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### ProjEnvTCResult
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type ProjEnvTCResult = ResultMap<PackageId,ProjStateTC>
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### wdiff_projenvr_sync_schema
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let wdiff_projenvr_sync_schema default_env funs_packages funs_files (ids : 
> Map<string, PackageId>) (packages : SchemaEnv) 
>         (state : ResultMap<PackageId,ProjState<'file_input,'file,'package>>) 
> order =
>     Array.fold (fun (s : ResultMap<_,_>) x ->
>         let x' = x |> SpiralFileSystem.standardize_path
>         trace Verbose (fun () -> $"ServerUtils.wdiff_projenvr_sync_schema / x: 
> {x} / x': {x'}") _locals
>         match Map.tryFind x' ids with
>         | Some pid ->
>             match Map.tryFind x' packages with
>             | Some schema ->
>                 match Map.tryFind pid s.ok, Map.tryFind pid s.error, 
> ss_has_error schema with
>                 | Some _, Some _,_ -> failwith "Compiler error: The ok and error
> maps should be disjoint."
>                 | Some x, None, true -> {ok=Map.remove pid s.ok; error=Map.add 
> pid x s.error}
>                 | None, Some x, false -> {ok=Map.add pid x s.ok; 
> error=Map.remove pid s.error}
>                 | None, None, c -> 
>                     let x = wdiff_proj_init default_env funs_packages funs_files
> pid
>                     if c then {s with error=Map.add pid x s.error} else {s with 
> ok=Map.add pid x s.ok}
>                 | _ -> s
>             | None -> {ok=Map.remove pid s.ok; error=Map.remove pid s.error}
>         | None -> s
>         ) state order
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### projenv_update_packages
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let projenv_update_packages default_env funs_packages funs_files (ids : 
> Map<string, PackageId>) (packages : SchemaEnv)
>         (state : Map<PackageId,ProjState<'a,'b,'state>>)  (dirty_packages : 
> Dictionary<_,_>, order : string [[]]) =
>     Array.foldBack (fun x l ->
>         let x' = x |> SpiralFileSystem.standardize_path
>         trace Verbose (fun () -> $"ServerUtils.projenv_update_packages / x: {x} 
> / x': {x'}") _locals
>         match Map.tryFind x' packages with
>         | None -> l
>         | Some schema when ss_has_error schema -> l
>         | Some schema ->
>             let pid = ids.[[x']]
>             let packages = schema.schema.packages |> List.map (fun x -> x.name, 
> ids.[[snd x.dir]])
>             match dirty_packages.TryGetValue(x') with
>             | true, x -> UpdatePackageModule(pid,packages,x) :: l
>             | false, _ -> UpdatePackage(pid,packages) :: l
>         ) order [[]]
>     |> wdiff_projenv default_env funs_packages funs_files state
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### proj_file_iter_file
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline proj_file_iter_file f (files : ProjFiles) =
>     let rec loop = function
>         | ProjFilesTree.File(module_id,path,_) -> f module_id path
>         | ProjFilesTree.Directory(_,_,l) -> list l
>     and list l = List.iter loop l
>     list files.tree
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### proj_file_get_input
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let proj_file_get_input uids_file (x : ProjFiles) =
>     let d = Dictionary(Array.length uids_file)
>     proj_file_iter_file (fun mid path -> d.Add(path, Array.get uids_file mid |> 
> fst)) x
>     d
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### proj_file_from_schema
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let proj_file_from_schema (x : Schema) : ProjFiles =
>     let mutable num_files = 0
>     let mutable num_dirs = 0
>     let rec loop = function
>         | FileHierarchy.File(_,(_,path),name) -> 
>             let uid = num_files
>             num_files <- num_files + 1
>             let path' = path |> SpiralFileSystem.standardize_path
>             trace Verbose (fun () -> $"ServerUtils.proj_file_from_schema / path:
> {path} / path': {path'}") _locals
>             ProjFilesTree.File(uid,path',name)
>         | FileHierarchy.Directory(_,_,name,l) ->
>             let uid = num_dirs
>             num_dirs <- num_dirs + 1
>             ProjFilesTree.Directory(uid,name,list l)
>     and list l = List.map loop l
>     let tree = list x.modules
>     { tree = tree; num_files = num_files; num_dirs = num_dirs }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### proj_file_make_input
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline proj_file_make_input f (files : ProjFiles) =
>     let ar = Array.zeroCreate files.num_files
>     proj_file_iter_file (fun mid path -> ar.[[mid]] <- f mid path) files
>     ar
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### dirty_nodes_template
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline dirty_nodes_template funs (ids : Map<string, PackageId>) (packages : 
> SchemaEnv) modules
>         (state : Map<PackageId,_>) (dirty_packages : string HashSet) =
>     let d = Dictionary<string,_ [[]] * ProjFiles>()
>     dirty_packages |> Seq.iter (fun path ->
>         let path' = path |> SpiralFileSystem.standardize_path
>         trace Verbose (fun () -> $"ServerUtils.dirty_nodes_template / path: 
> {path} / path': {path'}") _locals
>         match Map.tryFind path' ids with
>         | Some pid ->
>             match Map.tryFind pid state with
>             | Some x -> 
>                 let modules = modules pid
>                 let files = proj_file_from_schema packages.[[path']].schema
>                 let state = 
>                     let state = proj_file_get_input x.files.uids_file 
> x.files.files
>                     proj_file_make_input (fun mid path ->
>                         trace Verbose (fun () -> 
> $"ServerUtils.dirty_nodes_template / proj_file_make_input / path: {path} / 
> path': {path'}") _locals
>                         match state.TryGetValue(path) with
>                         | true, x -> wdiff_file_update_input funs x (modules mid
> path)
>                         | false, _ -> funs.init (modules mid path)
>                         ) files
>                 d.Add(path',(state,files))
>             | None -> ()
>         | None -> ()
>         )
>     d
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### dirty_nodes_tc
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let dirty_nodes_tc (ids : Map<string, PackageId>) (packages : SchemaEnv) 
> (modules : ModuleEnv)
>         (state : Map<PackageId,ProjStateTC>) (dirty_packages : string HashSet) =
>     dirty_nodes_template funs_file_tc ids packages (fun pid mid path -> pid, 
> mid, modules.[[path]].bundler) state dirty_packages
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### dirty_nodes_prepass
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let dirty_nodes_prepass (ids : Map<string, PackageId>) (packages : SchemaEnv) 
> (modules : Map<PackageId,ProjStateTC>)
>         (state : Map<PackageId,ProjStatePrepass>) (dirty_packages : string 
> HashSet) =
>     let modules pid =
>         let x = modules.[[pid]]
>         let state = proj_file_get_input x.files.uids_file x.files.files
>         fun (mid : ModuleId) path -> pid, mid, path, state.[[path]].result
>     dirty_nodes_template funs_file_prepass ids packages modules state 
> dirty_packages
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### wdiff_projenvr
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let wdiff_projenvr default_env dirty_nodes funs_proj_package funs_proj_file 
>         ids packages modules (state : ResultMap<PackageId,_>) (dirty_packages, 
> order) =
>     let state = wdiff_projenvr_sync_schema default_env funs_proj_package 
> funs_proj_file ids packages state order
>     let dirty_packages = dirty_nodes ids packages modules state.ok 
> dirty_packages
>     {state with ok=projenv_update_packages default_env funs_proj_package 
> funs_proj_file ids packages state.ok (dirty_packages, order)}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### wdiff_projenvr_tc
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let wdiff_projenvr_tc default_env ids packages modules state (dirty_packages, 
> order) =
>     wdiff_projenvr default_env dirty_nodes_tc funs_proj_package_tc 
> funs_proj_file_tc 
>         ids packages modules state (dirty_packages, order)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### wdiff_projenvr_prepass
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let wdiff_projenvr_prepass default_env ids packages modules state 
> (dirty_packages, order) =
>     wdiff_projenvr default_env dirty_nodes_prepass funs_proj_package_prepass 
> funs_proj_file_prepass 
>         ids packages modules state (dirty_packages, order)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### LoadResult
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type LoadResult =
>     | LoadModule of path: string * ModuleState option
>     | LoadPackage of package_dir: string * SchemaState option
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### is_top_down
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> open System.Threading.Tasks
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let is_top_down (x : string) = Path.GetExtension x = ".spi"
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### spiproj_suffix
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let spiproj_suffix x = Path.Combine(x,"package.spiproj")
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### loader_package
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let loader_package default_env (packages : SchemaEnv) (modules : ModuleEnv) 
> (pdir, text) =
>     let pdir' = pdir |> SpiralFileSystem.standardize_path
>     trace Verbose (fun () -> $"ServerUtils.loader_package / pdir: {pdir} / 
> pdir': {pdir'}") _locals
>     let pdir = pdir'
>     let queue = Queue()
>     let load_module modules path =
>         match Map.tryFind path modules with
>         | Some _ -> ()
>         | None ->
>             task {
>                 if File.Exists path then
>                     try let! x = File.ReadAllTextAsync(path)
>                         return LoadModule(path,wdiff_module_init_all default_env
> (is_top_down path) x |> Some)
>                     with _ -> return LoadModule(path,None)
>                 else return LoadModule(path,None) // Note: We need this case 
> otherwise 'con' might cause the file read to deadlock. 
> https://superuser.com/questions/86999/why-cant-i-name-a-folder-or-file-con-in-wi
> ndows
>             } |> queue.Enqueue
> 
>     let schema (pdir,text) = schema (pdir,text) |> fun x -> 
> LoadPackage(pdir,Some (ss_from_result x))
>     let load_package_from_disk packages pdir =
>         trace Verbose (fun () -> 
> $"ServerUtils.loader_package.load_package_from_disk / pdir: {pdir}") _locals
>         task {
>             if Directory.Exists pdir then
>                 try
>                     let! x = File.ReadAllTextAsync(spiproj_suffix pdir)
>                     return schema (pdir,x)
>                 with _ ->
>                     return LoadPackage(pdir,None)
>             else return LoadPackage(pdir,None) // Ditto.
>         } |> queue.Enqueue
>     let load_package_some (pdir,text) =
>         trace Verbose (fun () -> $"ServerUtils.loader_package.load_package_some 
> / pdir: {pdir}") _locals
>         schema (pdir,text) |> Task.FromResult |> queue.Enqueue
>     let load_package_none packages pdir =
>         let pdir' = pdir |> SpiralFileSystem.standardize_path
>         trace Verbose (fun () -> $"ServerUtils.loader_package.load_package_none 
> / pdir: {pdir} / pdir': {pdir'}") _locals
>         let pdir = pdir'
>         match Map.tryFind pdir packages with
>         | Some _ -> ()
>         | None -> load_package_from_disk packages pdir
> 
>     let dirty_packages = HashSet()
>     let rec invalidate_parent packages (x : DirectoryInfo) =
>         if x <> null then
>             let x' = x.FullName |> SpiralFileSystem.standardize_path
>             // trace Verbose (fun () -> 
> $"""ServerUtils.loader_package.invalidate_parent / x.FullName: {x.FullName |> 
> SpiralSm.replace "\\" "|"} / x': {x'} / packages: %A{packages |> Map.keys} / 
> pdir: {pdir}""") _locals
>             let x_ = x
>             let x = {| FullName = x' |}
>             if Map.containsKey x.FullName packages then 
> dirty_packages.Add(x.FullName) |> ignore
>             else invalidate_parent packages x_.Parent
> 
>     let mutable packages = packages
>     let mutable modules = modules
> 
>     match text with
>     | Some text -> load_package_some (pdir,text)
>     | None ->
>         // trace Verbose (fun () -> $"ServerUtils.loader_package / pdir: 
> {pdir}") _locals
>         match Map.tryFind pdir packages with
>         | Some x -> LoadPackage(pdir,Some x) |> Task.FromResult |> queue.Enqueue
>         | None -> load_package_from_disk packages pdir
> 
>     while 0 < queue.Count do
>         match queue.Dequeue().Result with
>         | LoadPackage(pdir,Some x) -> 
>             let pdir' = pdir |> SpiralFileSystem.standardize_path
>             // trace Verbose (fun () -> $"ServerUtils.loader_package.LoadPackage
> / pdir: {pdir} / pdir': {pdir'}") _locals
>             packages <- Map.add pdir' x packages; dirty_packages.Add(pdir') |> 
> ignore; invalidate_parent packages (Directory.GetParent(pdir'))
>             x.schema.packages |> List.iter (fun x -> load_package_none packages 
> (snd x.dir))
>             let rec loop = function
>                 | FileHierarchy.Directory(_,_,_,l) -> list l
>                 | FileHierarchy.File(_,(_,path),_) ->
>                     let path' = path |> SpiralFileSystem.standardize_path
>                     trace Verbose (fun () -> 
> $"ServerUtils.loader_package.LoadPackage | FileHierarchy.File(_,(_,path),_) / 
> path: {path} / path': {path'}") _locals
>                     load_module modules path'
>             and list l = List.iter loop l
>             list x.schema.modules
>         | LoadPackage(pdir,None) -> packages <- Map.remove pdir packages; 
> dirty_packages.Add(pdir) |> ignore; invalidate_parent packages 
> (Directory.GetParent(pdir))
>         | LoadModule(mdir,Some x) ->
>             let mdir' = mdir |> SpiralFileSystem.standardize_path
>             trace Verbose (fun () -> $"ServerUtils.loader_package.LoadModule / 
> mdir: {mdir} / mdir': {mdir'}") _locals
>             modules <- Map.add mdir' x modules
>         | LoadModule(mdir,None) -> modules <- Map.remove mdir modules
>     packages, dirty_packages, modules
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### graph_update
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let graph_update (packages : SchemaEnv) (g : MirroredGraph) (dirty_packages : 
> string HashSet) =
>     Seq.fold (fun g x ->
>         match Map.tryFind x packages with
>         | Some v -> links_replace g x (v.schema.packages |> List.map (fun x -> 
> snd x.dir))
>         | None -> links_remove g x
>         ) g dirty_packages
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### package_ids_update
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let package_ids_update (packages : SchemaEnv) package_ids (dirty_packages : 
> string HashSet) =
>     let adds,removals = dirty_packages |> Seq.toArray |> Array.partition (fun x 
> -> Map.containsKey x packages)
>     let adds = adds |> Array.filter (fun x -> Map.containsKey x (fst 
> package_ids) = false) |> Array.mapi (fun i x -> (i,x))
>     let package_ids, removed_pids = removals |> Array.fold (fun ((a,b),l as s) x
> -> match Map.tryFind x a with Some x' -> (Map.remove x a, Map.remove x' b), x' 
> :: l | None -> s) (package_ids,[[]])
>     removed_pids,
>     if Array.isEmpty adds then package_ids else
>     Map.fold (fun s x _ ->
>         Array.mapFold (fun s x -> if s = fst x then (s+1, snd x),s+1 else x,s) x
> s |> fst
>         ) adds (snd package_ids)
>     |> Array.fold (fun (a,b) (k,v) -> Map.add v k a, Map.add k v b) package_ids
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### package_ids_remove
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let package_ids_remove (s : ResultMap<PackageId,_>) l =
>     List.fold (fun s x -> {ok=Map.remove x s.ok; error=Map.remove x s.error}) s 
> l
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## SignalRSupervisor
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> // #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.ref/7.0.11/ref/n
> et7.0/Microsoft.AspNetCore.SignalR.Core.dll"
> // #r 
> @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll"
> // #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.com
> mon/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Common.dll"
> // #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.cli
> ent/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Client.dll"
> // #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.common/7.0.0
> /lib/net7.0/Microsoft.AspNetCore.SignalR.Common.dll"
> // #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client/7.0.0
> /lib/net7.0/Microsoft.AspNetCore.SignalR.Client.dll"
> // #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client.core/
> 7.0.0/lib/net7.0/Microsoft.AspNetCore.SignalR.Client.Core.dll"
> // #r 
> @"../../../../../../../.nuget/packages/fsharp.json/0.4.1/lib/netstandard2.0/FSha
> rp.Json.dll"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> // open System
> open System.IO
> open System.Collections.Generic
> 
> open Hopac
> open Hopac.Infixes
> open Hopac.Extensions
> open Hopac.Stream
> 
> // open Common
> open SpiralFileSystem.Operators
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### LocalizedErrors
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type LocalizedErrors = {|uri : string; errors : RString list|}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### TracedError
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type TracedError = {|trace : string list; message : string|}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### SupervisorErrorSources
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type SupervisorErrorSources = {
>     fatal : string Ch
>     tokenizer : LocalizedErrors Ch
>     parser : LocalizedErrors Ch
>     typer : LocalizedErrors Ch
>     package : LocalizedErrors Ch
>     traced : TracedError Ch
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### SupervisorReq
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type SupervisorReq =
>     | ProjectFileOpen of {|uri : string; spiprojText : string|}
>     | ProjectFileChange of {|uri : string; spiprojText : string|}
>     | ProjectFileLinks of {|uri : string|} * RString list IVar
>     | ProjectCodeActions of {|uri : string|} * RAction list IVar
>     | ProjectCodeActionExecute of {|uri : string; action : ProjectCodeAction|} *
> {|result : string option|} IVar
>     | FileOpen of {|uri : string; spiText : string|}
>     | FileChange of {|uri : string; spiEdit : SpiEdit|}
>     | FileDelete of {|uris : string [[]]|}
>     | FileTokenRange of {|uri : string; range : VSCRange|} * int [[]] IVar
>     | HoverAt of {|uri : string; pos : VSCPos|} * string option IVar
>     | BuildFile of {|uri : string; backend : string|} * string option IVar
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### SupervisorState
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type SupervisorState = {
>     packages : SchemaEnv
>     modules : ModuleEnv
>     packages_infer : ResultMap<PackageId,ProjStateTC>
>     packages_prepass : ResultMap<PackageId,ProjStatePrepass>
>     graph : MirroredGraph
>     package_ids : Map<string,int> * Map<int,string>
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### proj_validate
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let proj_validate default_env s dirty_packages =
>     let order,socs = circular_nodes s.graph dirty_packages
>     let packages = ss_validate s.packages s.modules (order,socs)
>     let packages_infer = wdiff_projenvr_tc default_env (fst s.package_ids) 
> packages s.modules s.packages_infer (dirty_packages, order)
>     order, {s with packages_infer = packages_infer; packages=packages}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### proj_graph_update
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let proj_graph_update default_env s dirty_packages =
>     let removed_pids,package_ids = package_ids_update s.packages s.package_ids 
> dirty_packages
>     let packages_infer, packages_prepass = package_ids_remove s.packages_infer 
> removed_pids, package_ids_remove s.packages_prepass removed_pids
>     let graph = graph_update s.packages s.graph dirty_packages
>     proj_validate default_env {s with graph = graph; package_ids = package_ids; 
> packages_infer = packages_infer; packages_prepass = packages_prepass} 
> dirty_packages
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### proj_open
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let proj_open default_env s (dir, text) =
>     let packages,dirty_packages,modules = loader_package default_env s.packages 
> s.modules (dir,text)
>     proj_graph_update default_env {s with packages = packages; modules = 
> modules} dirty_packages
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### proj_revalidate_owner
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let proj_revalidate_owner default_env s file =
>     let rec loop (x : DirectoryInfo) =
>         if x = null then [[||]], s
>         else
>             let x' = x.FullName |> SpiralFileSystem.standardize_path
>             // trace Verbose (fun () -> $"""Supervisor.proj_revalidate_owner / 
> x.FullName: {x.FullName |> SpiralSm.replace "\\" "|"} / x': {x'}""") _locals
>             let x_ = x
>             let x = {| FullName = x' |}
>             if Map.containsKey x.FullName s.packages then proj_validate 
> default_env s (HashSet [[x.FullName]])
>             elif File.Exists(spiproj_suffix x.FullName) then proj_open 
> default_env s (x.FullName,None)
>             else loop x_.Parent
>     loop (Directory.GetParent(file))
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### file_delete
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let file_delete default_env s (files : string [[]]) =
>     let deleted_modules = HashSet()
>     let deleted_packages = HashSet()
>     files |> Array.iter (fun k ->
>         s.packages |> Map.iter (fun k' _ -> if (spiproj_suffix k').StartsWith(k)
> then deleted_packages.Add(k') |> ignore)
>         s.modules |> Map.iter (fun k' _ -> if k'.StartsWith(k) then 
> deleted_modules.Add(k') |> ignore)
>         )
>     let modules = Seq.foldBack Map.remove deleted_modules s.modules
>     let packages = Seq.foldBack Map.remove deleted_packages s.packages
>     let dirty_packages = HashSet(deleted_packages)
>     let revalidate_parent (x : string) =
>         trace Verbose (fun () -> $"Supervisor.file_delete.revalidate_parent.loop
> / x.FullName: {x}") _locals
>         let rec loop (x : DirectoryInfo) =
>             if x <> null then
>                 let x' = x.FullName |> SpiralFileSystem.standardize_path
>                 let x = DirectoryInfo x'
>                 if Map.containsKey x.FullName s.packages then 
> dirty_packages.Add(x.FullName) |> ignore
>                 else loop x.Parent
>         loop(Directory.GetParent x)
>     Seq.iter revalidate_parent deleted_modules; Seq.iter revalidate_parent 
> deleted_packages
>     Seq.toArray deleted_modules, proj_graph_update default_env {s with modules =
> modules; packages = packages} dirty_packages
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### AttentionState
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type AttentionState = {
>     modules : string Set * string list
>     packages : string Set * string list
>     old_packages : SchemaEnv
>     supervisor : SupervisorState
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### attention_server
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let attention_server (errors : SupervisorErrorSources) (req : _ Ch) =
>     let push path (s,o) = Set.add path s, path :: o
>     let add (s,o) l = Array.foldBack (fun x (s,o as z) -> if Set.contains x s 
> then z else Set.add x s, x :: o) l (s,o)
>     let update (s : AttentionState) (modules,packages,supervisor) = {modules = 
> add s.modules modules; packages = add s.packages packages; supervisor = 
> supervisor; old_packages = s.supervisor.packages}
>     let rec loop (s : AttentionState) =
>         let clear uri =
>             Hopac.start (Ch.send errors.tokenizer {|uri=uri; errors=[[]]|})
>             Hopac.start (Ch.send errors.parser {|uri=uri; errors=[[]]|})
>             Hopac.start (Ch.send errors.typer {|uri=uri; errors=[[]]|})
>         let send_tokenizer uri x = Hopac.start (Ch.send errors.tokenizer 
> {|uri=uri; errors=x|})
>         let clear_parse uri = Hopac.start (Ch.send errors.parser {|uri=uri; 
> errors=[[]]|})
>         let clear_typer uri = Hopac.start (Ch.send errors.typer {|uri=uri; 
> errors=[[]]|})
>         let clear_old_package x = Map.tryFind x s.old_packages |> Option.iter 
> (fun x ->
>             let rec loop = function
>                 | FileHierarchy.File(_,(_,pdir),_) -> clear (file_uri pdir)
>                 | FileHierarchy.Directory(_,_,_,l) -> list l
>             and list l = List.iter loop l
>             list x.schema.modules
>             )
> 
>         let inline body uri interrupt ers ers' src next =
>             Ch.Try.take req >>= function
>             | Some x -> interrupt x
>             | None ->
>                 if List.isEmpty ers then next ers'
>                 else
>                     let ers = List.append ers ers'
>                     Hopac.start (Ch.send src {|uri=uri; errors=ers|})
>                     next ers
> 
>         let loop_module (s : AttentionState) mpath (m : ModuleState) =
>             let mpath' = mpath |> SpiralFileSystem.standardize_path
>             let uri = file_uri mpath
>             trace Verbose (fun () -> 
> $"Supervisor.attention_server.loop.loop_module / mpath: {mpath} / mpath': 
> {mpath'} / uri: {uri}") _locals
>             let mpath = mpath'
>             
> 
>             
>             let interrupt x = loop (update {s with modules=push mpath s.modules}
> x)
>             let rec bundler (r : BlockBundleState) ers' = r >>= function
>                 | Cons((_,x),rs) -> body uri interrupt x.errors ers' 
> errors.parser (bundler rs)
>                 | Nil -> loop s
>             send_tokenizer uri m.tokenizer.errors
>             clear_parse uri
>             clear_typer uri
>             bundler m.bundler [[]]
> 
>         let rec loop_package (s : AttentionState) pdir = function
>             | (mpath,l) :: ls ->
>                 let mpath' = mpath |> SpiralFileSystem.standardize_path
>                 let uri = file_uri mpath
>                 let pdir' = pdir |> SpiralFileSystem.standardize_path
>                 trace Verbose (fun () -> 
> $"Supervisor.attention_server.loop.loop_package / mpath: {mpath} / mpath': 
> {mpath'} / uri: {uri} / pdir: {pdir} / pdir': {pdir'}") _locals
>                 let interrupt x = loop (update {s with packages=push pdir 
> s.packages} x)
>                 let rec typer (r : TypecheckerStateValue Stream) ers' = r >>= 
> function
>                     | Cons((_,x,_),rs) -> body uri interrupt x.errors ers' 
> errors.typer (typer rs)
>                     | Nil -> loop_package s pdir' ls
>                 let rec bundler (r : BlockBundleState) ers' = r >>= function
>                     | Cons((_,x),rs) -> body uri interrupt x.errors ers' 
> errors.parser (bundler rs)
>                     | Nil -> clear_typer uri; typer l [[]]
>                 let m = s.supervisor.modules.[[mpath']]
>                 send_tokenizer uri m.tokenizer.errors
>                 clear_parse uri
>                 bundler m.bundler [[]]
>             | [[]] -> loop s
> 
>         let package s =
>             match s.packages with
>             | se,x :: xs ->
>                 let x' = x |> SpiralFileSystem.standardize_path
>                 trace Verbose (fun () -> 
> $"Supervisor.attention_server.loop.package / x: {x} / x': {x'}") _locals
>                 let x = x'
>                 let s = {s with packages=Set.remove x se,xs}
>                 let package_errors =
>                     match Map.tryFind x s.supervisor.packages with
>                     | Some v -> List.concat [[v.errors_parse; v.errors_modules; 
> v.errors_packages]]
>                     | None -> [[]]
>                 Hopac.start (Ch.send errors.package 
> ({|uri=file_uri(spiproj_suffix x); errors=package_errors|}))
>                 clear_old_package x
>                 match Map.tryFind x (fst s.supervisor.package_ids) with
>                 | Some uid ->
>                     match Map.tryFind uid s.supervisor.packages_infer.ok with
>                     | Some v ->
>                         let path_tcvals =
>                             let uids_file = v.files.uids_file
>                             let rec loop x s =
>                                 match x with
>                                 | ProjFilesTree.File(mid,path,_) ->
>                                     let path' = path |> 
> SpiralFileSystem.standardize_path
>                                     trace Verbose (fun () -> 
> $"Supervisor.attention_server.loop | WDiff.File(mid,path,_) / path: {path} / 
> path': {path'}") _locals
>                                     (path', (fst uids_file.[[mid]]).result) :: s
>                                 | ProjFilesTree.Directory(_,_,l) -> list l s
>                             and list l s = List.foldBack loop l s
>                             list v.files.files.tree [[]]
>                         loop_package s x path_tcvals
>                     | None -> loop s
>                 | None -> loop s
>             | _, [[]] -> req >>= (update s >> loop)
> 
>         match s.modules with
>         | se,x :: xs ->
>             let s = {s with modules=Set.remove x se,xs}
>             match Map.tryFind x s.supervisor.modules with
>             | Some v -> loop_module s x v
>             | None -> clear (file_uri x); package s
>         | _,[[]] -> package s
> 
>     (req >>= fun (modules,packages,supervisor) ->
>         loop {modules = Set.ofArray modules, Array.toList modules; packages = 
> Set.ofArray packages, Array.toList packages; supervisor = supervisor; 
> old_packages = Map.empty}
>         )
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### show_position
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let show_position (s : SupervisorState) (x : Range) =
>     let line = (fst x.range).line
>     let col = (fst x.range).character
>     let er_code = s.modules.[[x.path]].tokenizer.lines_text.[[line]]
>     System.Text.StringBuilder()
>         .AppendLine(sprintf "Error trace on line: %i, column: %i in module: %s."
> (line+1) (col+1) x.path)
>         .AppendLine(er_code)
>         .Append(' ',col)
>         .AppendLine("^")
>         .ToString()
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### show_trace
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let show_trace s (x : Trace) (msg : string) =
>     let rec loop (l : Trace) = function
>         | (x : Range) :: xs ->
>             match l with
>             | x' :: _ when x.path = x'.path && fst x.range = fst x'.range -> 
> loop l xs
>             | _ -> loop (x :: l) xs
>         | _ -> l
>     List.map (show_position s) (loop [[]] x), msg
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### BuildResult
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type BuildResult =
>     | BuildOk of {|code: string; file_extension : string|} list
>     | BuildErrorTrace of string list * string
>     | BuildFatalError of string
>     | BuildSkip
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### workspaceRoot
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let workspaceRoot = SpiralFileSystem.get_workspace_root ()
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### targetDir
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let targetDir = workspaceRoot </> "target/spiral_Eval"
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### traceDir
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let traceDir = targetDir </> "supervisor_trace"
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### dir
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let dir uri =
>     let result = 
> System.IO.FileInfo(System.Uri(uri).LocalPath).Directory.FullName
>     let result' = result |> SpiralFileSystem.standardize_path
>     trace Verbose (fun () -> $"Supervisor.dir / uri: {uri} / result: {result} / 
> result': {result'}") _locals
>     result'
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### file
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let file uri =
>     let result =
>         try
>             System.IO.FileInfo(System.Uri(uri).LocalPath).FullName
>         with ex ->
>             trace Verbose (fun () -> $"Supervisor.file / uri: {uri} / ex: 
> %A{ex}") _locals
>             uri
>     let result' = result |> SpiralFileSystem.standardize_path
>     // let result = result |> SpiralSm.replace "\\" "|"
>     // trace Verbose (fun () -> $"Supervisor.file / uri: {uri} / result: 
> {result} / result': {result'}") _locals
>     result'
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### supervisor_server
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let supervisor_server (default_env : DefaultEnv) atten (errors : 
> SupervisorErrorSources) req =
>     let fatal x = Hopac.start (Ch.send errors.fatal x)
>     let handle_packages (dirty_packages,s) = Hopac.start (Ch.send atten 
> ([[||]],dirty_packages,s)); s
>     let handle_file_packages file (dirty_packages,s) = Hopac.start (Ch.send 
> atten ([[|file|]],dirty_packages,s)); s
>     let handle_files_packages (dirty_files,(dirty_packages,s)) = Hopac.start 
> (Ch.send atten (dirty_files,dirty_packages,s)); s
>     let loop (s : SupervisorState) = req >>- function
>         | ProjectFileChange x | ProjectFileOpen x -> proj_open default_env s 
> (dir x.uri,Some x.spiprojText) |> handle_packages
>         | FileOpen x ->
>             let file = file x.uri
>             // trace Verbose (fun () -> 
> $"Supervisor.supervisor_server.loop.FileOpen / x: %A{x} / file: {file}") _locals
>             match Map.tryFind file s.modules with
>             | Some m -> wdiff_module_all default_env m x.spiText
>             | None -> wdiff_module_init_all default_env (is_top_down file) 
> x.spiText
>             |> fun v -> proj_revalidate_owner default_env {s with modules = 
> Map.add file v s.modules} file
>             |> handle_file_packages file
>         | FileChange x ->
>             let file = file x.uri
>             trace Verbose (fun () -> 
> $"Supervisor.supervisor_server.loop.FileChange / x: %A{x} / file: {file}") 
> _locals
>             match Map.tryFind file s.modules with
>             | None -> fatal "It is not possible to apply a change to a file that
> is not present in the environment. Try reopening it in the editor."; s
>             | Some m ->
>                 match wdiff_module_edit default_env m x.spiEdit with
>                 | Result.Ok v -> proj_revalidate_owner default_env {s with 
> modules = Map.add file v s.modules} file |> handle_file_packages file
>                 | Result.Error er -> fatal er; s
>         | FileDelete x ->
>             trace Verbose (fun () -> 
> $"Supervisor.supervisor_server.loop.FileDelete / x: {x}") _locals
>             file_delete default_env s (Array.map file x.uris) |> 
> handle_files_packages
>         | ProjectFileLinks(x,res) ->
>             let l =
>                 match Map.tryFind (dir x.uri) s.packages with
>                 | None -> [[]]
>                 | Some x ->
>                     let mutable l = [[]]
>                     x.schema.packages |> List.iter (fun x ->
>                         let r,dir = x.dir
>                         trace Verbose (fun () -> 
> $"Supervisor.supervisor_server.ProjectFileLinks / x.schema.packages |> List.iter
> / dir: {dir}") _locals
>                         if Map.containsKey dir s.packages then l <- (r,file_uri 
> (spiproj_suffix dir)) :: l
>                         )
>                     let rec loop = function
>                         | FileHierarchy.Directory(_,_,_,l) -> list l
>                         | FileHierarchy.File(_,(r,path),_) ->
>                             trace Verbose (fun () -> 
> $"Supervisor.supervisor_server.ProjectFileLinks.loop | 
> SpiProj.FileHierarchy.File(_,(r,path),_) / path: {path}") _locals
>                             if Map.containsKey path s.modules then l <- 
> (r,file_uri path) :: l
>                     and list l = List.iter loop l
>                     list x.schema.modules
>                     l
>             Hopac.start (IVar.fill res l)
>             s
>         | ProjectCodeActions(x,res) ->
>             let z =
>                 match Map.tryFind (dir x.uri) s.packages with
>                 | None -> [[]]
>                 | Some x ->
>                     let mutable z = [[]]
>                     let actions_dir (r,path) =
>                         match r with
>                         | None -> ()
>                         | Some r ->
>                             if Directory.Exists(path) then
>                                 z <- (r,RenameDirectory {|dirPath=path; 
> target=null; validate_as_file=false|}) :: (r,DeleteDirectory {|dirPath=path; 
> range=r|}) :: z
>                             else
>                                 z <- (r,CreateDirectory {|dirPath=path|}) :: z
>                     actions_dir x.schema.moduleDir
>                     actions_dir x.schema.packageDir
> 
>                     let rec actions_module = function
>                         | FileHierarchy.Directory(r',(r,path),_,l) ->
>                             trace Verbose (fun () -> 
> $"Supervisor.supervisor_server.ProjectCodeActions.actions_module | 
> SpiProj.FileHierarchy.Directory(r',(r,path),_,l) / path: {path}") _locals
>                             if Directory.Exists(path) then
>                                 z <- (r,RenameDirectory {|dirPath=path; 
> target=null; validate_as_file=true|}) :: (r,DeleteDirectory {|dirPath=path; 
> range=r'|}) :: z
>                             else
>                                 z <- (r,CreateDirectory {|dirPath=path|}) :: z
>                             actions_modules l
>                         | FileHierarchy.File(r',(r,path),_) ->
>                             trace Verbose (fun () -> 
> $"Supervisor.supervisor_server.ProjectCodeActions.actions_module | 
> SpiProj.FileHierarchy.File(r',(r,path),_) / path: {path}") _locals
>                             if Map.containsKey path s.modules then
>                                 z <- (r,RenameFile {|filePath=path; 
> target=null|}) :: (r,DeleteFile {|range=r'; filePath=path|}) :: z
>                             else
>                                 z <- (r,CreateFile {|filePath=path|}) :: z
>                     and actions_modules l = List.iter actions_module l
>                     actions_modules x.schema.modules
>                     z
>             Hopac.start (IVar.fill res z)
>             s
>         | ProjectCodeActionExecute(x,res) ->
>             let error, s =
>                 match code_action_execute x.action with
>                 | Result.Error x -> Some x, s
>                 | Result.Ok null -> None, proj_open default_env s (dir 
> x.uri,None) |> handle_packages
>                 | Result.Ok path -> None, file_delete default_env s [[|path|]] 
> |> handle_files_packages
>             Hopac.start (IVar.fill res {|result=error|})
>             s
>         | FileTokenRange(x, res) ->
>             let v =
>                 match Map.tryFind (file x.uri) s.modules with
>                 | Some v -> Some v
>                 | None when x.uri |> SpiralSm.ends_with ".dib" ->
>                     x.uri
>                     |> SpiralSm.replace "file:///" ""
>                     |> File.ReadAllText
>                     |> wdiff_module_init_all default_env (is_top_down x.uri)
>                     |> Some
>                 | None -> None
> 
>             match v with
>             | Some v ->
>                 Hopac.start (semantic_tokens v.parser >>= (vscode_tokens x.range
> >> IVar.fill res))
>             | None ->
>                 if x.uri |> SpiralSm.starts_with "vscode-notebook-cell" |> not 
> then
>                     trace Debug
>                         (fun () -> 
> $"Supervisor.supervisor_server.FileTokenRange")
>                         (fun () -> $"module=None / x.uri: {x.uri} / {_locals 
> ()}")
> 
>                 Hopac.start (IVar.fill res [[||]])
>             s
>         | HoverAt(x,res) ->
>             let file = file x.uri
>             let pos = x.pos
>             let _locals () = $"x: %A{x} / file: {file} / res: %A{res}"
>             trace Verbose (fun () -> $"Supervisor.supervisor_server.HoverAt") 
> _locals
>             let go_hover x =
>                 match x with
>                 | None -> None
>                 | Some (x : InferResult) ->
>                     x.hovers |> Array.tryPick (fun ((a,b),r) ->
>                         if pos.line = a.line && (a.character <= pos.character &&
> pos.character < b.character) then Some r else None
>                         )
>                 |> (fun x ->
>                     let _locals () = $"x: %A{x}"
>                     trace Verbose (fun () -> 
> $"Supervisor.supervisor_server.HoverAt.go_hover") _locals
>                     x
>                 )
>                 |> IVar.fill res
>             let go_block (x : TypecheckerState) =
>                 let rec loop s (x : TypecheckerStateValue Stream) =
>                     x >>= function
>                     | Nil -> go_hover s
>                     | Cons((_,x,_),b) ->
>                         let _locals () = $"b: {b}"
>                         trace Verbose (fun () -> 
> $"Supervisor.supervisor_server.HoverAt.go_block.loop Cons") _locals
>                         if x.offset <= pos.line then loop (Some x) b
>                         // If the block is over the offset that means the 
> previous one must be the right choice.
>                         else go_hover s
>                 Hopac.start (loop None x.result)
>             let rec go_file uids_file trees =
>                 let rec loop = function
>                     | ProjFilesTree.File(uid,file',_) -> if file = file' then 
> go_block (Array.get uids_file uid |> fst); true else false
>                     | ProjFilesTree.Directory(_,_,l) -> list l
>                 and list l = List.exists loop l
>                 list trees
>             let rec go_parent (x : DirectoryInfo) =
>                 trace Verbose (fun () -> 
> $"Supervisor.supervisor_server.HoverAt.go_parent / x: %A{x}") _locals
>                 if x = null then false
>                 else
>                     let path = x.FullName |> SpiralFileSystem.standardize_path
>                     if Map.containsKey path s.packages then
>                         let pid = (fst s.package_ids).[[path]]
>                         match Map.tryFind pid s.packages_infer.ok with
>                         | None -> false
>                         | Some x -> go_file x.files.uids_file x.files.files.tree
>                     else
>                         go_parent x.Parent
>             if go_parent (Directory.GetParent(file)) = false then Hopac.start 
> (IVar.fill res None)
>             s
>         | BuildFile (x, res) ->
>             let backend = x.backend
>             let file = file x.uri
>             let _locals () = $"x: %A{x} / file: {file}"
>             trace Verbose (fun () -> $"Supervisor.supervisor_server.BuildFile") 
> _locals
>             let handle_build_result = function
>                 | BuildOk l ->
>                     Job.fromAsync (async {
>                         for x in l do
>                             do! 
> System.IO.File.WriteAllTextAsync(System.IO.Path.ChangeExtension(file,x.file_exte
> nsion), x.code) |> Async.AwaitTask
>                     })
>                     |> Hopac.start
>                     l
>                     |> List.map (fun x -> x.code)
>                     |> String.concat "\n"
>                     |> Some
>                     |> IVar.fill res
>                 | BuildFatalError x as x' ->
>                     trace Info (fun () -> 
> $"Supervisor.supervisor_server.BuildFile.handle_build_result / BuildFatalError 
> x: %A{x}") _locals
>                     Hopac.start (Ch.send errors.fatal x)
>                     IVar.fill res None
>                 | BuildErrorTrace(a,b) as x' ->
>                     trace Info (fun () -> 
> $"Supervisor.supervisor_server.BuildFile.handle_build_result / BuildErrorTrace 
> x': %A{x'}") _locals
>                     Hopac.start (Ch.send errors.traced {|trace=a; message=b|})
>                     IVar.fill res None
>                 | BuildSkip ->
>                     trace Info (fun () -> 
> $"Supervisor.supervisor_server.BuildFile.handle_build_result.BuildSkip") _locals
>                     IVar.fill res None
>             let file_build (s : SupervisorState) mid (tc : ProjStateTC, prepass 
> : ProjStatePrepass) =
>                 trace Verbose (fun () -> 
> $"""Supervisor.supervisor_server.BuildFile.file_build / modules: 
> %A{s.modules.Keys |> SpiralSm.concat ", "} / packages: %A{s.packages.Keys |> 
> SpiralSm.concat ", "} / package_ids: %A{s.package_ids |> fst |> fun x -> x.Keys 
> |> SpiralSm.concat ", "}""") _locals
>                 let a,b = tc.files.uids_file.[[mid]]
>                 let x,_x = prepass.files.uids_file.[[mid]]
>                 Hopac.start (a.state >>= fun (has_error',_) ->
>                     b >>= fun (has_error,_) ->
>                     if has_error || has_error' then fatal $"File 
> {Path.GetFileNameWithoutExtension file} has a type error somewhere in its 
> path."; Job.unit() else
>                     Stream.foldFun (fun _ (_,_,env) -> env) top_env_emptyPrepass
> x.result >>= fun env ->
>                     let body() =
>                         match Map.tryFind "main" env.term with
>                         | Some main ->
>                             let prototypes_instances = 
> Dictionary(env.prototypes_instances)
>                             let nominals = 
>                                 let t = HashConsTable()
>                                 let d = Dictionary()
>                                 env.nominals |> Map.iter (fun k v -> d.Add(k, 
> t.Add {|v with id=k|}))
>                                 d
>                             try 
>                                 let build codegen backend file_extension =
>                                     let (a,_),b = peval 
> {prototypes_instances=prototypes_instances; nominals=nominals; backend=backend} 
> main
>                                     BuildOk [[{|code = codegen b a; 
> file_extension = file_extension|}]]
>                                 match backend with
>                                 | "Gleam" -> build codegenGleam "Gleam" "gleam"
>                                 | "Fsharp" -> build codegenFsharp "Fsharp" "fsx"
>                                 | "C" -> build CodegenC.codegenC "C" "c"
>                                 | "Python + Cuda" -> build 
> (CodegenPython.codegenPython default_env) "Python" "py"
>                                 | "Cuda C++" -> BuildFatalError "The host C++ 
> backend originally made for FPGAs, and then ported to Cuda has been removed in 
> v2.10.0 of Spiral. Please use an earlier version to access it." // Date: 
> 5/8/2024
>                                 | "Python" -> BuildFatalError "The prototype 
> Python backend has been replaced by the Python + Cuda one in v2.5.0 of Spiral. 
> Please use an earlier version to access it." // Date: 11/3/2023
>                                 | "UPMEM: Python + C" -> BuildFatalError "The 
> UPMEM Python + C backend has been replaced by the Python + Cuda one in v2.5.0 of
> Spiral. Please use an earlier version to access it." // Date: 11/3/2023
>                                 | "HLS C++" -> BuildFatalError "The HLS C++ 
> backend has been replaced by the Cuda one in v2.5.0 of Spiral. Please use an 
> earlier version to access it." // Date: 10/17/2023
>                                 | "Cython*" | "Cython" -> BuildFatalError "The 
> Cython backend has been replaced by the Python one in v2.3.1 of Spiral. Please 
> use an earlier version to access it." // Date: 12/27/2022
>                                 | _ -> BuildFatalError $"Cannot recognize the 
> backend: {backend}"
>                             with
>                                 | :? PartEvalTypeError as e -> 
> BuildErrorTrace(show_trace s e.Data0 e.Data1)
>                                 | :? CodegenError as e -> 
> BuildFatalError(e.Data1)
>                                 | :? CodegenErrorWithPos as e -> 
> BuildErrorTrace(show_trace s e.Data0 e.Data1)
>                                 | ex ->
>                                     if System.IO.Directory.Exists traceDir then
>                                         let guid = System.DateTime.Now |> 
> SpiralDateTime.new_guid_from_date_time
>                                         let trace_file = traceDir </> 
> $"{guid}_error.json"
>                                         async {
>                                             try
>                                                 do! $"{ex}" |> 
> SpiralFileSystem.write_all_text_async trace_file
>                                             with ex ->
>                                                 trace Critical (fun () -> 
> $"Supervisor.supervisor_server.BuildFile.file_build / ex: {ex |> 
> SpiralSm.format_exception}") _locals
>                                         }
>                                         |> Async.Start
>                                     trace Critical (fun () -> 
> $"Supervisor.supervisor_server.BuildFile.file_build / ex: %A{ex}") _locals
>                                     BuildFatalError(ex.Message)
>                         | None -> BuildFatalError $"Cannot find `main` in file 
> {Path.GetFileNameWithoutExtension file}."
> 
>                     // The partial evaluator is using too much stack space, so 
> as a temporary fix, I am running it on a separate thread with much more of it.
>                     let result = IVar()
>                     let thread = new 
> System.Threading.Thread(System.Threading.ThreadStart(body >> IVar.fill result >>
> Hopac.start), 1 <<< 28) // Stack space = 2 ** 28 = 256mb.
>                     thread.Start()
>                     result >>= handle_build_result
>                     )
>             let file_find (s : SupervisorState) pdir =
>                 trace Verbose (fun () -> 
> $"Supervisor.supervisor_server.BuildFile.file_find / pdir: {pdir}") _locals
>                 let uid = (fst s.package_ids).[[pdir]]
>                 match Map.tryFind uid s.packages_infer.ok, Map.tryFind uid 
> s.packages_prepass.ok with
>                 | Some a, Some b ->
>                     let rec loop = function
>                         | ProjFilesTree.Directory(_,_,l) -> list l
>                         | ProjFilesTree.File(mid,path,_) ->
>                             trace Verbose (fun () -> 
> $"Supervisor.supervisor_server.BuildFile.file_find.loop | File(mid,path,_) / 
> path: {path}") _locals
>                             if file = path then file_build s mid (a, b); true 
> else false
>                     and list l = List.exists loop l
>                     if list b.files.files.tree = false then fatal $"File 
> {Path.GetFileNameWithoutExtension file} cannot be found in the project 
> {spiproj_suffix pdir}"
> 
>                     s
>                 | None, None -> fatal $"Owner of file 
> {Path.GetFileNameWithoutExtension file} has an error. Location: {spiproj_suffix 
> pdir}"; s
>                 | _ -> failwith "Compiler error: The project status should be 
> the same in both infer and prepass."
>             let update_owner pdir =
>                 let order,dirty_packages = topological_sort' (fst s.graph) 
> [[pdir]]
>                 let packages_prepass = wdiff_projenvr_prepass default_env (fst 
> s.package_ids) s.packages s.packages_infer.ok s.packages_prepass 
> (dirty_packages, order.ToArray())
>                 file_find {s with packages_prepass = packages_prepass} pdir
>             let rec find_owner (x : DirectoryInfo) =
>                 if x = null then fatal $"Cannot find the package file of 
> {file}"; s
>                 else
>                     let x' = x.FullName |> SpiralFileSystem.standardize_path
>                     trace Verbose (fun () -> 
> $"""Supervisor.supervisor_server.BuildFile.find_owner / x.FullName: {x.FullName 
> |> SpiralSm.replace "\\" "|"} / x': {x'}""") _locals
>                     let x_ = x
>                     let x = {| FullName = x' |}
>                     if Map.containsKey x.FullName s.packages then update_owner 
> x.FullName
>                     else find_owner x_.Parent
>             find_owner (Directory.GetParent(file))
> 
>     Job.iterateServer {
>         packages = Map.empty
>         modules = Map.empty
>         packages_infer = {ok=Map.empty; error=Map.empty}
>         packages_prepass = {ok=Map.empty; error=Map.empty}
>         graph = mirrored_graph_empty
>         package_ids = Map.empty, Map.empty
>         } loop
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### ClientReq
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type ClientReq =
>     | ProjectFileOpen of {|uri : string; spiprojText : string|}
>     | ProjectFileChange of {|uri : string; spiprojText : string|}
>     | ProjectFileLinks of {|uri : string|}
>     | ProjectCodeActionExecute of {|uri : string; action : ProjectCodeAction|}
>     | ProjectCodeActions of {|uri : string|}
>     | FileOpen of {|uri : string; spiText : string|}
>     | FileChange of {|uri : string; spiEdit : SpiEdit|}
>     | FileDelete of {|uris : string [[]]|} // Also works for project files and 
> directories.
>     | FileTokenRange of {|uri : string; range : VSCRange|}
>     | HoverAt of {|uri : string; pos : VSCPos|}
>     | BuildFile of {|uri : string; backend : string|}
>     | Ping of bool
>     | Exit of bool
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### ClientErrorsRes
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type ClientErrorsRes =
>     | FatalError of string
>     | TracedError of TracedError
>     | PackageErrors of {|uri : string; errors : RString list|}
>     | TokenizerErrors of {|uri : string; errors : RString list|}
>     | ParserErrors of {|uri : string; errors : RString list|}
>     | TypeErrors of {|uri : string; errors : RString list|}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### Supervisor
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Supervisor = {
>     supervisor_ch : SupervisorReq Ch
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## new_server
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> // #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.ref/7.0.11/ref/n
> et7.0/Microsoft.AspNetCore.SignalR.Core.dll"
> // #r 
> @"../../../../../../../.nuget/packages/system.management/9.0.0/lib/netstandard2.
> 0/System.Management.dll"
> // #r 
> @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
> dard2.1/FSharp.Control.AsyncSeq.dll"
> // #r 
> @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
> 0/System.Reactive.dll"
> // #r 
> @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/
> netstandard2.0/System.Reactive.Linq.dll"
> // #r 
> @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.com
> mon/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Common.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.cli
> ent/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Client.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.common/7.0.0
> /lib/net7.0/Microsoft.AspNetCore.SignalR.Common.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client/9.0.0
> /lib/net9.0/Microsoft.AspNetCore.SignalR.Client.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client.core/
> 9.0.0/lib/net9.0/Microsoft.AspNetCore.SignalR.Client.Core.dll"
> #r 
> @"../../../../../../../.nuget/packages/fsharp.json/0.4.1/lib/netstandard2.0/FSha
> rp.Json.dll"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #r 
> @"../../../../../../../.nuget/packages/system.management/9.0.0/lib/netstandard2.
> 0/System.Management.dll"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #if _LINUX
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6
> 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.dll"
> #else
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/
> 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.dll"
> #endif
> 
> #if _LINUX
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6
> 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.dll"
> #else
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/
> 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.dll"
> #endif
> 
> #if _LINUX
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6
> 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.Core.dll"
> #else
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/
> 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.Core.dll"
> #endif
> 
> #if _LINUX
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6
> 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Cors.dll"
> #else
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/
> 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Cors.dll"
> #endif
> 
> #if _LINUX
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6
> 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll
> "
> #else
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/
> 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll"
> #endif
> 
> #if _LINUX
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6
> 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Connections.Abstracti
> ons.dll"
> #else
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/
> 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Connections.Abstractions.
> dll"
> #endif
> 
> #if _LINUX
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6
> 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Hosting.Abstractions.
> dll"
> #else
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/
> 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Hosting.Abstractions.dll"
> #endif
> 
> #if _LINUX
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6
> 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Http.Connections.dll"
> #else
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/
> 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Http.Connections.dll"
> #endif
> 
> #if _LINUX
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6
> 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Routing.dll"
> #else
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/
> 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Routing.dll"
> #endif
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #r 
> @"../../../../../../../.nuget/packages/microsoft.extensions.logging/9.0.0/lib/ne
> t9.0/Microsoft.Extensions.Logging.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.extensions.logging.abstractions
> /9.0.0/lib/net9.0/Microsoft.Extensions.Logging.Abstractions.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.extensions.dependencyinjection.
> abstractions/9.0.0/lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstracti
> ons.dll"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> open Hopac
> open Hopac.Infixes
> // open Common
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let new_server () =
>     let event = Event<ClientErrorsRes> ()
>     // let disposable' = connection.On<string> ("ServerToClientMsg", 
> event.Trigger)
>     let stream =
>         FSharp.Control.AsyncSeq.unfoldAsync
>             (fun () -> async {
>                 let! msg = event.Publish |> Async.AwaitEvent
>                 return Some (msg, ())
>             })
>             ()
> 
>     let error_ch_create msg =
>         let x = Ch()
>         Hopac.server (Job.forever (Ch.take x >>= (
>             msg >> fun (x : ClientErrorsRes) ->
>                 Hopac.Job.awaitUnitTask (
>                     task {
>                         event.Trigger x
>                         trace Verbose (fun () -> $"spiral_compiler.new_server / 
> error_ch_create / x: %A{x}") (fun () -> "")
>                         ()
>                     }
>                     |> (fun (x : System.Threading.Tasks.Task<unit>) -> x :> 
> System.Threading.Tasks.Task)
>                 )
>         )))
>         x
> 
>     let errors : SupervisorErrorSources = {
>         fatal = error_ch_create FatalError
>         package = error_ch_create PackageErrors
>         tokenizer = error_ch_create TokenizerErrors
>         parser = error_ch_create ParserErrors
>         typer = error_ch_create TypeErrors
>         traced = error_ch_create TracedError
>         }
>     let supervisor = Ch()
>     let atten = Ch()
> 
>     do Hopac.server (attention_server errors atten)
> 
>     let args = [[| "--port"; "0" |]]
>     let env = parseStartup args
>     do Hopac.start (supervisor_server env atten errors supervisor)
> 
>     let job_null job =
>         job
>         |> Hopac.start
>         task { return null }
>     let serialize (x : obj) =
>         match x with
>         | null -> null
>         | :? Option<string> as x -> x.Value
>         | _ -> FSharp.Json.Json.serialize x
>     let job_val job =
>         let res = IVar()
>         let job' =
>             job res
>         Hopac.queueAsTask (job' >>=. IVar.read res >>- serialize)
>     {|
>         job_null = job_null
>         job_val = job_val
>         errors = stream
>         supervisor = supervisor
>     |}
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> SpiralTrace.TraceLevel.US0_0 |> set_trace_level
> 
> let server = new_server<Job<unit>, obj, string option, Job<unit>, unit> ()
> async {
> (*
>     let fullPath = Supervisor.workspaceRoot </> 
> "deps/spiral/lib/spiral/package.spiproj"
>     let fullPathUri = fullPath |> SpiralFileSystem.normalize_path |> 
> SpiralFileSystem.new_file_uri
>     let! spiprojCode = fullPath |> SpiralFileSystem.read_all_text_async
>     let projectFileOpenArgs = {| uri = fullPathUri; spiprojText = spiprojCode |}
>     let! projectFileOpenResult =
>         job_null (supervisor *<+ Supervisor.SupervisorReq.ProjectFileOpen 
> projectFileOpenArgs)
>         |> Async.AwaitTask
>     trace Info (fun () -> $"Supervisor.ProjectFileOpen / projectFileOpenResult: 
> %A{projectFileOpenResult}") (fun () -> "")
>     do! Async.Sleep 500
> 
>     let fullPath = 
> "C:/home/git/polyglot/target/spiral_Eval/packages/00b4ba49258747d295857ee25629c7
> b59c75cf4ab06958a0e3b0680ae9062d87/package.spiproj"
>     let fullPathUri = fullPath |> SpiralFileSystem.normalize_path |> 
> SpiralFileSystem.new_file_uri
>     let! spiprojCode = fullPath |> SpiralFileSystem.read_all_text_async
>     let projectFileOpenArgs = {| uri = fullPathUri; spiprojText = spiprojCode |}
>     let! projectFileOpenResult =
>         job_null (supervisor *<+ Supervisor.SupervisorReq.ProjectFileOpen 
> projectFileOpenArgs)
>         |> Async.AwaitTask
>     trace Info (fun () -> $"Supervisor.ProjectFileOpen / projectFileOpenResult: 
> %A{projectFileOpenResult}") (fun () -> "")
>     do! Async.Sleep 500
> *)
>     let code = "inl main () = 1i32 + 1"
>     let struct (fullPath, disposable) = SpiralFileSystem.create_temp_dir ()
>     use _ = disposable
>     let fullPathSpi = fullPath </> "main.spi"
>     do! code |> SpiralFileSystem.write_all_text_async fullPathSpi
>     let fullPathSpiproj = fullPath </> "package.spiproj"
>     do! "packages:\n |core-\nmodules:\n main\n" |> 
> SpiralFileSystem.write_all_text_async fullPathSpiproj
>     // let x = code |> Supervisor.persistCode
>     let fullPathUri = fullPathSpi |> SpiralFileSystem.normalize_path |> 
> SpiralFileSystem.new_file_uri
>     // let! code = fullPath |> SpiralFileSystem.read_all_text_async
>     let fileOpenArgs = {| uri = fullPathUri; spiText = code |}
>     let! fileOpenResult =
>         server.job_null (server.supervisor *<+ SupervisorReq.FileOpen 
> fileOpenArgs)
>         |> Async.AwaitTask
>         |> Async.runWithTimeoutAsync 20000
>         |> Async.map Option.get
>     trace Info (fun () -> $"spiral_compiler.run / FileOpen / fileOpenResult: 
> %A{fileOpenResult}") (fun () -> "")
> 
> //    do! Async.Sleep 500
> 
>     let backendId = "Fsharp"
>     let buildFileArgs = {| uri = fullPathUri; backend = backendId |}
>     let! buildFileResult =
>         server.job_val (fun res -> server.supervisor *<+ 
> SupervisorReq.BuildFile(buildFileArgs,res))
>         |> Async.AwaitTask
>         |> Async.runWithTimeoutAsync 15000
>         |> Async.map Option.get
>     trace Info (fun () -> $"spiral_compiler.run / BuildFile / buildFileResult: 
> %A{buildFileResult}") (fun () -> "")
>     return buildFileResult
> 
> 
>     (*
>     let lines = code |> SpiralSm.split "\n"
>     let fileTokenRangeArgs =
>         {|
>             uri = fullPathUri
>             range =
>                 {|
>                     line = 0
>                     character = 0
>                 |},
>                 {|
>                     line = lines.Length - 1
>                     character = lines.[[lines.Length - 1]].Length
>                 |}
>         |}
>     let! fileTokenRangeResult =
>         job_val (fun res -> supervisor *<+ 
> Supervisor.SupervisorReq.FileTokenRange(fileTokenRangeArgs,res))
>         |> Async.AwaitTask
>     trace Info (fun () -> $"Supervisor.FileTokenRange / fileTokenRangeResult: 
> %A{fileTokenRangeResult.Length}") (fun () -> "")
>     *)
> }
> |> Async.runWithTimeout 10000
> |> Option.map (fun x -> x |> SpiralSm.replace "\r\n" "\n")
> |> _assertEqual (Some "2\n")
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> ── [ 2.62s - diagnostics ] ─────────────────────────────────────────────────────
> │ input.fsx (5,14)-(5,24) typecheck warning The method or 
> function 'new_server' should not be given explicit type argument(s) because it 
> does not declare its type parameters explicitly
> 
> ── [ 2.62s - stdout ] ──────────────────────────────────────────────────────────
> │ 00:01:34 i #1 spiral_compiler.run / FileOpen / 
> fileOpenResult: <null>
> │ 00:01:35 i #322 spiral_compiler.run / BuildFile / 
> buildFileResult: "2
> │ "
> │ Some "2
> │ "
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## getParentProcessId
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let getParentProcessId () =
>     if SpiralPlatform.is_windows () |> not
>     then 0u
>     else
>         let pid = System.Diagnostics.Process.GetCurrentProcess().Id
>         let query = $"SELECT ParentProcessId FROM Win32_Process WHERE ProcessId 
> = {pid}"
>         use searcher = new System.Management.ManagementObjectSearcher (query)
>         use results = searcher.Get ()
>         let data = results |> Seq.cast<System.Management.ManagementObject>
>         if data |> Seq.isEmpty
>         then 0u
>         else data |> Seq.head |> (fun mo -> mo.[["ParentProcessId"]] :?> uint32)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## assemblyName
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let assemblyName = System.Reflection.Assembly.GetEntryAssembly().GetName().Name
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## startParentWatcher
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline startParentWatcher () =
>     if [[ "dotnet-repl" ]] |> List.contains assemblyName |> not then
>         let parentAsyncChild = async {
>             let parentProcessId = getParentProcessId ()
>             trace Verbose
>                 (fun () -> "spiral_compiler.startParentWatcher")
>                 (fun () -> $"parentProcessId: {parentProcessId} / {_locals ()}")
> 
>             if parentProcessId > 0u then
>                 let parentProcess = parentProcessId |> int |> 
> System.Diagnostics.Process.GetProcessById
>                 do! parentProcess.WaitForExitAsync () |> Async.AwaitTask
>                 trace Debug
>                     (fun () -> "spiral_compiler.startParentWatcher / Parent 
> process has exited. Performing cleanup...")
>                     (fun () -> $"{_locals ()}")
>                 System.Threading.Thread.Sleep 1000
>                 System.Environment.Exit 1
>         }
> 
>         parentAsyncChild |> Async.Start
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## SpiralHub
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> // open System
> open System.IO
> open System.Collections.Generic
> 
> open Hopac
> open Hopac.Infixes
> open Hopac.Extensions
> open Hopac.Stream
> 
> // open Common
> open SpiralFileSystem.Operators
> 
> open FSharp.Json
> open Microsoft.AspNetCore.SignalR
> open Microsoft.AspNetCore.SignalR.Client
> 
> type SpiralHub(supervisor : Supervisor) =
>     inherit Hub()
> 
>     member _.ClientToServerMsg (x : string) =
>         let job_null job = Hopac.start job; task { return null }
> 
>         let serialize (x : obj) =
>             match x with
>             | null -> null
>             | :? Option<string> as x -> x.Value
>             | _ -> Json.serialize x
> 
>         let job_val job = let res = IVar() in Hopac.queueAsTask (job res >>=. 
> IVar.read res >>- serialize)
>         let supervisor = supervisor.supervisor_ch
> 
>         let client_req = Json.deserialize x
> 
>         if Directory.Exists traceDir then
>             match client_req with
>             | Ping _ -> ()
>             | _ ->
>                 let req_name = client_req.GetType().Name
>                 let guid = System.DateTime.Now |> 
> SpiralDateTime.new_guid_from_date_time
>                 let trace_file = traceDir </> $"{guid}_{req_name}.json"
>                 
>                 async {
>                     do! Async.Sleep 500
>                     try
>                         do! x |> SpiralFileSystem.write_all_text_async 
> trace_file
>                     with ex ->
>                         trace Critical (fun () -> $"SpiralHub.ClientToServerMsg 
> / ex: {ex |> SpiralSm.format_exception}") _locals
>                 }
>                 |> Async.Start
> 
>         match client_req with
>         | ProjectFileOpen x -> job_null (supervisor *<+ 
> SupervisorReq.ProjectFileOpen x)
>         | ProjectFileChange x -> job_null (supervisor *<+ 
> SupervisorReq.ProjectFileChange x)
>         | ProjectCodeActionExecute x -> job_val (fun res -> supervisor *<+ 
> SupervisorReq.ProjectCodeActionExecute(x,res))
>         | ProjectFileLinks x -> job_val (fun res -> supervisor *<+ 
> SupervisorReq.ProjectFileLinks(x,res))
>         | ProjectCodeActions x -> job_val (fun res -> supervisor *<+ 
> SupervisorReq.ProjectCodeActions(x,res))
>         | FileOpen x -> job_null (supervisor *<+ SupervisorReq.FileOpen x)
>         | FileChange x -> job_null (supervisor *<+ SupervisorReq.FileChange x)
>         | FileDelete x -> job_null (supervisor *<+ SupervisorReq.FileDelete x)
>         | FileTokenRange x -> job_val (fun res -> supervisor *<+ 
> SupervisorReq.FileTokenRange(x,res))
>         | HoverAt x -> job_val (fun res -> supervisor *<+ 
> SupervisorReq.HoverAt(x,res))
>         | BuildFile x -> job_val (fun res -> supervisor *<+ 
> SupervisorReq.BuildFile(x,res))
>         | Ping _ -> task { return null }
>         | Exit _ ->
>             async {
>                 trace Debug (fun () -> "Supervisor.SpiralHub.ClientToServerMsg /
> exiting...") _locals
>                 async {
>                     do! Async.Sleep 300
>                     System.Diagnostics.Process.GetCurrentProcess().Kill ()
>                 }
>                 |> Async.Start
>                 return null
>             }
>             |> Async.StartAsTask
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## main
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> open Microsoft.AspNetCore.Builder
> open Microsoft.AspNetCore.Hosting
> open Microsoft.Extensions.DependencyInjection
> open Microsoft.Extensions.Logging
> 
> let main args =
>     SpiralTrace.TraceLevel.US0_1 |> set_trace_level
>     // Scheduler.Global.setCreate { Scheduler.Create.Def with MaxStackSize = 
> 1024 * 8192 |> Some }
> 
>     let env = parseStartup args
> 
>     let uri_server = $"http://localhost:{env.port}"
> 
>     printfn "Server bound to: %s" uri_server
>     trace Debug (fun () -> $"pwd: {System.Environment.CurrentDirectory}") 
> _locals
>     let dllPath = System.Reflection.Assembly.GetExecutingAssembly().Location |> 
> System.IO.Path.GetDirectoryName
>     trace Debug (fun () -> $"dllPath: {dllPath}") _locals
>     trace Debug (fun () -> $"targetDir: {targetDir}") _locals
>     let builder = Microsoft.AspNetCore.Builder.WebApplication.CreateBuilder()
>     builder.Logging.SetMinimumLevel LogLevel.Warning |> ignore
>     builder.Services
>         .AddCors()
>         .AddSignalR(fun x -> 
>             x.MaximumReceiveMessageSize <- 1 <<< 20 // 1mb
>             x.EnableDetailedErrors <- true
>             ) |> ignore
>         
>     builder.Services
>         .AddSingleton<Supervisor>(fun s ->
>             let hub = s.GetService<IHubContext<SpiralHub>>()
>             let broadcast x = 
> hub.Clients.All.SendCoreAsync("ServerToClientMsg",[[|Json.serialize x|]])
>             
>             let server = new_server ()
> 
>             server.errors
>             |> FSharp.Control.AsyncSeq.mapAsync (fun x ->
>                 broadcast x |> Async.AwaitTask
>             )
>             |> FSharp.Control.AsyncSeq.iterAsyncParallel (fun x -> async { () })
>             |> Async.StartChild
>             |> Async.RunSynchronously
>             |> ignore
> 
>             {supervisor_ch=server.supervisor}
>             ) |> ignore
>     builder.WebHost.UseUrls [[|uri_server|]] |> ignore
>     builder.Logging.SetMinimumLevel(LogLevel.Warning) |> ignore
> 
>     let app = builder.Build()
>     app.UseCors(fun x ->
>         x.SetIsOriginAllowed(fun _ -> true)
>             .AllowAnyHeader()
>             .AllowAnyMethod()
>             .AllowCredentials() |> ignore
>         ) |> ignore
>     app.MapHub<SpiralHub> "" |> ignore
> 
>     // use _ = Eval.startTokenRangeWatcher ()
>     startParentWatcher ()
>     // use _ = Eval.startCommandsWatcher uri_server
> 
>     printfn $"Starting the Spiral Server. It is bound to: {uri_server}"
>     app.Run()
>     0
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> // SpiralHub.main [[|"--port"; "13805"|]]
00:01:58 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 908434 }
00:01:58 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/spiral/apps/compiler/spiral_compiler.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/spiral/apps/compiler/spiral_compiler.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:59 v #5 ! [NbConvertApp] Converting notebook c:/home/git/spiral/apps/compiler/spiral_compiler.dib.ipynb to html
00:01:59 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:01:59 v #7 !   validate(nb)
00:02:00 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:02:00 v #9 !   return _pygments_highlight(
00:02:28 v #10 ! [NbConvertApp] Writing 4813740 bytes to c:\home\git\spiral\apps\compiler\spiral_compiler.dib.html
00:02:29 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 875 }
00:02:29 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 875 }
00:02:29 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/spiral/apps/compiler/spiral_compiler.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/spiral/apps/compiler/spiral_compiler.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:02:29 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:02:29 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:02:29 d #16 spiral.run / dib / { exit_code = 0; result_length = 909368 }
00:00:00 d #1 writeDibCode / output: Fs / path: spiral_compiler.dib
00:00:00 d #2 parseDibCode / output: Fs / file: spiral_compiler.dib
00:00:00 d #1 persistCodeProject / packages: [Fable.Core; FSharp.Control.AsyncSeq; FSharpx.Collections; ... ] / modules: [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: spiral_compiler / hash:  / code.Length: 815239
00:00:00 d #2 buildProject / fullPath: c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fsproj
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  "publish "c:/home/git\polyglot\target/Builder\spiral_compiler\spiral_compiler.fsproj" --configuration Release --output "C:\home\git\spiral\apps\compiler\dist" --runtime linux-x64"; options = { command = dotnet publish "c:/home/git\polyglot\target/Builder\spiral_compiler\spiral_compiler.fsproj" --configuration Release --output "C:\home\git\spiral\apps\compiler\dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "c:\home\git\polyglot\target\Builder\spiral_compiler" } }
00:00:01 v #2 >   Determining projects to restore...
00:00:01 v #3 >   Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
00:00:01 v #4 >   The last full restore is still up to date. Nothing left to do.
00:00:01 v #5 >   Total time taken: 0 milliseconds
00:00:02 v #6 >   Restored c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fsproj (in 301 ms).
00:00:13 v #7 > c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fs(10087,85): warning FS0040: This and other recursive references to the object(s) being defined will be checked for initialization-soundness at runtime through the use of a delayed reference. This is because you are defining one or more recursive objects, rather than recursive functions. This warning may be suppressed by using '#nowarn "40"' or '--nowarn:40'. [c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fsproj]
00:00:13 v #8 > c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fs(10610,85): warning FS0040: This and other recursive references to the object(s) being defined will be checked for initialization-soundness at runtime through the use of a delayed reference. This is because you are defining one or more recursive objects, rather than recursive functions. This warning may be suppressed by using '#nowarn "40"' or '--nowarn:40'. [c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fsproj]
00:00:13 v #9 > c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fs(11434,43): warning FS0040: This and other recursive references to the object(s) being defined will be checked for initialization-soundness at runtime through the use of a delayed reference. This is because you are defining one or more recursive objects, rather than recursive functions. This warning may be suppressed by using '#nowarn "40"' or '--nowarn:40'. [c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fsproj]
00:00:13 v #10 > c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fs(12364,43): warning FS0040: This and other recursive references to the object(s) being defined will be checked for initialization-soundness at runtime through the use of a delayed reference. This is because you are defining one or more recursive objects, rather than recursive functions. This warning may be suppressed by using '#nowarn "40"' or '--nowarn:40'. [c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fsproj]
00:00:14 v #11 > c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fs(13030,71): warning FS0040: This and other recursive references to the object(s) being defined will be checked for initialization-soundness at runtime through the use of a delayed reference. This is because you are defining one or more recursive objects, rather than recursive functions. This warning may be suppressed by using '#nowarn "40"' or '--nowarn:40'. [c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fsproj]
00:00:32 v #12 >   spiral_compiler -> c:\home\git\polyglot\target\Builder\spiral_compiler\bin\Release\net9.0\linux-x64\spiral_compiler.dll
00:00:33 v #13 >   spiral_compiler -> C:\home\git\spiral\apps\compiler\dist\
00:00:33 d #14 runtime.execute_with_options_async / { exit_code = 0; output_length = 3020; options = { command = dotnet publish "c:/home/git\polyglot\target/Builder\spiral_compiler\spiral_compiler.fsproj" --configuration Release --output "C:\home\git\spiral\apps\compiler\dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "c:\home\git\polyglot\target\Builder\spiral_compiler" } }
00:00:33 d #15 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  "publish "c:/home/git\polyglot\target/Builder\spiral_compiler\spiral_compiler.fsproj" --configuration Release --output "C:\home\git\spiral\apps\compiler\dist" --runtime win-x64"; options = { command = dotnet publish "c:/home/git\polyglot\target/Builder\spiral_compiler\spiral_compiler.fsproj" --configuration Release --output "C:\home\git\spiral\apps\compiler\dist" --runtime win-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "c:\home\git\polyglot\target\Builder\spiral_compiler" } }
00:00:34 v #16 >   Determining projects to restore...
00:00:34 v #17 >   Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
00:00:34 v #18 >   The last full restore is still up to date. Nothing left to do.
00:00:34 v #19 >   Total time taken: 0 milliseconds
00:00:35 v #20 >   Restored c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fsproj (in 275 ms).
00:00:35 v #21 >   spiral_compiler -> c:\home\git\polyglot\target\Builder\spiral_compiler\bin\Release\net9.0\win-x64\spiral_compiler.dll
00:00:37 v #22 >   spiral_compiler -> C:\home\git\spiral\apps\compiler\dist\
00:00:37 d #23 runtime.execute_with_options_async / { exit_code = 0; output_length = 478; options = { command = dotnet publish "c:/home/git\polyglot\target/Builder\spiral_compiler\spiral_compiler.fsproj" --configuration Release --output "C:\home\git\spiral\apps\compiler\dist" --runtime win-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "c:\home\git\polyglot\target\Builder\spiral_compiler" } }
spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: C:\home\git\polyglot\target\Builder\spiral_compiler
spiral/apps/compiler/build.ps1 / $targetDir = C:\home\git\polyglot\target\Builder\spiral_compiler / $projectName: spiral_compiler / $env:CI:''
spiral/apps/spiral/build.ps1 / ScriptDir: C:\home\git\spiral\apps\spiral / ResolvedScriptDir: C:\home\git\spiral\apps\spiral
polyglot/scripts/core.ps1/GetFullPath / Path: ../../deps/polyglot / Location: C:\home\git\spiral\apps\spiral / ResolvedLocation: C:\home\git\spiral\apps\spiral
polyglot/scripts/core.ps1/GetFullPath / FullPath: C:\home\git\spiral\deps\polyglot
polyglot/scripts/core.ps1/ResolveLink #4 / Path: C:\home\git\spiral\deps\polyglot / parent_target:  / path_target: C:\home\git\polyglot / parent: C:\home\git\spiral\deps / End: polyglot
00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "C:\home\git\spiral\apps\spiral/spiral.dib", "--working-directory", "C:\home\git\polyglot"])) }
00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/spiral/apps/spiral/spiral.dib", "--output-path", "c:/home/git/spiral/apps/spiral/spiral.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/spiral/apps/spiral/spiral.dib" --output-path "c:/home/git/spiral/apps/spiral/spiral.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = Some(
    "C:\home\git\polyglot",
) } }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ # spiral
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> open file_system_operators
> open rust.rust_operators
> open rust
> open sm'_operators
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> 
> open testing
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## get_args
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl get_args () =
>     {
>         fsharp = "fsharp", {
>             spi_path = "spi-path", 's'
>         }
>         gleam = "gleam", {
>             gleam_path = "gleam-path", 'g'
>             target = "target", 't'
>             deps = "deps", 'd'
>         }
>         cuda = "cuda", {
>             py_path = "py-path", 'p'
>             env = "env", 'e'
>             deps = "deps", 'd'
>         }
>         fable = "fable", {
>             fs_path = "fs-path", 'f'
>             command = "command", 'c'
>         }
>         rust = "rust", {
>             fs_path = "fs-path", 'f'
>             deps = "deps", 'd'
>             wasm = "wasm", 'w'
>             contract = "contract", 'c'
>             cleanup = "cleanup", 'l'
>         }
>         typescript = "typescript", {
>             fs_path = "fs-path", 'f'
>             deps = "deps", 'd'
>         }
>         python = "python", {
>             fs_path = "fs-path", 'f'
>             deps = "deps", 'd'
>         }
>         dib = "dib", {
>             path = "path", 'p'
>             retries = "retries", 'r'
>             working_directory = "working-directory", 'w'
>         }
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## cuda_env
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> union cuda_env =
>     | Pip
>     | Poetry
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## gleam_target
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> union gleam_target =
>     | Erlang
>     | JavaScript
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## get_command
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> let get_command () =
>     ##"command"
>     |> runtime.new_command
>     |> runtime.command_subcommand_required true
>     |> runtime.command_subcommand (
>         ##(get_args () .fsharp |> fst)
>         |> runtime.new_command
>         |> runtime.command_init_arg ((get_args () .fsharp |> snd).spi_path) (
>             runtime.arg_required true
>         )
>     )
>     |> runtime.command_subcommand (
>         ##(get_args () .gleam |> fst)
>         |> runtime.new_command
>         |> runtime.command_init_arg ((get_args () .gleam |> snd).gleam_path) (
>             runtime.arg_required true
>         )
>         |> runtime.command_init_arg ((get_args () .gleam |> snd).target) (
>             real runtime.arg_union `gleam_target ignore
>         )
>         |> runtime.command_init_arg ((get_args () .gleam |> snd).deps) (
>             runtime.arg_value_names ;[[ ##"NAME"; ##"VERSION" ]]
>             >> runtime.arg_num_args_range (
>                 runtime.new_value_range
>                     false
>                     (am'.Start (1i32 |> convert : unativeint))
>                     (am'.End eval)
>             )
>             >> runtime.arg_action runtime.Append
>         )
>     )
>     |> runtime.command_subcommand (
>         ##(get_args () .cuda |> fst)
>         |> runtime.new_command
>         |> runtime.command_init_arg ((get_args () .cuda |> snd).py_path) (
>             runtime.arg_required true
>         )
>         |> runtime.command_init_arg ((get_args () .cuda |> snd).env) (
>             real runtime.arg_union `cuda_env ignore
>         )
>         |> runtime.command_init_arg ((get_args () .cuda |> snd).deps) (
>             runtime.arg_value_names ;[[ ##"NAME"; ##"VERSION" ]]
>             >> runtime.arg_num_args_range (
>                 runtime.new_value_range
>                     false
>                     (am'.Start (1i32 |> convert : unativeint))
>                     (am'.End eval)
>             )
>             >> runtime.arg_action runtime.Append
>         )
>     )
>     |> runtime.command_subcommand (
>         ##(get_args () .fable |> fst)
>         |> runtime.new_command
>         |> runtime.command_init_arg ((get_args () .fable |> snd).fs_path) (
>             runtime.arg_required true
>         )
>         |> runtime.command_init_arg ((get_args () .fable |> snd).command) (
>             id
>         )
>     )
>     |> runtime.command_subcommand (
>         ##(get_args () .rust |> fst)
>         |> runtime.new_command
>         |> runtime.command_init_arg ((get_args () .rust |> snd).fs_path) (
>             runtime.arg_required true
>         )
>         |> runtime.command_init_arg ((get_args () .rust |> snd).deps) (
>             runtime.arg_value_names ;[[ ##"NAME"; ##"VERSION" ]]
>             >> runtime.arg_num_args_range (
>                 runtime.new_value_range
>                     false
>                     (am'.Start (1i32 |> convert : unativeint))
>                     (am'.End eval)
>             )
>             >> runtime.arg_action runtime.Append
>         )
>         |> runtime.command_init_arg ((get_args () .rust |> snd).wasm) (
>             runtime.arg_num_args_range (
>                 runtime.new_value_range
>                     true
>                     (am'.End eval)
>                     (am'.End fun _ => (1i32 |> convert : unativeint))
>             )
>             >> runtime.arg_require_equals true
>             >> runtime.arg_default_missing_value ""
>         )
>         |> runtime.command_init_arg ((get_args () .rust |> snd).contract) (
>             runtime.arg_num_args_range (
>                 runtime.new_value_range
>                     true
>                     (am'.End eval)
>                     (am'.End fun _ => (1i32 |> convert : unativeint))
>             )
>             >> runtime.arg_require_equals true
>             >> runtime.arg_default_missing_value ""
>         )
>         |> runtime.command_init_arg ((get_args () .rust |> snd).cleanup) (
>             runtime.arg_default_value "true"
>             >> runtime.arg_action runtime.SetFalse
>         )
>     )
>     |> runtime.command_subcommand (
>         ##(get_args () .typescript |> fst)
>         |> runtime.new_command
>         |> runtime.command_init_arg ((get_args () .typescript |> snd).fs_path) (
>             runtime.arg_required true
>         )
>         |> runtime.command_init_arg ((get_args () .typescript |> snd).deps) (
>             runtime.arg_value_names ;[[ ##"NAME"; ##"VERSION" ]]
>             >> runtime.arg_num_args_range (
>                 runtime.new_value_range
>                     false
>                     (am'.Start (1i32 |> convert : unativeint))
>                     (am'.End eval)
>             )
>             >> runtime.arg_action runtime.Append
>         )
>     )
>     |> runtime.command_subcommand (
>         ##(get_args () .python |> fst)
>         |> runtime.new_command
>         |> runtime.command_init_arg ((get_args () .python |> snd).fs_path) (
>             runtime.arg_required true
>         )
>         |> runtime.command_init_arg ((get_args () .python |> snd).deps) (
>             runtime.arg_value_names ;[[ ##"NAME"; ##"VERSION" ]]
>             >> runtime.arg_num_args_range (
>                 runtime.new_value_range
>                     false
>                     (am'.Start (1i32 |> convert : unativeint))
>                     (am'.End eval)
>             )
>             >> runtime.arg_action runtime.Append
>         )
>     )
>     |> runtime.command_subcommand (
>         ##(get_args () .dib |> fst)
>         |> runtime.new_command
>         |> runtime.command_init_arg ((get_args () .dib |> snd).path) (
>             runtime.arg_required true
>             // >> runtime.arg_value_parser (runtime.value_parser_path_buf ())
>         )
>         |> runtime.command_init_arg ((get_args () .dib |> snd).retries) (
>             runtime.arg_value_parser (runtime.value_parser_expr "u8")
>         )
>         |> runtime.command_init_arg ((get_args () .dib |> 
> snd).working_directory) (
>             id
>         )
>     )
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## fable
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### fable_target
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> union fable_target =
>     | Rust
>     | TypeScript
>     | Python
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### fable_runtime
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> union fable_runtime =
>     | Wasm : string
>     | Contract : string
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### execute_dotnet_fable
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> let execute_dotnet_fable { workspace_root_external fsproj_path extension 
> package_dir runtime } =
>     open runtime
>     execution_options fun x => { x with
>         command =
>             inl platform =
>                 if platform.is_windows ()
>                 then "_WINDOWS"
>                 else "_LINUX"
>             inl platform : string = $'$" --define {!platform}"'
>             inl runtime =
>                 match runtime with
>                 | Some (runtime : fable_runtime) =>
>                     inl runtime = runtime |> reflection.union_to_string |> 
> sm'.to_upper
>                     $'$" --define {!runtime}"'
>                 | None => ""
>             $'$"dotnet fable \\\"{!fsproj_path}\\\" --optimize --lang 
> {!extension} --extension .{!extension} --outDir 
> \\\"{!package_dir}\\\"{!platform}{!runtime}"'
>         working_directory = workspace_root_external |> resultm.box |> 
> resultm.ok'
>     }
>     |> execute_retry 3u8
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### get_package_dir
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> let get_package_dir { workspace_root target name hash } =
>     inl dir = workspace_root </> "target/spiral" </> name
>     match hash, (target : option fable_target) with
>     | Some hash, Some target => dir </> "packages" </> (target |> 
> reflection.union_to_string) </> hash
>     | _ => dir
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### persist_code_project
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> let persist_code_project { workspace_root package_dir packages modules name code
> } =
>     package_dir |> file_system.create_dir |> ignore
> 
>     inl fs_path = package_dir </> $'$"{!name}.fs"' |> file_system.normalize_path
>     code |> file_system.write_all_text_exists fs_path
> 
>     inl modules_code =
>         modules
>         |> listm.map fun path =>
>             inl path = workspace_root </> path
>             $'$"<Compile Include=\\\"{!path}\\\" />"' : string
>         |> listm'.box
>         |> seq.of_list'
>         |> sm'.concat "\\n        "
> 
>     inl packages_code =
>         packages
>         |> listm.map fun (package : string), (version : string) =>
>             $'$"<PackageReference Include=\\\"{!package}\\\" 
> Version=\\\"{!version}\\\" />"' : string
>         |> listm'.box
>         |> seq.of_list'
>         |> sm'.concat "\\n        "
> 
>     inl fsproj_path = package_dir </> $'$"{!name}.fsproj"' |> 
> file_system.normalize_path
>     inl fsproj_code : string =
>         $'$"<Project Sdk=\\\"Microsoft.NET.Sdk\\\">"'
>         +#. $'$"<PropertyGroup>"'
>         +#. $'$"    <TargetFramework>net9.0</TargetFramework>"'
>         +#. $'$"    <LangVersion>preview</LangVersion>"'
>         +#. $'$"    <RollForward>Major</RollForward>"'
>         +#. $'$"    <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>"'
>         +#. $'$"    <PublishAot>false</PublishAot>"'
>         +#. $'$"    <PublishTrimmed>false</PublishTrimmed>"'
>         +#. $'$"    <PublishSingleFile>true</PublishSingleFile>"'
>         +#. $'$"    <SelfContained>true</SelfContained>"'
>         +#. $'$"    <Version>0.0.1-alpha.1</Version>"'
>         +#. $'$"    <OutputType>Exe</OutputType>"'
>         +#. $'$"    <ServerGarbageCollection>true</ServerGarbageCollection>"'
>         +#. $'$"    
> <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection>"'
>         +#. $'$"</PropertyGroup>"'
> 
>         +#. $'$"<PropertyGroup 
> Condition=\\\"$([[MSBuild]]::IsOSPlatform(\'FreeBSD\'))\\\">"'
>         +#. $'$"    <DefineConstants>_FREEBSD</DefineConstants>"'
>         +#. $'$"</PropertyGroup>"'
> 
>         +#. $'$"<PropertyGroup 
> Condition=\\\"$([[MSBuild]]::IsOSPlatform(\'Linux\'))\\\">"'
>         +#. $'$"    <DefineConstants>_LINUX</DefineConstants>"'
>         +#. $'$"</PropertyGroup>"'
> 
>         +#. $'$"<PropertyGroup 
> Condition=\\\"$([[MSBuild]]::IsOSPlatform(\'OSX\'))\\\">"'
>         +#. $'$"    <DefineConstants>_OSX</DefineConstants>"'
>         +#. $'$"</PropertyGroup>"'
> 
>         +#. $'$"<PropertyGroup 
> Condition=\\\"$([[MSBuild]]::IsOSPlatform(\'Windows\'))\\\">"'
>         +#. $'$"    <DefineConstants>_WINDOWS</DefineConstants>"'
>         +#. $'$"</PropertyGroup>"'
> 
>         +#. $'$"<ItemGroup>"'
>         +#. $'$"    {!modules_code}"'
>         +#. $'$"    <Compile Include=\\\"{!fs_path}\\\" />"'
>         +#. $'$"</ItemGroup>"'
> 
>         +#. $'$"<ItemGroup>"'
>         +#. $'$"    {!packages_code}"'
>         +#. $'$"</ItemGroup>"'
> 
>         +#. $'$"</Project>"'
> 
>     fsproj_code |> file_system.write_all_text_exists fsproj_path
> 
>     fsproj_path
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### publish_project
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl publish_project runtime' output_dir path =
>     inl full_path = path |> file_system.get_full_path
>     inl file_dir = full_path |> file_system.directory_get_parent |> 
> optionm'.default_value' ""
>     inl extension = full_path |> file_system.get_extension
> 
>     trace Debug
>         fun () => "publish_project"
>         fun () => { full_path }
> 
>     match extension with
>     | "fsproj" => ()
>     | _ => failwith $'$"app.publish_project / Invalid project file / extension: 
> {!extension}"'
> 
>     inl runtimes =
>         runtime'
>         |> optionm.map listm.singleton
>         |> optionm'.default_value [[ "linux-x64"; "win-x64" ]]
> 
>     inl output_dir = output_dir |> optionm'.default_value "dist"
> 
>     runtimes
>     |> listm.map fun runtime' =>
>         runtime.execution_options fun x => { x with
>             command = $'$@@"dotnet publish \"\"{!path}\"\" --configuration 
> Release --output \"\"{!output_dir}\"\" --runtime {!runtime'}"'
>             working_directory = file_dir |> Some |> optionm'.box
>         }
>         |> runtime.execute_with_options
>         |> fst
>     |> listm'.sum
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### publish_code
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl publish_code { workspace_root runtime packages modules output_dir name code 
> } =
>     inl package_dir = get_package_dir { workspace_root name target = None; hash 
> = None }
>     inl fsproj_path = persist_code_project { workspace_root package_dir packages
> modules name code }
>     inl exit_code = fsproj_path |> publish_project runtime output_dir
>     if exit_code <>. 0 then
>         trace Critical
>             fun () => "publish_code"
>             fun () => {
>                 code = code |> sm'.ellipsis_end 400
>                 fsproj_text = fsproj_path |> file_system.read_all_text
>             }
>     exit_code
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! rust -d encoding_rs encoding_rs_io regex
> 
> publish_code {
>     workspace_root = file_system.get_workspace_root ()
>     runtime = None
>     packages = [[]]
>     modules = [[]]
>     output_dir = None
>     name = "test1"
>     code = "1 + 1 |> ignore"
> }
> |> _assert_eq 0
> 
> ── [ 42.87s - return value ] ───────────────────────────────────────────────────
> │ 00:00:00 v #1 file_system.create_dir / { dir = 
> c:/home/git\polyglot\target/spiral\test1 }
> │ 00:00:00 d #2 publish_project / { full_path = 
> \\?\C:\home\git\polyglot\target\spiral\test1\test1.fsproj }
> │ 00:00:00 d #3 runtime.execute_with_options / { 
> file_name = dotnet; arguments = ["publish", 
> "c:/home/git/polyglot/target/spiral/test1/test1.fsproj", "--configuration", 
> "Release", "--output", "dist", "--runtime", "win-x64"]; options = { command = 
> dotnet publish "c:/home/git/polyglot/target/spiral/test1/test1.fsproj" 
> --configuration Release --output "dist" --runtime win-x64; cancellation_token = 
> None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; 
> trace = true; working_directory = Some(
> │     "\\?\C:\home\git\polyglot\target\spiral\test1",
> │ ) } }
> │ 00:00:00 v #4 >   Determining projects to restore...
> │ 00:00:01 v #5 >   Restored 
> c:\home\git\polyglot\target\spiral\test1\test1.fsproj (in 246 ms).
> │ 00:00:02 v #6 >   test1 -> 
> c:\home\git\polyglot\target\spiral\test1\bin\Release\net9.0\win-x64\test1.dll
> │ 00:00:02 v #7 >   test1 -> 
> \\?\C:\home\git\polyglot\target\spiral\test1\dist\
> │ 00:00:02 v #8 runtime.execute_with_options / result / {
> exit_code = 0; std_trace_length = 265 }
> │ 00:00:02 d #9 runtime.execute_with_options / { 
> file_name = dotnet; arguments = ["publish", 
> "c:/home/git/polyglot/target/spiral/test1/test1.fsproj", "--configuration", 
> "Release", "--output", "dist", "--runtime", "linux-x64"]; options = { command = 
> dotnet publish "c:/home/git/polyglot/target/spiral/test1/test1.fsproj" 
> --configuration Release --output "dist" --runtime linux-x64; cancellation_token 
> = None; environment_variables = Array(MutCell([])); on_line = None; stdin = 
> None; trace = true; working_directory = Some(
> │     "\\?\C:\home\git\polyglot\target\spiral\test1",
> │ ) } }
> │ 00:00:03 v #10 >   Determining projects to restore...
> │ 00:00:04 v #11 >   Restored 
> c:\home\git\polyglot\target\spiral\test1\test1.fsproj (in 220 ms).
> │ 00:00:04 v #12 >   test1 -> 
> c:\home\git\polyglot\target\spiral\test1\bin\Release\net9.0\linux-x64\test1.dll
> │ 00:00:05 v #13 >   test1 -> 
> \\?\C:\home\git\polyglot\target\spiral\test1\dist\
> │ 00:00:05 v #14 runtime.execute_with_options / result / 
> { exit_code = 0; std_trace_length = 267 }
> │ __assert_eq / actual: 0 / expected: 0
> │ 
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! rust -d encoding_rs encoding_rs_io regex
> 
> publish_code {
>     workspace_root = file_system.get_workspace_root ()
>     runtime = None
>     packages = [[]]
>     modules = [[]]
>     output_dir = None
>     name = "test2"
>     code = "1 + a |> ignore"
> }
> |> _assert_eq 2
> 
> ── [ 44.78s - return value ] ───────────────────────────────────────────────────
> │ 00:00:00 v #1 file_system.create_dir / { dir = 
> c:/home/git\polyglot\target/spiral\test2 }
> │ 00:00:00 d #2 publish_project / { full_path = 
> \\?\C:\home\git\polyglot\target\spiral\test2\test2.fsproj }
> │ 00:00:00 d #3 runtime.execute_with_options / { 
> file_name = dotnet; arguments = ["publish", 
> "c:/home/git/polyglot/target/spiral/test2/test2.fsproj", "--configuration", 
> "Release", "--output", "dist", "--runtime", "win-x64"]; options = { command = 
> dotnet publish "c:/home/git/polyglot/target/spiral/test2/test2.fsproj" 
> --configuration Release --output "dist" --runtime win-x64; cancellation_token = 
> None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; 
> trace = true; working_directory = Some(
> │     "\\?\C:\home\git\polyglot\target\spiral\test2",
> │ ) } }
> │ 00:00:00 v #4 >   Determining projects to restore...
> │ 00:00:01 v #5 >   Restored 
> c:\home\git\polyglot\target\spiral\test2\test2.fsproj (in 214 ms).
> │ 00:00:02 v #6 > 
> c:\home\git\polyglot\target\spiral\test2\test2.fs(1,5): error FS0039: The value 
> or constructor 'a' is not defined. 
> [c:\home\git\polyglot\target\spiral\test2\test2.fsproj]
> │ 00:00:02 v #7 runtime.execute_with_options / result / {
> exit_code = 1; std_trace_length = 285 }
> │ 00:00:02 d #8 runtime.execute_with_options / { 
> file_name = dotnet; arguments = ["publish", 
> "c:/home/git/polyglot/target/spiral/test2/test2.fsproj", "--configuration", 
> "Release", "--output", "dist", "--runtime", "linux-x...0:00:05 v #12 
> runtime.execute_with_options / result / { exit_code = 1; std_trace_length = 285 
> }
> │ 00:00:05 c #13 publish_code / { code = 1 + a |> ignore;
> fsproj_text = <Project Sdk="Microsoft.NET.Sdk">
> │ <PropertyGroup>
> │     <TargetFramework>net9.0</TargetFramework>
> │     <LangVersion>preview</LangVersion>
> │     <RollForward>Major</RollForward>
> │     <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
> │     <PublishAot>false</PublishAot>
> │     <PublishTrimmed>false</PublishTrimmed>
> │     <PublishSingleFile>true</PublishSingleFile>
> │     <SelfContained>true</SelfContained>
> │     <Version>0.0.1-alpha.1</Version>
> │     <OutputType>Exe</OutputType>
> │     <ServerGarbageCollection>true</ServerGarbageCollection>
> │     
> <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection>
> │ </PropertyGroup>
> │ <PropertyGroup 
> Condition="$([MSBuild]::IsOSPlatform('FreeBSD'))">
> │     <DefineConstants>_FREEBSD</DefineConstants>
> │ </PropertyGroup>
> │ <PropertyGroup 
> Condition="$([MSBuild]::IsOSPlatform('Linux'))">
> │     <DefineConstants>_LINUX</DefineConstants>
> │ </PropertyGroup>
> │ <PropertyGroup Condition="$([MSBuild]::IsOSPlatform('OSX'))">
> │     <DefineConstants>_OSX</DefineConstants>
> │ </PropertyGroup>
> │ <PropertyGroup 
> Condition="$([MSBuild]::IsOSPlatform('Windows'))">
> │     <DefineConstants>_WINDOWS</DefineConstants>
> │ </PropertyGroup>
> │ <ItemGroup>
> │     
> │     <Compile 
> Include="c:/home/git/polyglot/target/spiral/test2/test2.fs" />
> │ </ItemGroup>
> │ <ItemGroup>
> │     
> │ </ItemGroup>
> │ </Project> }
> │ __assert_eq / actual: 2 / expected: 2
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### read_file
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl read_file path =
>     inl code =
>         path
>         |> file_system.read_all_text
>         |> sm'.replace_regex $'@@"(?P<a> *)(?P<b>let\\s+main\\s+.*?\\s*=)"' 
> "$a[[<EntryPoint>]]\n$a$b"
>     inl code_trim = code |> sm'.trim_end [[]]
>     if code_trim |> sm'.ends_with "\\n()"
>     then code_trim |> sm'.slice 0i64 ((code_trim |> sm'.length) - 3)
>     else code
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### persist_file
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl persist_file { workspace_root package_dir packages modules path } =
>     inl full_path = path |> file_system.get_full_path
>     inl name = full_path |> file_system.get_file_name_without_extension
>     inl code = full_path |> read_file
>     persist_code_project { workspace_root package_dir packages modules name code
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### publish_file
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl publish_file { workspace_root runtime packages modules path } =
>     inl full_path = path |> file_system.get_full_path
>     inl dir = full_path |> file_system.directory_get_parent |> 
> optionm'.default_value' ""
>     publish_code {
>         workspace_root
>         runtime
>         packages
>         modules
>         output_dir = dir </> "dist" |> Some
>         name = full_path |> file_system.get_file_name_without_extension
>         code = full_path |> read_file
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## rust
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### get_workspace_cargo_toml_content
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl get_workspace_cargo_toml_content { workspace_root } : string =
>     inl workspace_root = workspace_root |> file_system.normalize_path
>     $'$"cargo-features = [[\\\"profile-rustflags\\\"]]"'
>     +#. $'$""'
>     +#. $'$"[[workspace]]"'
>     +#. $'$"resolver = \\\"2\\\""'
>     +#. $'$"members = [[\\\"packages/Rust/*\\\"]]"'
>     +#. $'$""'
>     +#. $'$"[[workspace.dependencies.fable_library_rust]]"'
>     +#. $'$"path = 
> \\\"{!workspace_root}/lib/rust/fable/fable_modules/fable-library-rust\\\""'
>     +#. $'$"default-features = false"'
>     +#. $'$"features = [[]]"'
>     +#. $'$""'
>     +#. $'$"[[workspace.dependencies]]"'
>     +#. $'$"inline_colorization = \\\"~0.1\\\""'
>     +#. $'$""'
>     +#. $'$"[[profile.release]]"'
>     +#. $'$"codegen-units = 1"'
>     +#. $'$"opt-level = \\\"z\\\""'
>     +#. $'$"lto = true"'
>     +#. $'$"debug = false"'
>     +#. $'$"panic = \\\"abort\\\""'
>     +#. $'$"overflow-checks = true"'
>     +#. $'$"rustflags = [[\\\"-C\\\", \\\"link-arg=-s\\\"]]"'
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### get_cargo_toml_content
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl get_cargo_toml_content { hash_hex runtime deps static_do_bindings } : string
> =
>     $'$"[[package]]"'
>     +#. $'$"name = \\\"spiral_{!hash_hex}\\\""'
>     +#. $'$"version = \\\"0.0.1\\\""'
>     +#. $'$"edition = \\\"2021\\\""'
>     +#. $'$""'
>     +#. $'$"[[dependencies]]"'
>     +#. (
>         if runtime <>. None
>         then $'$"fable_library_rust = {{ workspace = true }}"'
>         else
>             $'$"fable_library_rust = {{"'
>             +. $'$" workspace = true,"'
>             +. $'$" features = [["'
>             +. (
>                 if static_do_bindings
>                 then $'$"\\\"static_do_bindings\\\", \\\"datetime\\\", 
> \\\"guid\\\", \\\"threaded\\\""'
>                 else $'$"\\\"datetime\\\", \\\"guid\\\", \\\"threaded\\\""'
>             )
>             +. $'$"]]"'
>             +. $'$"}}"'
>     )
>     +#. $'$"inline_colorization = {{ workspace = true }}"'
>     +#. $'$"{!deps}"'
>     +#. $'$""'
>     +#. (
>         if runtime = None then
>             $'$"[[[[bin]]]]"'
>             +#. $'$"name = \\\"spiral_{!hash_hex}\\\""'
>         else
>             $'$"[[lib]]"'
>             +#. $'$"crate-type = [[\\\"cdylib\\\"]]"'
>     )
>     +#. $'$"path = \\\"spiral.rs\\\""'
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### get_empty_cargo_toml_content
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl get_empty_cargo_toml_content () =
>     inl guid = date_time.now () |> date_time.new_guid_from_date_time |> 
> sm'.obj_to_string
>     $'$"[[package]]"'
>     +#. $'$"name = \\\"spiral_{!guid}\\\""'
>     +#. $'$"version = \\\"0.0.1\\\""'
>     +#. $'$"edition = \\\"2021\\\""'
>     +#. $'$""'
>     +#. $'$"[[[[bin]]]]"'
>     +#. $'$"name = \\\"spiral_{!guid}\\\""'
>     +#. $'$"path = \\\"spiral.rs\\\""'
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### process_rust
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl process_rust { fs_path deps trace_level runtime cleanup } =
>     open runtime
> 
>     inl extension = "rs"
>     inl code = fs_path |> file_system.read_all_text
> 
>     inl hash_hex = { extension code runtime } |> sm'.format |> crypto.hash_text
> 
>     inl workspace_name = "spiral"
> 
>     inl workspace_root_external = file_system.get_workspace_root_external ()
>     inl workspace_root = workspace_root_external |> resultm.box |> 
> resultm.unwrap_or_else id
> 
>     inl package_dir =
>         get_package_dir { workspace_root name = workspace_name; target = Some 
> Rust; hash = Some hash_hex }
> 
>     inl fsproj_path =
>         persist_code_project {
>             workspace_root
>             package_dir
>             packages = [[ "Fable.Core", "4.3.0" ]]
>             modules = [[]]
>             name = workspace_name
>             code
>         }
> 
>     inl workspace_dir = package_dir </> "../../.."
>     inl workspace_cargo_toml_path = workspace_dir </> "Cargo.toml"
> 
>     if workspace_cargo_toml_path |> file_system.file_exists |> not
>     then get_empty_cargo_toml_content () |> file_system.write_all_text 
> workspace_cargo_toml_path
> 
>     inl cargo_toml_path = package_dir </> "Cargo.toml"
> 
>     if cargo_toml_path |> file_system.file_exists |> not
>     then get_empty_cargo_toml_content () |> file_system.write_all_text 
> cargo_toml_path
> 
>     inl lib_link_target_path = workspace_root </> 
> "lib/rust/fable/fable_modules/fable-library-rust"
>     inl lib_link_path = package_dir </> "fable_modules/fable-library-rust"
> 
>     lib_link_path |> file_system.link_directory lib_link_target_path
> 
>     inl exit_code, dotnet_fable_result =
>         execute_dotnet_fable { workspace_root_external fsproj_path extension 
> package_dir runtime }
> 
>     inl result' = {
>         extension = Some extension
>         code = None
>         code_path = None
>         output = None
>     }
> 
>     if exit_code <>. 0 then
>         trace Critical
>             fun () => "spiral.process_rust / dotnet fable error"
>             fun () => { exit_code dotnet_fable_result }
>         { result' with
>             output = Some dotnet_fable_result
>         }
>     else
>         inl deps =
>             inl deps =
>                 if runtime = None
>                 then deps
>                 else
>                     // TODO: simplify
>                     inl has_near_sdk =
>                         deps
>                         |> am'.vec_filter (sm'.from_std_string >> sm'.contains 
> "near-sdk")
>                         |> am'.vec_len
>                         |> i32
>                         |> fun n => n > 0
>                     // TODO: simplify with ++
>                     if has_near_sdk
>                     then deps
>                     else deps |> am'.vec_extend (;[[ "near-sdk" |> 
> sm'.to_std_string ]] |> am'.to_vec)
>             deps
>             |> am'.vec_map fun dep =>
>                 inl dep = dep |> sm'.from_std_string
>                 if dep |> sm'.contains "="
>                 then dep
>                 elif dep |> sm'.ends_with "]]"
>                 then dep |> sm'.replace "[[" $'$"={{version=\'*\',features=[["' 
> |> fun x => $'$"{!x}}}"'
>                 else $'$"{!dep}=\'*\'"'
>             |> am'.from_vec
>             |> fun x => x : _ i32 _
>             |> seq.of_array'
>             |> sm'.concat "\n"
> 
>         inl new_code_path = package_dir </> $'$"{!workspace_name}.{!extension}"'
>         inl new_code = new_code_path |> file_system.read_all_text
> 
>         inl on_startup_text = "on_startup!" +. (join "(")
>         inl method0_fn_text = " method0" +. (join "(")
>         inl static_do_bindings =
>             (new_code |> sm'.contains on_startup_text)
>             && (new_code |> sm'.contains method0_fn_text |> not)
>         inl cargo_toml_content =
>             get_cargo_toml_content { hash_hex runtime deps static_do_bindings }
>         inl workspace_cargo_toml_content = get_workspace_cargo_toml_content { 
> workspace_root }
> 
>         cargo_toml_content |> file_system.write_all_text_exists cargo_toml_path
>         workspace_cargo_toml_content |> file_system.write_all_text_exists 
> workspace_cargo_toml_path
> 
>         inl range_rs_path = lib_link_path </> "src/Range.rs"
>         if range_rs_path |> file_system.file_exists then
>             inl text = range_rs_path |> file_system.read_all_text
>             text
>             |> sm'.replace "use crate::String_::fromCharCode;" "use 
> crate::String_::fromChar;"
>             |> sm'.replace "fromCharCode(c)" "std::char::from_u32(c).unwrap()"
>             |> file_system.write_all_text_exists range_rs_path
> 
>         inl exit_code, cargo_fmt_result =
>             fun () =>
>                 inl exit_code, result =
>                     execution_options fun x => { x with
>                         command = $'$"cargo fmt --manifest-path 
> \\\"{!cargo_toml_path}\\\" --"'
>                         working_directory = workspace_root_external |> 
> resultm.box |> resultm.ok'
>                     }
>                     |> execute_with_options
> 
>                 inl return () =
>                     if exit_code = 0
>                     then Ok (exit_code, result)
>                     else Error (exit_code, result)
> 
>                 if result |> sm'.contains "failed to load manifest for workspace
> member" |> not
>                 then return ()
>                 else
>                     inl missing_toml_path =
>                         "failed to read `(?<a>.*?Cargo.toml)`"
>                         |> sm'.new_regex
>                         |> resultm.unwrap'
>                         |> sm'.regex_captures result
>                         |> am'.from_vec
>                         |> fun x => x : _ i32 _
>                         |> am'.try_item 0
>                         |> optionm.map (mapm.get "a" >> optionm'.unbox)
>                         |> optionm'.flatten
> 
>                     match missing_toml_path with
>                     | None => Error (exit_code, result)
>                     | Some missing_toml_path =>
>                         if missing_toml_path |> file_system.file_exists |> not 
> then
>                             missing_toml_path
>                             |> file_system.directory_get_parent
>                             |> optionm'.default_value' ""
>                             |> file_system.create_dir
>                             |> ignore
> 
>                             get_empty_cargo_toml_content ()
>                             |> file_system.write_all_text missing_toml_path
>                         return ()
>             |> retry_fn' 3u8
> 
>         if exit_code <>. 0 then
>             trace Critical
>                 fun () => "spiral.process_rust / cargo fmt error"
>                 fun () => { exit_code cargo_fmt_result }
> 
>         inl new_code = new_code_path |> file_system.read_all_text
> 
>         inl main_code_header =
>             "pub fn main() -> Result<(), String> " +. (join "{")
> 
>         inl main_code : string =
>             if runtime = None
>             then ""
>             else
>                 $'$"#[[near_sdk::near_bindgen]]"'
>                 +#. $'$"#[[derive(near_sdk::PanicOnDefault)]]"'
>                 +#. $'$"pub struct MainState {{"'
>                 +#. $'$"}}"'
>                 +#. $'$""'
>                 +#. $'$"#[[near_sdk::near_bindgen]]"'
>                 +#. $'$"impl MainState {{"'
>                 +#. $'$"    pub fn state_main() {{"'
>                 +#. $'$"        Spiral::method0();"'
>                 +#. $'$"    }}"'
>                 +#. $'$"}}"'
>             +#. (
>                 if runtime = None && (new_code |> sm'.contains (on_startup_text 
> +. "Spiral::method0()"))
>                 then $'$"{!main_code_header} Ok(Spiral::method0()) }}"'
>                 else $'$"{!main_code_header} Ok(()) }}"'
>             )
> 
>         inl cached = new_code |> sm'.contains main_code_header
> 
>         inl new_code' = $'$"{!new_code}\\n\\n{!main_code}\\n"'
>         inl new_code =
>             if cached
>             then new_code
>             else
>                 inl runtime_contract =
>                     match runtime with
>                     | Some (Contract _) => true
>                     | _ => false
> 
>                 new_code'
>                 |> sm'.replace
>                     ("),)" +. !\($'"\\\";\\\".into()"'))
>                     "));"
>                 |> sm'.replace
>                     ("},)" +. !\($'"\\\";\\\".into()"'))
>                     "});"
>                 |> sm'.replace_regex
>                     "\\s\\sdefaultOf\\(\\);"
>                     " defaultOf::<()>();"
>                 |> sm'.replace_regex
>                     "\\s\\sgetZero\\(\\);"
>                     " getZero::<()>();"
>                 |> sm'.replace
>                     ("(&e.get_Curren" +. !\($'"\\\"t\\\".into()"'))
>                     "(e.get_Current"
>                 |> sm'.replace
>                     ("getNull" +. !\($'"\\\"::<()>()\\\".into()"'))
>                     "fable_library_rust::Native_::getZero()"
>                 |> sm'.replace_regex
>                     "\\s\\sfable_library_rust::Native_::getZero\\(\\);"
>                     " fable_library_rust::Native_::getZero::<()>();"
>                 |> sm'.replace
>                     "::Slice'_"
>                     "::Slice__"
>                 |> sm'.replace
>                     " Slice'_"
>                     " Slice__"
>                 |> sm'.replace
>                     ("defaultOf()" +. !\($'"\\\",\\\".into()"'))
>                     "defaultOf::<std::sync::Arc<dyn IDisposable>>(),"
>                 |> sm'.replace
>                     ("__self" +. !\($'"\\\"__.\\\".into()"'))
>                     "self."
>                 |> sm'.replace
>                     ("_self" +. !\($'"\\\"_.\\\".into()"'))
>                     "self."
>                 |> sm'.replace
>                     ("get_or_insert_wit" +. !\($'"\\\"h\\\".into()"'))
>                     "get_or_init"
>                 |> sm'.replace
>                     ("use 
> fable_library_rust::System::Collections::Concurrent::ConcurrentStack_1" +. 
> !\($'"\\\";\\\".into()"'))
>                     "type ConcurrentStack_1<T> = T;"
>                 |> sm'.replace
>                     ("use fable_library_rust::System::TimeZoneInfo" +. 
> !\($'"\\\";\\\".into()"'))
>                     "type TimeZoneInfo = i64;"
>                 |> sm'.replace
>                     ("use 
> fable_library_rust::System::Threading::Tasks::TaskCanceledException" +. 
> !\($'"\\\";\\\".into()"'))
>                     "type TaskCanceledException = ();"
>                 |> if static_do_bindings
>                     then id
>                     else sm'.replace
>                             on_startup_text
>                             ("// " +. on_startup_text)
>                 |> if runtime_contract |> not
>                     then id
>                     else sm'.replace
>                             ("use fable_library_rust::DateTime_::DateTime" +. 
> ";")
>                             "type DateTime = ();"
> 
>         if not cached then
>             new_code
>             |> file_system.write_all_text_exists new_code_path
> 
>         inl command =
>             if runtime <> None
>             then $'$"cargo +nightly-2024-07-14 build --release --target 
> wasm32-unknown-unknown --manifest-path \\\"{!cargo_toml_path}\\\""'
>             else $'$"cargo run --manifest-path \\\"{!cargo_toml_path}\\\""'
>         inl environment_variables =
>             if runtime <> None
>             then ;[[]]
>             else
>                 inl fast = false
>                 ;[[
>                     "TRACE_LEVEL", "Verbose"
>                     "RUSTC_WRAPPER", "sccache"
>                     "RUST_BACKTRACE", "full"
>                     "RUSTFLAGS",
>                     if fast
>                     then "-C prefer-dynamic -C strip=symbols -C link-arg=-s -C 
> debuginfo=0"
>                     else "-C prefer-dynamic"
>                 ]]
>         inl exit_code, cargo_result =
>             execution_options fun x => { x with
>                 command
>                 environment_variables
>                 working_directory = workspace_root_external |> resultm.box |> 
> resultm.ok'
>             }
>             |> execute_with_options
> 
>         inl result =
>             if runtime = None then
>                 inl external_command =
>                     inl vars =
>                         a environment_variables
>                         |> am.map fun k, v => $'$"$env:{!k}=\'\'{!v}\'\'"' : 
> string
>                         |> fun x => x : _ i32 _
>                         |> seq.of_array
>                         |> sm'.concat ";"
>                     inl command =
>                         a ;[[
>                             vars
>                             command
>                         ]]
>                         |> fun x => x : _ i32 _
>                         |> seq.of_array
>                         |> sm'.concat ";"
>                     $'$"pwsh -c \'{!command}\'"' : string
>                 if exit_code <>. 0 then
>                     trace Critical
>                         fun () => "spiral.process_rust / error"
>                         fun () => { exit_code new_code_path external_command 
> cleanup cargo_result }
>                     result'
>                 else
>                     inl output =
>                         try
>                             fun () =>
>                                 cargo_result
>                                 |> sm'.split "\n"
>                                 |> fun x => a x : _ i32 _
>                                 |> am'.skip_while fun line =>
>                                     (line |> sm'.contains "profile [[optimized]]
> target" |> not)
>                                         && (line |> sm'.contains "profile 
> [[unoptimized]] target" |> not)
>                                         && (line |> sm'.contains "profile 
> [[unoptimized + debuginfo]] target" |> not)
>                                 |> am'.skip 2
>                                 |> seq.of_array
>                                 |> sm'.concat "\n"
>                             fun ex =>
>                                 trace Critical
>                                     fun () => "spiral.process_rust / Exception"
>                                     fun () => { ex new_code_path 
> external_command cargo_result }
>                                 None
>                         |> optionm'.box
>                         |> optionm'.unwrap
>                     { result' with
>                         code = Some new_code
>                         code_path = Some new_code_path
>                         output = Some output
>                     }
>             else
>                 inl wasm_path : string =
>                     
> $'$"target/spiral/{!workspace_name}/target/wasm32-unknown-unknown/release/spiral
> _{!hash_hex}.wasm"'
> 
>                 inl command =
>                     inl invoke_block_path = "scripts/invoke-block.ps1"
>                     inl spiral_wasm_command : string =
>                         inl runtime_cmd =
>                             match runtime with
>                             | Some (Wasm cmd) => cmd
>                             | Some (Contract cmd) => cmd
>                             | _ => ""
>                         $'$"\'deps/spiral/workspace/target/release/spiral_wasm 
> -w {!wasm_path} -t debug {!runtime_cmd}\'"'
>                     inl automation = "AUTOMATION" |> 
> env.get_environment_variable
>                     $'$"pwsh -c \\\"pwsh {!invoke_block_path} 
> {!spiral_wasm_command} -Linux -EnvironmentVariables 
> AUTOMATION={!automation}\`nNEAR_RPC_TIMEOUT_SECS=100\\\""'
> 
>                 if exit_code = 0 then
>                     inl exit_code, spiral_wasm_result =
>                         execution_options fun x => { x with
>                             command
>                             working_directory = workspace_root |> optionm'.some'
>                         }
>                         |> execute_with_options
> 
>                     if exit_code = 0 then
>                         { result' with
>                             code = Some new_code
>                             code_path = Some new_code_path
>                             output = Some spiral_wasm_result
>                         }
>                     else
>                         trace Critical
>                             fun () => "spiral.process_rust / wasm error"
>                             fun () => {
>                                 exit_code new_code_path cargo_result cleanup
>                                 spiral_wasm_result = 
> $'$"\\n{!spiral_wasm_result}"' : string
>                             }
>                         result'
>                 else
>                     trace Critical
>                         fun () => "spiral.process_rust / cargo error"
>                         fun () => {
>                             exit_code new_code_path wasm_path command cleanup
>                             cargo_result = $'$"\\n{!cargo_result}"' : string
>                         }
>                     result'
> 
>         if cleanup then
>             inl cleanup =
>                 inl build_target =
>                     if runtime <> None
>                     then "wasm32-unknown-unknown/release"
>                     else "debug"
> 
>                 [[ ".d"; ".exe"; ".pdb"; ".wasm"; "" ]]
>                 |> listm.map fun ext =>
>                     workspace_dir </> 
> $'$"target/{!build_target}/spiral_{!hash_hex}{!ext}"'
>                 |> listm.map fun path => path, path |> file_system.file_exists
> 
>             trace Verbose
>                 fun () => "spiral.process_rust / cleanup"
>                 fun () => { new_code_path cleanup }
> 
>             cleanup
>             |> listm'.filter snd
>             |> listm.iter (fst >> file_system.file_delete)
> 
>         result
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## dib
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### process_dib
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl process_dib { path retries working_directory } =
>     inl exit_code, repl_result =
>         let rec loop retry =
>             inl exit_code, repl_result =
>                 runtime.execution_options fun x => { x with
>                     command = $'$"dotnet repl --exit-after-run --run 
> \\\"{!path}\\\" --output-path \\\"{!path}.ipynb\\\""'
>                     environment_variables = ;[[
>                         "TRACE_LEVEL", "Verbose"
>                         "AUTOMATION", "True"
>                     ]]
>                     trace = false
>                     working_directory = working_directory |> optionm'.box
>                 }
>                 |> runtime.execute_with_options
> 
>             if exit_code = 0 || retry >= retries
>             then exit_code, repl_result
>             else
>                 trace Debug
>                     fun () => "spiral.run / repl error"
>                     fun () => { exit_code repl_result retry = 
> $'$"{!retry}/{!retries}"' : string }
>                 loop (retry + 1)
>         loop 1
> 
>     inl exit_code, result =
>         if exit_code <>. 0
>         then exit_code, repl_result
>         else
>             inl exit_code, jupyter_result =
>                 runtime.execution_options fun x => { x with
>                     command = $'$"jupyter nbconvert \\\"{!path}.ipynb\\\" --to 
> html --HTMLExporter.theme=dark"'
>                 }
>                 |> runtime.execute_with_options
> 
>             trace Debug
>                 fun () => "spiral.run / dib / jupyter nbconvert"
>                 fun () => { exit_code jupyter_result_length = jupyter_result |> 
> sm'.length : i32 }
> 
>             if exit_code <>. 0
>             then exit_code, $'$"repl_result: {!repl_result}\n\njupyter_result: 
> {!jupyter_result}"'
>             else
>                 inl exit_code, pwsh_replace_html_result =
>                     inl path = path |> sm'.replace "'" "''"
>                     runtime.execution_options fun x => { x with
>                         command = $'$"pwsh -c \\\"$counter = 1; $path = 
> \'{!path}.html\'; (Get-Content $path -Raw) -replace 
> \'(id=\\\\\\"cell-id=)[[a-fA-F0-9]]{{8}}\', {{ $_.Groups[[1]].Value + $counter++
> }} | Set-Content $path\\\""'
>                     }
>                     |> runtime.execute_with_options
> 
>                 trace Debug
>                     fun () => "spiral.run / dib / html cell ids"
>                     fun () => { exit_code pwsh_replace_html_result_length = 
> pwsh_replace_html_result |> sm'.length : i32 }
> 
>                 $'$"{!path}.html"'
>                 |> file_system.read_all_text
>                 |> sm'.replace "\r\n" "\n"
>                 |> file_system.write_all_text $'$"{!path}.html"'
> 
>                 $'$"{!path}.ipynb"'
>                 |> file_system.read_all_text
>                 |> sm'.replace "\r\n" "\n"
>                 |> sm'.replace "\\r\\n" "\\n"
>                 |> file_system.write_all_text $'$"{!path}.ipynb"'
> 
>                 exit_code, $'$"repl_result: {!repl_result}\n\njupyter_result: 
> {!jupyter_result}\n\npwsh_replace_html_result: {!pwsh_replace_html_result}"'
> 
>     trace Debug
>         fun () => "spiral.run / dib"
>         fun () => { exit_code result_length = result |> sm'.length : i32 }
> 
>     if exit_code <>. 0
>     then failwith $'$"spiral.run / dib / exit_code: {!exit_code} / result: 
> {!result}"'
>     ;[[
>         "stdio",
>         result
>     ]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## typescript
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### process_typescript
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl process_typescript { fs_path deps trace_level } =
>     inl extension = "ts"
> 
>     inl code = fs_path |> file_system.read_all_text
> 
>     inl hash_hex = (extension, code) |> sm'.format_debug |> crypto.hash_text
> 
>     inl workspace_name = "spiral"
> 
>     inl workspace_root_external = file_system.get_workspace_root_external ()
>     inl workspace_root = workspace_root_external |> resultm.box |> 
> resultm.unwrap_or_else id
> 
>     inl package_dir =
>         get_package_dir
>             { workspace_root name = workspace_name; target = Some TypeScript; 
> hash = Some hash_hex }
> 
>     inl fsproj_path =
>         persist_code_project {
>             workspace_root
>             package_dir
>             packages = [[ "Fable.Core", "4.3.0" ]]
>             modules = [[]]
>             name = workspace_name
>             code
>         }
> 
>     inl lib_path = workspace_root </> "lib/typescript/fable/fable_modules"
>     inl lib_dir_prefix = $'$"fable-library-{!extension}"'
>     inl lib_dir_prefix' = join lib_dir_prefix
> 
>     inl versions : _ (string * string) =
>         lib_path
>         |> file_system.new_walk_dir
>         |> file_system.walk_dir_filter fun entry => async.new_future_move_send 
> fun () =>
>             entry
>             |> file_system.dir_entry_file_type
>             |> async.await_send
>             |> resultm.map_error' sm'.format'
>             |> resultm.unbox
>             |> function
>                 | Ok file_type when file_type |> file_system.file_type_is_dir |>
> not => file_system.Ignore
>                 | _ =>
>                     inl path =
>                         entry
>                         |> file_system.dir_entry_path
>                         |> file_system.path_buf_display
>                         |> sm'.format'
>                         |> sm'.from_std_string
>                     if path |> file_system.get_directory_name |> sm'.starts_with
> lib_dir_prefix |> not
>                     then file_system.IgnoreDir
>                     else
>                         match path |> file_system.directory_get_parent |> 
> optionm'.unbox with
>                         | Some parent when parent |> sm'.contains lib_dir_prefix
> |> not =>
>                             file_system.Continue
>                         | _ => file_system.IgnoreDir
>         |> async.stream_filter_map_futures fun (entry : _ _ 
> file_system.async_walkdir_error) =>
>             inl entry = entry |> resultm.map_error' sm'.format' |> resultm.unbox
>             match entry with
>             | Ok entry =>
>                 inl path =
>                     entry
>                     |> file_system.dir_entry_path
>                     |> file_system.path_buf_display
>                     |> sm'.format'
>                     |> sm'.from_std_string
>                 inl version =
>                     $'$"{!lib_dir_prefix'}\\.(?<a>[[-\\d\\w.]]+)$"'
>                     |> sm'.new_regex
>                     |> resultm.unwrap'
>                     |> sm'.regex_captures path
>                     |> am'.from_vec
>                     |> fun x => x : _ int _
>                     |> am'.try_item 0
>                     |> optionm.map (mapm.get "a" >> optionm'.unbox)
>                     |> optionm'.flatten
>                 version
>                 |> optionm.map fun version =>
>                     path, version
>             | Error error =>
>                 trace Critical
>                     fun () => "spiral.process_typescript / stream_filter_map"
>                     fun () => { error }
>                 None
>             |> optionm'.box
>         |> async.stream_collect_futures
>         |> async.await
>         |> async.into_par_iter
>         |> async.par_map id
>         |> async.par_collect
> 
>     inl version =
>         versions
>         |> am'.from_vec
>         |> fun x => x : _ i32 _
>         |> am'.try_item 0
> 
>     trace Debug
>         fun () => "spiral.process_typescript"
>         fun () => { version }
> 
> 
>     let link_lib () =
>         match version with
>         | Some (_path, version) =>
>             inl lib_link_target_path = lib_path </> 
> $'$"fable-library-{!extension}.{!version}"'
>             inl lib_link_path = package_dir </> 
> $'$"fable_modules/fable-library-{!extension}.{!version}"'
>             lib_link_path |> file_system.link_directory lib_link_target_path
>         | None => failwith $'$"spiral.process_typescript / fable library not 
> found / lib_path: {!lib_path}"'
> 
>     link_lib ()
> 
>     inl exit_code, dotnet_fable_result =
>         execute_dotnet_fable { workspace_root_external fsproj_path extension 
> package_dir runtime = None }
> 
>     link_lib ()
> 
>     if exit_code <>. 0 then
>         trace Critical
>             fun () => "spiral.process_typescript"
>             fun () => { exit_code dotnet_fable_result }
>         { extension = Some extension; code = None; code_path = None; output = 
> Some dotnet_fable_result }
>     else
>         inl deps =
>             deps
>             |> am'.vec_map fun dep =>
>                 inl dep = dep |> sm'.from_std_string
>                 if dep |> sm'.contains "="
>                 then dep
>                 else $'$"\\"{!dep}\\":\\"*\\""'
>             |> am'.from_vec
>             |> fun x => x : _ i32 _
>             |> seq.of_array'
>             |> sm'.concat ",\n"
> 
>         inl package_json_content =
>             $'$"{{"'
>             +. $'$"  \\\"name\\\": \\\"spiral_{!hash_hex}\\\","'
>             +. $'$"  \\\"dependencies\\\": {{"'
>             +. deps
>             +. $'$"  }},"'
>             +. $'$"    \\\"devDependencies\\\": {{"'
>             +. $'$"  }},"'
>             +. $'$"}}"'
> 
>         inl workspace_package_json_content =
>             ""
> 
>         inl package_json_path = package_dir </> "package.json"
> 
>         inl workspace_dir = package_dir </> "../.."
>         inl workspace_package_json_path = workspace_dir </> "package.json"
> 
>         package_json_content |> file_system.write_all_text_exists 
> package_json_path
> 
>         workspace_package_json_content |> file_system.write_all_text_exists 
> workspace_package_json_path
> 
>         inl new_code_path = package_dir </> $'$"{!workspace_name}.{!extension}"'
>         trace Debug
>             fun () => "spiral.process_typescript"
>             fun () => { new_code_path }
>         inl new_code = new_code_path |> file_system.read_all_text
> 
>         inl main_code_header =
>             "// spiral.process_typescript"
>         inl main_code = "// spiral.process_typescript"
> 
>         inl cached = new_code |> sm'.contains main_code_header
> 
>         inl new_code =
>             if cached
>             then new_code
>             else
>                 new_code
>                 |> sm'.replace
>                     $'$"\\\"./fable_modules/fable-library-ts.{!version}/"'
>                     
> $'$"\\\"{!workspace_root}/lib/typescript/fable/fable_modules/fable-library-ts.{!
> version}/"'
>                 |> sm'.replace_regex
>                     "\\s\\sdefaultOf\\(\\);"
>                     " defaultOf::<()>();"
> 
>         if not cached then
>             $'$"{!new_code}\\n\\n{!main_code}\\n"'
>             |> file_system.write_all_text_exists new_code_path
> 
>         inl command = $'$"bun --bun run \\\"{!new_code_path}\\\""'
>         inl environment_variables =
>             match "~/.bun/bin" |> env.append_path with
>             | Some path => [[ "PATH", path ]]
>             | None => [[]]
>             ++ [[
>                 "TRACE_LEVEL", "Verbose"
>             ]]
>             |> listm'.box
>             |> listm'.to_array'
>         inl exit_code, run_result =
>             runtime.execution_options fun x => { x with
>                 command
>                 environment_variables
>                 working_directory = workspace_root_external |> resultm.box |> 
> resultm.ok'
>             }
>             |> runtime.execute_with_options
> 
>         inl external_command =
>             inl vars =
>                 a environment_variables
>                 |> am.map fun k, v => $'$"$env:{!k}=\'\'{!v}\'\'"' : string
>                 |> fun x => x : _ i32 _
>                 |> seq.of_array
>                 |> sm'.concat ";"
>             $'$"pwsh -c \'{!vars}; {!command}\'"' : string
>         if exit_code = 0 then
>             inl output =
>                 try
>                     fun () =>
>                         run_result
>                         |> sm'.split "\n"
>                         |> fun x => a x : _ i32 _
>                         |> seq.of_array
>                         |> sm'.concat "\n"
>                     fun ex =>
>                         trace Critical
>                             fun () => "spiral.process_typescript / Exception"
>                             fun () => { ex new_code_path external_command 
> run_result }
>                         None
>                 |> optionm'.box
>                 |> optionm'.unwrap
> 
>             {
>                 extension = Some extension
>                 code = Some new_code
>                 code_path = Some new_code_path
>                 output = Some output
>             }
>         else
>             trace Critical
>                 fun () => "spiral.process_typescript / error"
>                 fun () => { exit_code run_result new_code_path external_command 
> }
>             { extension = Some extension; code = None; code_path = None; output 
> = None }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## python
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### process_python
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl process_python { fs_path deps trace_level } =
>     inl extension = "py"
>     inl is_trace = trace_level = Verbose
>     inl _trace (fn : () -> string) =
>         if is_trace
>         then trace Info (fun () => $'$"spiral.process_python / {!fn ()}"') id
>         else fn () |> console.write_line
> 
>     inl code = fs_path |> file_system.read_all_text
> 
>     inl hash_hex = (extension, code) |> sm'.format_debug |> crypto.hash_text
> 
>     inl workspace_name = "spiral"
> 
>     inl workspace_root_external = file_system.get_workspace_root_external ()
>     inl workspace_root = workspace_root_external |> resultm.box |> 
> resultm.unwrap_or_else id
> 
>     inl package_dir =
>         get_package_dir { workspace_root name = workspace_name; target = Some 
> Python; hash = Some hash_hex }
> 
>     inl fsproj_path =
>         persist_code_project {
>             workspace_root
>             package_dir
>             packages = [[ "Fable.Core", "4.3.0" ]]
>             modules = [[]]
>             name = workspace_name
>             code
>         }
> 
>     inl lib_path = workspace_root </> "lib/python/fable/fable_modules"
> 
>     inl lib_link_target_path = lib_path </> $'$"fable_library"'
>     inl lib_link_path = package_dir </> $'$"fable_modules/fable_library"'
> 
>     lib_link_path |> file_system.link_directory lib_link_target_path
> 
>     inl exit_code, dotnet_fable_result =
>         execute_dotnet_fable { workspace_root_external fsproj_path extension 
> package_dir runtime = None }
> 
>     if exit_code <>. 0 then
>         trace Critical
>             fun () => "spiral.process_python"
>             fun () => { exit_code dotnet_fable_result }
>         { extension = Some extension; code = None; code_path = None; output = 
> Some dotnet_fable_result }
>     else
>         inl deps =
>             deps
>             |> am'.vec_map fun dep =>
>                 inl dep = dep |> sm'.from_std_string
>                 if dep |> sm'.contains "="
>                 then dep
>                 else $'$"\\"{!dep}\\":\\"*\\""'
>             |> am'.from_vec
>             |> fun x => x : _ i32 _
>             |> seq.of_array'
>             |> sm'.concat ",\n"
> 
>         inl package_json_content =
>             $'$"{{"'
>             +. $'$"  \\\"name\\\": \\\"spiral_{!hash_hex}\\\","'
>             +. $'$"  \\\"dependencies\\\": {{"'
>             +. deps
>             +. $'$"  }},"'
>             +. $'$"    \\\"devDependencies\\\": {{"'
>             +. $'$"  }},"'
>             +. $'$"}}"'
> 
>         inl workspace_package_json_content =
>             ""
> 
>         inl package_json_path = package_dir </> "package.json"
> 
>         inl workspace_dir = package_dir </> "../.."
>         inl workspace_package_json_path = workspace_dir </> "package.json"
> 
>         package_json_content |> file_system.write_all_text_exists 
> package_json_path
> 
>         workspace_package_json_content |> file_system.write_all_text_exists 
> workspace_package_json_path
> 
>         inl new_code_path = package_dir </> $'$"{!workspace_name}.{!extension}"'
>         trace Debug
>             fun () => "spiral.process_python"
>             fun () => { new_code_path }
>         inl new_code = new_code_path |> file_system.read_all_text
> 
>         inl main_code_header =
>             "# spiral.process_python"
>         inl main_code = "# spiral.process_python"
> 
>         inl cached = new_code |> sm'.contains main_code_header
> 
>         inl new_code =
>             if cached
>             then new_code
>             else
>                 new_code
>                 |> sm'.replace
>                     ("),)" +. !\($'"\\\";\\\".into()"'))
>                     "));"
>                 |> sm'.replace_regex
>                     "\\s\\sdefaultOf\\(\\);"
>                     " defaultOf::<()>();"
> 
>         if not cached
>         then
>             $'$"{!new_code}\\n\\n{!main_code}\\n"'
>             |> file_system.write_all_text_exists new_code_path
> 
>         inl command = $'$"python \\\"{!new_code_path}\\\""'
>         inl environment_variables =
>             ;[[
>                 "TRACE_LEVEL", "Verbose"
>             ]]
>         inl exit_code, run_result =
>             runtime.execution_options fun x => { x with
>                 command
>                 environment_variables
>                 working_directory = workspace_root_external |> resultm.box |> 
> resultm.ok'
>             }
>             |> runtime.execute_with_options
> 
>         inl external_command =
>             inl vars =
>                 a environment_variables
>                 |> am.map fun k, v => $'$"$env:{!k}=\'\'{!v}\'\'"' : string
>                 |> fun x => x : _ i32 _
>                 |> seq.of_array
>                 |> sm'.concat ";"
>             $'$"pwsh -c \'{!vars}; {!command}\'"' : string
>         if exit_code = 0 then
>             inl output =
>                 try
>                     fun () =>
>                         run_result
>                         |> sm'.split "\n"
>                         |> fun x => a x : _ i32 _
>                         |> seq.of_array
>                         |> sm'.concat "\n"
>                     fun ex =>
>                         trace Critical
>                             fun () => "spiral.process_python / Exception"
>                             fun () => { ex new_code_path external_command 
> run_result }
>                         None
>                 |> optionm'.box
>                 |> optionm'.unwrap
> 
>             {
>                 extension = Some extension
>                 code = Some new_code
>                 code_path = Some new_code_path
>                 output = Some output
>             }
>         else
>             trace Critical
>                 fun () => "spiral.process_python / error"
>                 fun () => { exit_code run_result new_code_path external_command 
> }
>             { extension = Some extension; code = None; code_path = None; output 
> = None }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## gleam
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### process_gleam
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl process_gleam { gleam_path target deps } =
>     inl extension = "gleam"
> 
>     inl new_code_path = gleam_path
>     inl new_code = new_code_path |> file_system.read_all_text
> 
>     inl hash_hex = { extension new_code } |> sm'.format |> crypto.hash_text
> 
>     inl workspace_root_external = file_system.get_workspace_root_external ()
>     inl workspace_root =
>         workspace_root_external |> resultm.box |> resultm.unwrap_or_else id |> 
> file_system.standardize_path
> 
>     inl src_dir =
>         new_code_path
>         |> file_system.directory_get_parent
>         |> optionm'.default_value' ""
>         |> file_system.standardize_path
> 
>     inl package_dir = src_dir </> ".." |> file_system.standardize_path
> 
>     inl manifest_path = package_dir </> "gleam.toml"
> 
>     inl deps =
>         ;[[
>             "gleam_stdlib=\">=0.55.0 and <1.0.0\""
>             "gary=\">=1.1.0 and <2.0.0\""
>         ]]
>         |> am'.to_vec
>         |> am'.vec_map sm'.to_std_string
>         |> am'.vec_extend deps
>         |> am'.vec_map fun dep =>
>             inl dep = dep |> sm'.from_std_string
>             if dep |> sm'.contains "="
>             then dep
>             elif dep |> sm'.ends_with "]]"
>             then dep |> sm'.replace "[[" $'$"={{version=\'*\',features=[["' |> 
> fun x => $'$"{!x}}}"'
>             else $'$"{!dep}=\'*\'"'
>         |> am'.from_vec
>         |> fun x => x : _ i32 _
>         |> seq.of_array'
>         |> sm'.concat "\n"
> 
>     inl target' = target |> reflection.union_to_string |> sm'.to_lower
> 
>     inl manifest =
>         inl main =
>             if new_code_path |> sm'.contains "_real"
>             then "main_real"
>             else "main"
>         $'$"name = \\\"{!main}\\\""'
>         +#. $'$"target = \\\"{!target'}\\\""'
>         +#. $'$""'
>         +#. $'$"[[dependencies]]"'
>         +#. $'$"{!deps}"'
> 
>     manifest |> file_system.write_all_text_exists manifest_path
> 
>     inl exit_code, run_result =
>         runtime.execution_options fun x => { x with
>             command = $'$"gleam format"'
>             working_directory = package_dir |> optionm'.some'
>         }
>         |> runtime.execute_with_options
> 
>     if exit_code <>. 0 then
>         trace Critical
>             fun () => "spiral.process_gleam / format error"
>             fun () => { exit_code run_result new_code_path }
>         { extension = Some extension; code = None; code_path = None; output = 
> None }
>     else
>         inl command =
>             if target = Erlang
>             then $'$"gleam run --no-print-progress \\\"{!new_code_path}\\\""' : 
> string
>             else $'$"gleam build --no-print-progress"'
>         inl environment_variables =
>             ;[[
>                 "TRACE_LEVEL", ""
>                 "GLEAM_LOG", ""
>                 "GLEAM_LOG_NOCOLOUR", ""
>             ]]
>         inl exit_code, run_result =
>             runtime.execution_options fun x => { x with
>                 command
>                 environment_variables
>                 working_directory = package_dir |> optionm'.some'
>             }
>             |> runtime.execute_with_options
> 
>         inl external_command =
>             inl vars =
>                 a environment_variables
>                 |> am.map fun k, v => $'$"$env:{!k}=\'\'{!v}\'\'"' : string
>                 |> fun x => x : _ i32 _
>                 |> seq.of_array
>                 |> sm'.concat ";"
>             $'$"pwsh -c \'{!vars}; {!command}\'"' : string
>         if exit_code <>. 0 then
>             trace Critical
>                 fun () => "spiral.process_gleam / error"
>                 fun () => { exit_code run_result new_code_path external_command 
> }
>             { extension = Some extension; code = None; code_path = None; output 
> = None }
>         else
>             inl run_result =
>                 if target = Erlang
>                 then run_result
>                 else
>                     inl js_path = 
> $'$"{!package_dir}/build/dev/javascript/main/main.mjs"'
>                     inl js_text = js_path |> file_system.read_all_text
>                     inl js_text = js_text |> sm'.replace $'$"#app_"' 
> $'$"#app_{!hash_hex}"'
>                     if js_text |> sm'.ends_with "main()" |> not then
>                         $'$"{!js_text}\nmain()"'
>                         |> file_system.write_all_text_exists js_path
>                     
>                     inl exit_code, run_result =
>                         runtime.execution_options fun x => { x with
>                             command =
>                                 $'$"bunx --bun esbuild --bundle --minify 
> --loader:.wasm=file --outdir={!src_dir} {!js_path}"'
>                             environment_variables =
>                                 match "~/.bun/bin" |> env.append_path with
>                                 | Some path => ;[[ "PATH", path ]]
>                                 | None => ;[[]]
>                             working_directory = package_dir |> optionm'.some'
>                         }
>                         |> runtime.execute_with_options
> 
>                     if exit_code <>. 0 then
>                         trace Critical
>                             fun () => "spiral.process_gleam / esbuild error"
>                             fun () => { exit_code run_result new_code_path }
>                         ""
>                     else
>                         inl html =
>                             $'$"<\!DOCTYPE html>"'
>                             +#. $'$"<html lang=\\\"en\\\">"'
>                             +#. $'$"  <head>"'
>                             +#. $'$"    <meta charset=\\\"UTF-8\\\" />"'
>                             +#. $'$"    <meta name=\\\"viewport\\\" 
> content=\\\"width=device-width, initial-scale=1.0\\\" />"'
>                             +#. $'$"    <link"'
>                             +#. $'$"      data-trunk"'
>                             +#. $'$"      rel=\\\"inline\\\""'
>                             +#. $'$"      
> href=\\\"../build/packages/lustre_ui/priv/static/lustre_ui.css\\\""'
>                             +#. $'$"    />"'
>                             +#. $'$"    <link"'
>                             +#. $'$"      data-trunk"'
>                             +#. $'$"      rel=\\\"inline\\\""'
>                             +#. $'$"      type=\\\"module\\\""'
>                             +#. $'$"      href=\\\"main.js\\\""'
>                             +#. $'$"    />"'
>                             +#. $'$"  </head>"'
>                             +#. $'$"  <body>"'
>                             +#. $'$"    <div id=\\\"app_{!hash_hex}\\\"></div>"'
>                             +#. $'$"  </body>"'
>                             +#. $'$"</html>"'
> 
>                         inl html_path = $'$"{!src_dir}/index.html"'
>                         html |> file_system.write_all_text_exists html_path
> 
>                         "" |> file_system.write_all_text_exists 
> $'$"{!src_dir}/spiral_{!hash_hex}.rs"'
> 
>                         inl manifest =
>                             $'$"[[package]]"'
>                             +#. $'$"name = \\\"spiral_{!hash_hex}\\\""'
>                             +#. $'$""'
>                             +#. $'$"[[workspace]]"'
>                             +#. $'$""'
>                             +#. $'$"[[lib]]"'
>                             +#. $'$"crate-type = [[\\\"cdylib\\\", 
> \\\"rlib\\\"]]"'
>                             +#. $'$"path = \\\"spiral_{!hash_hex}.rs\\\""'
>                             +#. $'$""'
>                             +#. $'$"[[dependencies]]"'
> 
>                         manifest |> file_system.write_all_text_exists 
> $'$"{!src_dir}/Cargo.toml"'
> 
>                         inl exit_code, run_result =
>                             runtime.execution_options fun x => { x with
>                                 command = $'$"trunk build --release --minify 
> --dist={!src_dir} --public-url=./ --no-sri"'
>                                 environment_variables =
>                                     ;[[
>                                         "TRUNK_TOOLS_WASM_BINDGEN", "0.2.93"
>                                     ]]
>                                 working_directory = src_dir |> optionm'.some'
>                             }
>                             |> runtime.execute_with_options
> 
>                         if exit_code <>. 0 then
>                             trace Critical
>                                 fun () => "spiral.process_gleam / trunk error"
>                                 fun () => { exit_code run_result new_code_path }
>                             ""
>                         else
>                             html_path |> file_system.read_all_text
> 
>             inl run_result' = run_result |> sm'.to_std_string
> 
>             inl output =
>                 try
>                     fun () =>
>                         run_result
>                         |> sm'.split "\n"
>                         |> fun x => a x : _ i32 _
>                         |> seq.of_array
>                         |> sm'.concat "\n"
>                     fun ex =>
>                         trace Critical
>                             fun () => "spiral.process_gleam / Exception"
>                             fun () => { ex run_result' new_code_path 
> external_command }
>                         None
>                 |> optionm'.box
>                 |> optionm'.unwrap
> 
>             {
>                 extension = Some extension
>                 code = Some new_code
>                 code_path = Some new_code_path
>                 output = Some output
>             }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## cuda
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### process_cuda
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl process_cuda { py_path env deps } =
>     inl extension = "py"
> 
>     inl new_code_path = py_path
>     inl new_code = new_code_path |> file_system.read_all_text
> 
>     inl workspace_root_external = file_system.get_workspace_root_external ()
>     inl workspace_root = workspace_root_external |> resultm.box |> 
> resultm.unwrap_or_else id
> 
>     inl package_dir = new_code_path |> file_system.directory_get_parent |> 
> optionm'.default_value' ""
> 
>     inl manifest_path =
>         match env with
>         | Pip => package_dir </> "requirements.txt"
>         | Poetry => package_dir </> "pyproject.toml"
> 
>     inl deps =
>         deps
>         |> am'.vec_map fun dep =>
>             inl dep = dep |> sm'.from_std_string
>             if dep |> sm'.contains "="
>             then dep
>             elif dep |> sm'.ends_with "]]"
>             then dep |> sm'.replace "[[" $'$"={{version=\'*\',features=[["' |> 
> fun x => $'$"{!x}}}"'
>             else $'$"{!dep}=\'*\'"'
>         |> am'.from_vec
>         |> fun x => x : _ i32 _
>         |> seq.of_array'
>         |> sm'.concat "\n"
> 
>     inl exit_code, run_result =
>         if deps = ""
>         then 0, ""
>         else
>             inl manifest =
>                 match env with
>                 | Pip =>
>                     deps
>                 | Poetry =>
>                     $'$"[[tool.poetry]]"'
>                     +#. $'$"name = \\\"test\\\""'
>                     +#. $'$"version = \\\"0.0.1\\\""'
>                     +#. $'$"description = \\\"\\\""'
>                     +#. $'$"authors = [[]]"'
>                     +#. $'$""'
>                     +#. $'$"[[tool.poetry.dependencies]]"'
>                     +#. $'$"python=\\\"~3.12\\\""'
>                     +#. $'$"{!deps}"'
>                     +#. $'$""'
>                     +#. $'$"[[build-system]]"'
>                     +#. $'$"requires = [[\\\"poetry-core\\\"]]"'
>                     +#. $'$"build-backend = \\\"poetry.core.masonry.api\\\""'
> 
>             manifest |> file_system.write_all_text_exists manifest_path
> 
>             runtime.execution_options fun x => { x with
>                 command =
>                     match env with
>                     | Pip => $'$"pip install -r requirements.txt"'
>                     | Poetry => $'$"poetry install"'
>                 working_directory = package_dir |> optionm'.some'
>             }
>             |> runtime.execute_with_options
> 
>     if exit_code <>. 0 then
>         trace Critical
>             fun () => "spiral.process_cuda / env install error"
>             fun () => { env exit_code run_result new_code_path }
>         { extension = Some extension; code = None; code_path = None; output = 
> None }
>     else
>         inl command =
>             match env with
>             | Pip => $'$"python \\\"{!new_code_path}\\\""'
>             | Poetry => $'$"poetry run python \\\"{!new_code_path}\\\""'
>         inl environment_variables =
>             ;[[
>                 "TRACE_LEVEL", "Verbose"
>             ]]
>         inl exit_code, run_result =
>             runtime.execution_options fun x => { x with
>                 command
>                 environment_variables
>                 working_directory = package_dir |> optionm'.some'
>             }
>             |> runtime.execute_with_options
> 
>         inl external_command =
>             inl vars =
>                 a environment_variables
>                 |> am.map fun k, v => $'$"$env:{!k}=\'\'{!v}\'\'"' : string
>                 |> fun x => x : _ i32 _
>                 |> seq.of_array
>                 |> sm'.concat ";"
>             $'$"pwsh -c \'{!vars}; {!command}\'"' : string
>         if exit_code = 0
>             || (run_result |> sm'.contains 
> "cupy_backends.cuda.api.runtime.CUDARuntimeError: cudaErrorInsufficientDriver") 
> then
>             inl output =
>                 try
>                     fun () =>
>                         run_result
>                         |> sm'.split "\n"
>                         |> fun x => a x : _ i32 _
>                         |> seq.of_array
>                         |> sm'.concat "\n"
>                     fun ex =>
>                         trace Critical
>                             fun () => "spiral.process_cuda / Exception"
>                             fun () => { ex run_result new_code_path 
> external_command }
>                         None
>                 |> optionm'.box
>                 |> optionm'.unwrap
> 
>             {
>                 extension = Some extension
>                 code = Some new_code
>                 code_path = Some new_code_path
>                 output = Some output
>             }
>         else
>             trace Critical
>                 fun () => "spiral.process_cuda / error"
>                 fun () => { exit_code run_result new_code_path external_command 
> }
>             { extension = Some extension; code = None; code_path = None; output 
> = None }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## fsharp
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### process_fsharp
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl process_fsharp { spi_path } =
>     inl extension = "fsx"
> 
>     inl new_code_path = spi_path
>     inl new_code = new_code_path |> file_system.read_all_text
> 
>     inl workspace_root_external = file_system.get_workspace_root_external ()
>     inl workspace_root = workspace_root_external |> resultm.box |> 
> resultm.unwrap_or_else id
> 
>     inl supervisor_path = workspace_root </> 
> $"apps/spiral/dist/Supervisor!(platform.get_executable_suffix ())"
>     inl code_dir = new_code_path |> file_system.directory_get_parent |> 
> optionm'.default_value' ""
>     inl file_name = new_code_path |> file_system.get_file_name_without_extension
>     inl output_path = code_dir </> $'$"{!file_name}.{!extension}"'
>     inl command = $'$"{!supervisor_path} --build-file \\\"{!new_code_path}\\\" 
> \\\"{!output_path}\\\""'
>     inl environment_variables =
>         ;[[
>             "TRACE_LEVEL", "Verbose"
>         ]]
>     inl exit_code, run_result =
>         runtime.execution_options fun x => { x with
>             command
>             environment_variables
>             working_directory = workspace_root_external |> resultm.box |> 
> resultm.ok'
>         }
>         |> runtime.execute_with_options
> 
>     inl external_command =
>         inl vars =
>             a environment_variables
>             |> am.map fun k, v => $'$"$env:{!k}=\'\'{!v}\'\'"' : string
>             |> fun x => x : _ i32 _
>             |> seq.of_array
>             |> sm'.concat ";"
>         $'$"pwsh -c \'{!vars}; {!command}\'"' : string
>     if exit_code = 0 then
>         inl output =
>             try
>                 fun () =>
>                     run_result
>                     |> sm'.split "\n"
>                     |> fun x => a x : _ i32 _
>                     |> seq.of_array
>                     |> sm'.concat "\n"
>                 fun ex =>
>                     trace Critical
>                         fun () => "spiral.process_fsharp / Exception"
>                         fun () => { ex run_result new_code_path external_command
> }
>                     None
>             |> optionm'.box
>             |> optionm'.unwrap
> 
>         {
>             extension = Some extension
>             code = Some new_code
>             code_path = Some new_code_path
>             output = Some output
>         }
>     else
>         trace Critical
>             fun () => "spiral.process_fsharp / error"
>             fun () => { exit_code run_result new_code_path external_command }
>         { extension = Some extension; code = None; code_path = None; output = 
> None }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## run
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> let rec run trace_level (matches : runtime.arg_matches) : async.future_pin 
> (resultm.result' string string) =
>     fun () =>
>         match matches |> runtime.matches_subcommand |> optionm'.unbox with
>         | Some (subcommand, arg_matches)
>                 when (subcommand |> sm'.from_std_string) = (get_args () .gleam 
> |> fst) =>
> 
>             inl gleam_path =
>                 arg_matches
>                 |> runtime.matches_get_one ((get_args () .gleam |> 
> snd).gleam_path |> fst)
>                 |> optionm'.unbox
>                 |> optionm.value
>                 |> sm'.from_std_string
> 
>             inl target =
>                 arg_matches
>                 |> runtime.matches_get_one ((get_args () .gleam |> snd).target 
> |> fst)
>                 |> optionm'.unbox
>                 |> optionm.map (
>                     sm'.from_std_string
>                     >> reflection.union_try_pick
>                 )
>                 |> optionm'.flatten
>                 |> optionm'.default_value Erlang
> 
>             inl deps : am'.vec sm'.std_string =
>                 arg_matches
>                 |> runtime.matches_get_many ((get_args () .gleam |> snd).deps |>
> fst)
>                 |> optionm'.unbox
>                 |> optionm'.default_value (;[[]] |> am'.to_vec)
> 
>             inl command_result =
>                 process_gleam { gleam_path target deps }
>                 |> fun { extension code output } =>
>                     ;[[
>                         "extension", extension |> optionm'.default_value ""
>                         "code", code |> optionm'.default_value ""
>                         "output", output |> optionm'.default_value ""
>                     ]]
> 
>             ;[[
>                 "command_result",
>                 command_result
>                 |> am'.to_vec
>                 |> am'.vec_map' fun k, v =>
>                     new_pair (sm'.to_std_string k) (sm'.to_std_string v)
>                 |> mapm.b_tree_map_from_vec_pairs
>                 |> sm'.serialize
>                 |> resultm.unwrap'
>                 |> sm'.from_std_string
>             ]]
> 
>         | Some (subcommand, arg_matches)
>                 when (subcommand |> sm'.from_std_string) = (get_args () .cuda |>
> fst) =>
> 
>             inl py_path =
>                 arg_matches
>                 |> runtime.matches_get_one ((get_args () .cuda |> snd).py_path 
> |> fst)
>                 |> optionm'.unbox
>                 |> optionm.value
>                 |> sm'.from_std_string
> 
>             inl env =
>                 arg_matches
>                 |> runtime.matches_get_one ((get_args () .cuda |> snd).env |> 
> fst)
>                 |> optionm'.unbox
>                 |> optionm.map (
>                     sm'.from_std_string
>                     >> reflection.union_try_pick
>                 )
>                 |> optionm'.flatten
>                 |> optionm'.default_value Pip
> 
>             inl deps : am'.vec sm'.std_string =
>                 arg_matches
>                 |> runtime.matches_get_many ((get_args () .cuda |> snd).deps |> 
> fst)
>                 |> optionm'.unbox
>                 |> optionm'.default_value (;[[]] |> am'.to_vec)
> 
>             inl command_result =
>                 process_cuda { py_path env deps }
>                 |> fun { extension code output } =>
>                     ;[[
>                         "extension", extension |> optionm'.default_value ""
>                         "code", code |> optionm'.default_value ""
>                         "output", output |> optionm'.default_value ""
>                     ]]
> 
>             ;[[
>                 "command_result",
>                 command_result
>                 |> am'.to_vec
>                 |> am'.vec_map' fun k, v =>
>                     new_pair (sm'.to_std_string k) (sm'.to_std_string v)
>                 |> mapm.b_tree_map_from_vec_pairs
>                 |> sm'.serialize
>                 |> resultm.unwrap'
>                 |> sm'.from_std_string
>             ]]
> 
>         | Some (subcommand, arg_matches)
>                 when (subcommand |> sm'.from_std_string) = (get_args () .fable 
> |> fst) =>
> 
>             inl fs_path =
>                 arg_matches
>                 |> runtime.matches_get_one ((get_args () .fable |> snd).fs_path 
> |> fst)
>                 |> optionm'.unbox
>                 |> optionm.value
>                 |> sm'.from_std_string
> 
>             inl command =
>                 arg_matches
>                 |> runtime.matches_get_one ((get_args () .fable |> snd).command 
> |> fst)
>                 |> optionm'.unbox
>                 |> optionm.map sm'.from_std_string
> 
>             inl command_result =
>                 match command with
>                 | Some command =>
>                     get_command ()
>                     |> runtime.command_get_matches_from (
>                         $'$"_ {!command} --fs-path \\\"{!fs_path}\\\""' |> 
> runtime.split_args |> resultm.get
>                     )
>                     |> run trace_level
>                     |> async.await
>                     |> resultm.unwrap'
>                 | None => "{}"
> 
>             ;[[
>                 "command_result",
>                 command_result
>             ]]
> 
>         | Some (subcommand, arg_matches)
>             when (subcommand |> sm'.from_std_string) = (get_args () .dib |> fst)
> =>
> 
>             inl path =
>                 arg_matches
>                 |> runtime.matches_get_one ((get_args () .dib |> snd).path |> 
> fst)
>                 |> optionm'.map'' (
>                     sm'.from_std_string
>                     >> file_system.absolute_path
>                 )
>                 |> optionm'.unwrap
> 
>             inl retries =
>                 arg_matches
>                 |> runtime.matches_get_one ((get_args () .dib |> snd).retries |>
> fst)
>                 |> optionm'.default_value' 1u8
> 
>             inl working_directory =
>                 arg_matches
>                 |> runtime.matches_get_one ((get_args () .dib |> 
> snd).working_directory |> fst)
>                 |> optionm'.unbox
>                 |> optionm.map sm'.from_std_string
> 
>             process_dib { path retries working_directory }
> 
>         | matches =>
>             match matches with
>             | Some (subcommand, arg_matches)
>                     when (subcommand |> sm'.from_std_string) = (get_args () 
> .rust |> fst) =>
> 
>                 inl fs_path =
>                     arg_matches
>                     |> runtime.matches_get_one ((get_args () .rust |> 
> snd).fs_path |> fst)
>                     |> optionm'.unbox
>                     |> optionm.value
>                     |> sm'.from_std_string
> 
>                 inl deps : am'.vec sm'.std_string =
>                     arg_matches
>                     |> runtime.matches_get_many ((get_args () .rust |> snd).deps
> |> fst)
>                     |> optionm'.unbox
>                     |> optionm'.default_value (;[[]] |> am'.to_vec)
> 
>                 inl cleanup =
>                     arg_matches
>                     |> runtime.matches_get_flag ((get_args () .rust |> 
> snd).cleanup |> fst)
> 
>                 inl wasm =
>                     arg_matches
>                     |> runtime.matches_get_one ((get_args () .rust |> snd).wasm 
> |> fst)
>                     |> optionm'.unbox
>                     |> optionm.map sm'.from_std_string
> 
>                 inl contract =
>                     arg_matches
>                     |> runtime.matches_get_one ((get_args () .rust |> 
> snd).contract |> fst)
>                     |> optionm'.unbox
>                     |> optionm.map sm'.from_std_string
> 
>                 inl runtime =
>                     match wasm, contract with
>                     | Some wasm, _ => Wasm wasm |> Some
>                     | _, Some contract => Contract contract |> Some
>                     | _ => None
> 
>                 process_rust { fs_path deps trace_level runtime cleanup }
> 
>             | Some (subcommand, arg_matches)
>                     when (subcommand |> sm'.from_std_string) = (get_args () 
> .typescript |> fst) =>
> 
>                 inl fs_path =
>                     arg_matches
>                     |> runtime.matches_get_one ((get_args () .typescript |> 
> snd).fs_path |> fst)
>                     |> optionm'.unbox
>                     |> optionm.value
>                     |> sm'.from_std_string
> 
>                 inl deps : am'.vec sm'.std_string =
>                     arg_matches
>                     |> runtime.matches_get_many ((get_args () .typescript |> 
> snd).deps |> fst)
>                     |> optionm'.unbox
>                     |> optionm'.default_value (;[[]] |> am'.to_vec)
> 
>                 process_typescript { fs_path deps trace_level }
> 
>             | Some (subcommand, arg_matches)
>                     when (subcommand |> sm'.from_std_string) = (get_args () 
> .python |> fst) =>
>                 inl fs_path =
>                     arg_matches
>                     |> runtime.matches_get_one ((get_args () .python |> 
> snd).fs_path |> fst)
>                     |> optionm'.unbox
>                     |> optionm.value
>                     |> sm'.from_std_string
> 
>                 inl deps : am'.vec sm'.std_string =
>                     arg_matches
>                     |> runtime.matches_get_many ((get_args () .python |> 
> snd).deps |> fst)
>                     |> optionm'.unbox
>                     |> optionm'.default_value (;[[]] |> am'.to_vec)
> 
>                 process_python { fs_path deps trace_level }
> 
>             | Some (subcommand, arg_matches) =>
>                 trace Debug
>                     fun () => "spiral.run / invalid subcommand"
>                     fun () => { subcommand arg_matches }
> 
>                 { extension = None; code = None; code_path = None; output = None
> }
>             | _ =>
>                 { extension = None; code = None; code_path = None; output = None
> }
>             |> fun { extension code code_path output } =>
>                 ;[[
>                     "extension", extension |> optionm'.default_value ""
>                     "code", code |> optionm'.default_value ""
>                     "code_path", code_path |> optionm'.default_value ""
>                     "output", output |> optionm'.default_value ""
>                 ]]
>         |> am'.to_vec
>         |> am'.vec_map' fun k, v =>
>             new_pair (sm'.to_std_string k) (sm'.to_std_string v)
>         |> mapm.b_tree_map_from_vec_pairs
>         |> sm'.serialize
>         |> resultm.map_error' (sm'.format' >> sm'.from_std_string)
>         |> resultm.map' sm'.from_std_string
>     |> async.new_future_move
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! rust -d async-walkdir chrono clap encoding_rs encoding_rs_io futures rand 
> rayon regex serde_json sha2
> 
> inl file_name = "main.fs"
> inl code = "let method0 () =\n    3 - 6 |> System.Console.WriteLine\nmethod0 
> ()\n"
> 
> inl temp_dir, disposable =
>     (file_name, code)
>     |> sm'.format_debug
>     |> crypto.hash_text
>     |> file_system.create_temp_dir'
> disposable |> use |> ignore
> inl fs_path = temp_dir </> file_name
> 
> code |> file_system.write_all_text fs_path
> 
> get_command ()
> |> runtime.command_get_matches_from ($'$"_ fable -f \\\"{!fs_path}\\\" -c 
> \\\"rust -d regex=\'*\'\\\""' |> runtime.split_args |> resultm.get)
> |> run Verbose
> |> async.block_on_futures
> |> resultm.unwrap'
> |> sm'.deserialize
> |> resultm.unwrap'
> |> mapm.get ("command_result" |> sm'.to_std_string)
> |> optionm'.unwrap
> |> sm'.from_std_string
> |> sm'.deserialize
> |> resultm.unwrap'
> |> fun result =>
>     result
>     |> mapm.get ("extension" |> sm'.to_std_string)
>     |> optionm'.unwrap
>     |> sm'.from_std_string
>     |> _assert_eq "rs"
>     result
>     |> mapm.get ("output" |> sm'.to_std_string)
>     |> optionm'.unwrap
>     |> sm'.from_std_string
>     |> _assert_eq "-3"
> 
> ── [ 52.58s - return value ] ───────────────────────────────────────────────────
> │ 00:00:00 v #1 file_system.create_dir / { dir = 
> C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\spiral_9fcc0c591a24d24f0fd2
> 939fad727d825b50e23584d9c7a3fa0a4ea315ad2932\84b99b0b-d6d4-d4b8-7f79-3c480ce421d
> a }
> │ 00:00:00 v #2 file_system.create_dir / { dir = 
> c:/home/git\polyglot\target/spiral\spiral\packages\Rust\399aa1f3f3139f81268d9546
> 70e64e9b347bbd6e901ea5469dbdbbb859fe2e29 }
> │ 00:00:00 d #3 runtime.execute_with_options / { 
> file_name = dotnet; arguments = ["fable", 
> "c:/home/git/polyglot/target/spiral/spiral/packages/Rust/399aa1f3f3139f81268d954
> 670e64e9b347bbd6e901ea5469dbdbbb859fe2e29/spiral.fsproj", "--optimize", 
> "--lang", "rs", "--extension", ".rs", "--outDir", 
> "c:/home/git\\polyglot\\target/spiral\\spiral\\packages\\Rust\\399aa1f3f3139f812
> 68d954670e64e9b347bbd6e901ea5469dbdbbb859fe2e29", "--define", "_WINDOWS"]; 
> options = { command = dotnet fable 
> "c:/home/git/polyglot/target/spiral/spiral/packages/Rust/399aa1f3f3139f81268d954
> 670e64e9b347bbd6e901ea5469dbdbbb859fe2e29/spiral.fsproj" --optimize --lang rs 
> --extension .rs --outDir 
> "c:/home/git\polyglot\target/spiral\spiral\packages\Rust\399aa1f3f3139f81268d954
> 670e64e9b347bbd6e901ea5469dbdbbb859fe2e29" --define _WINDOWS; cancellation_token
> = None; environment_variables = Array(MutCell([])); on_line = None; stdin = 
> None; trace = true; working_directory = Some(
> │     "c:/home/git\polyglot",
> │ ) } }
> │ 00:00:00 v #4 > Fable 5.0.0-alpha.9: F# to Rust 
> compiler (status: alpha)
> │ 00:00:00 v #5 ...length = 564 }
> │ 00:00:03 v #24 spiral.process_rust / cleanup / { 
> new_code_path = 
> c:/home/git\polyglot\target/spiral\spiral\packages\Rust\399aa1f3f3139f81268d9546
> 70e64e9b347bbd6e901ea5469dbdbbb859fe2e29\spiral.rs; cleanup = 
> UH5_1("c:/home/git\polyglot\target/spiral\spiral\packages\Rust\399aa1f3f3139f812
> 68d954670e64e9b347bbd6e901ea5469dbdbbb859fe2e29\../../..\target/debug/spiral_399
> aa1f3f3139f81268d954670e64e9b347bbd6e901ea5469dbdbbb859fe2e29.d", true, 
> UH5_1("c:/home/git\polyglot\target/spiral\spiral\packages\Rust\399aa1f3f3139f812
> 68d954670e64e9b347bbd6e901ea5469dbdbbb859fe2e29\../../..\target/debug/spiral_399
> aa1f3f3139f81268d954670e64e9b347bbd6e901ea5469dbdbbb859fe2e29.exe", true, 
> UH5_1("c:/home/git\polyglot\target/spiral\spiral\packages\Rust\399aa1f3f3139f812
> 68d954670e64e9b347bbd6e901ea5469dbdbbb859fe2e29\../../..\target/debug/spiral_399
> aa1f3f3139f81268d954670e64e9b347bbd6e901ea5469dbdbbb859fe2e29.pdb", true, 
> UH5_1("c:/home/git\polyglot\target/spiral\spiral\packages\Rust\399aa1f3f3139f812
> 68d954670e64e9b347bbd6e901ea5469dbdbbb859fe2e29\../../..\target/debug/spiral_399
> aa1f3f3139f81268d954670e64e9b347bbd6e901ea5469dbdbbb859fe2e29.wasm", false, 
> UH5_1("c:/home/git\polyglot\target/spiral\spiral\packages\Rust\399aa1f3f3139f812
> 68d954670e64e9b347bbd6e901ea5469dbdbbb859fe2e29\../../..\target/debug/spiral_399
> aa1f3f3139f81268d954670e64e9b347bbd6e901ea5469dbdbbb859fe2e29", false, 
> UH5_0))))) }
> │ __assert_eq / actual: "rs" / expected: "rs"
> │ __assert_eq / actual: "-3" / expected: "-3"
> │ 
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! rust -d async-walkdir chrono clap encoding_rs encoding_rs_io futures rand 
> rayon regex serde_json sha2
> 
> inl file_name = "main.fs"
> inl code = "3 - 6 |> System.Console.WriteLine\n"
> 
> inl temp_dir, disposable =
>     (file_name, code)
>     |> sm'.format_debug
>     |> crypto.hash_text
>     |> file_system.create_temp_dir'
> disposable |> use |> ignore
> inl fs_path = temp_dir </> file_name
> 
> code |> file_system.write_all_text fs_path
> 
> get_command ()
> |> runtime.command_get_matches_from ($'$"_ fable -f \\\"{!fs_path}\\\" -c 
> \\\"typescript\\\""' |> runtime.split_args |> resultm.get)
> |> run Verbose
> |> async.block_on_futures
> |> resultm.unwrap'
> |> sm'.deserialize
> |> resultm.unwrap'
> |> mapm.get ("command_result" |> sm'.to_std_string)
> |> optionm'.unwrap
> |> sm'.from_std_string
> |> sm'.deserialize
> |> resultm.unwrap'
> |> fun result =>
>     result
>     |> mapm.get ("extension" |> sm'.to_std_string)
>     |> optionm'.unwrap
>     |> sm'.from_std_string
>     |> _assert_eq "ts"
>     result
>     |> mapm.get ("output" |> sm'.to_std_string)
>     |> optionm'.unwrap
>     |> sm'.from_std_string
>     |> _assert_eq "-3"
> 
> ── [ 49.81s - return value ] ───────────────────────────────────────────────────
> │ 00:00:00 v #1 file_system.create_dir / { dir = 
> C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\spiral_ec3ab0e021e8d40b955e
> a306bd54a24070bbc05d2f39cfa380f00e7ae8040125\c6422374-71e4-07d4-0ba4-c3084b24fbb
> a }
> │ 00:00:00 v #2 file_system.create_dir / { dir = 
> c:/home/git\polyglot\target/spiral\spiral\packages\TypeScript\702335b0756baa7db0
> d02dbbeaf9fc04cf2c3b7dbb45866c578c5109aaa8c4a8 }
> │ 00:00:00 d #3 spiral.process_typescript / { version = 
> US51_0("c:/home/git\polyglot\lib/typescript/fable/fable_modules\fable-library-ts
> .5.0.0-alpha.9", "5.0.0-alpha.9") }
> │ 00:00:00 d #4 runtime.execute_with_options / { 
> file_name = dotnet; arguments = ["fable", 
> "c:/home/git/polyglot/target/spiral/spiral/packages/TypeScript/702335b0756baa7db
> 0d02dbbeaf9fc04cf2c3b7dbb45866c578c5109aaa8c4a8/spiral.fsproj", "--optimize", 
> "--lang", "ts", "--extension", ".ts", "--outDir", 
> "c:/home/git\\polyglot\\target/spiral\\spiral\\packages\\TypeScript\\702335b0756
> baa7db0d02dbbeaf9fc04cf2c3b7dbb45866c578c5109aaa8c4a8", "--define", "_WINDOWS"];
> options = { command = dotnet fable 
> "c:/home/git/polyglot/target/spiral/spiral/packages/TypeScript/702335b0756baa7db
> 0d02dbbeaf9fc04cf2c3b7dbb45866c578c5109aaa8c4a8/spiral.fsproj" --optimize --lang
> ts --extension .ts --outDir 
> "c:/home/git\polyglot\target/spiral\spiral\packages\TypeScript\702335b0756baa7db
> 0d02dbbeaf9fc04cf2c3b7dbb45866c578c5109aaa8c4a8" --define _WINDOWS; 
> cancellation_token = None; environment_variables = Array(MutCell([])); 
> o...rrent\.cargo\bin;C:\Users\i574n\scoop\apps\latex\current\texmfs\install\mikt
> ex\bin\x64;C:\Users\i574n\scoop\apps\dotnet-sdk-preview\current;C:\Users\i574n\s
> coop\apps\dotnet-sdk\current;C:\Users\i574n\scoop\apps\gsudo\current;C:\Users\i5
> 74n\scoop\apps\python\current;C:\Users\i574n\scoop\apps\nircmd\current;C:\Users\
> i574n\AppData\Local\Microsoft\WindowsApps;C:\Users\i574n/scoop/buckets/mold/home
> /windows/path;C:\Users\i574n/scoop/persist/rustup/.cargo/bin;C:\Users\i574n/scoo
> p/apps/nvm/current/nodejs/nodejs;C:\Users\i574n/scoop/apps/cygwin/current/root/b
> in;C:\Users\i574n\AppData\Local\Programs\Microsoft VS 
> Code\bin;C:\Users\i574n\AppData\Local\Microsoft\WindowsApps;C:\Users\i574n\.bun\
> bin;C:\Users\i574n\.dotnet\tools;C:\Users\i574n\scoop\shims;C:\Users\i574n\.fly\
> bin;C:\Program 
> Files\Wasmtime\bin;C:\Users\i574n\.dotnet\tools;test;C:\Users\i574n\go\bin;C:\Us
> ers\i574n\.dotnet\tools;C:\Users\i574n/.cargo/bin;C:\Users\i574n/.bun/bin;C:\Use
> rs\i574n/.cargo/bin;C:\Users\i574n/.bun/bin;C:\Users\i574n/.cargo/bin;C:\Users\i
> 574n/.bun/bin;C:\Users\i574n/.cargo/bin;C:\Users\i574n/.bun/bin;C:\Users\i574n/.
> cargo/bin;C:\Users\i574n/.bun/bin"), ("TRACE_LEVEL", "Verbose")])); on_line = 
> None; stdin = None; trace = true; working_directory = Some(
> │     "c:/home/git\polyglot",
> │ ) } }
> │ 00:00:01 v #19 > -3
> │ 00:00:01 v #20 runtime.execute_with_options / result / 
> { exit_code = 0; std_trace_length = 2 }
> │ __assert_eq / actual: "ts" / expected: "ts"
> │ __assert_eq / actual: "-3" / expected: "-3"
> │ 
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! rust -d async-walkdir chrono clap encoding_rs encoding_rs_io futures rand 
> rayon regex serde_json sha2
> 
> inl file_name = "main.fs"
> inl code = "3 - 6 |> System.Console.WriteLine\n"
> 
> inl temp_dir, disposable =
>     (file_name, code)
>     |> sm'.format_debug
>     |> crypto.hash_text
>     |> file_system.create_temp_dir'
> disposable |> use |> ignore
> inl fs_path = temp_dir </> file_name
> 
> code |> file_system.write_all_text fs_path
> 
> get_command ()
> |> runtime.command_get_matches_from ($'$"_ fable -f \\\"{!fs_path}\\\" -c 
> \\\"python\\\""' |> runtime.split_args |> resultm.get)
> |> run Verbose
> |> async.block_on_futures
> |> resultm.unwrap'
> |> sm'.deserialize
> |> resultm.unwrap'
> |> mapm.get ("command_result" |> sm'.to_std_string)
> |> optionm'.unwrap
> |> sm'.from_std_string
> |> sm'.deserialize
> |> resultm.unwrap'
> |> fun result =>
>     result
>     |> mapm.get ("extension" |> sm'.to_std_string)
>     |> optionm'.unwrap
>     |> sm'.from_std_string
>     |> _assert_eq "py"
>     result
>     |> mapm.get ("output" |> sm'.to_std_string)
>     |> optionm'.unwrap
>     |> sm'.from_std_string
>     |> _assert_eq "-3"
> 
> ── [ 58.04s - return value ] ───────────────────────────────────────────────────
> │ 00:00:00 v #1 file_system.create_dir / { dir = 
> C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\spiral_cadd352c7c7ea44c9da6
> 45af771bfc21417faacb52b173eb897c7c86cfe05044\c6422374-71e4-07d4-0ba4-c3084b24fbb
> a }
> │ 00:00:00 v #2 file_system.create_dir / { dir = 
> c:/home/git\polyglot\target/spiral\spiral\packages\Python\cb8f3dd33197bb0bc95f09
> b3f3057a6844a0b70d75477350491883d14d8680ce }
> │ 00:00:00 d #3 runtime.execute_with_options / { 
> file_name = dotnet; arguments = ["fable", 
> "c:/home/git/polyglot/target/spiral/spiral/packages/Python/cb8f3dd33197bb0bc95f0
> 9b3f3057a6844a0b70d75477350491883d14d8680ce/spiral.fsproj", "--optimize", 
> "--lang", "py", "--extension", ".py", "--outDir", 
> "c:/home/git\\polyglot\\target/spiral\\spiral\\packages\\Python\\cb8f3dd33197bb0
> bc95f09b3f3057a6844a0b70d75477350491883d14d8680ce", "--define", "_WINDOWS"]; 
> options = { command = dotnet fable 
> "c:/home/git/polyglot/target/spiral/spiral/packages/Python/cb8f3dd33197bb0bc95f0
> 9b3f3057a6844a0b70d75477350491883d14d8680ce/spiral.fsproj" --optimize --lang py 
> --extension .py --outDir 
> "c:/home/git\polyglot\target/spiral\spiral\packages\Python\cb8f3dd33197bb0bc95f0
> 9b3f3057a6844a0b70d75477350491883d14d8680ce" --define _WINDOWS; 
> cancellation_token = None; environment_variables = Array(MutCell([])); on_line =
> None; stdin = None; trace = true; working_directory = Some(
> │     "c:/home/git\polyglot",
> │ ) } }
> │ 00:00:00 v #4 > Fable 5.0.0-alpha.9: F# to Python 
> compiler (status: beta)
> │ 00:00:00 14d8680ce\spiral.fsproj...
> │ 00:00:00 v #10 > Retrieving project options from cache,
> in case of issues run `dotnet fable clean` or try `--noCache` option.
> │ 00:00:00 v #11 > Project and references (1 source 
> files) parsed in 161ms
> │ 00:00:00 v #12 >
> │ 00:00:00 v #13 > Skipped compilation because all 
> generated files are up-to-date!
> │ 00:00:00 v #14 runtime.execute_with_options / result / 
> { exit_code = 0; std_trace_length = 507 }
> │ 00:00:00 d #15 spiral.process_python / { new_code_path 
> = 
> c:/home/git\polyglot\target/spiral\spiral\packages\Python\cb8f3dd33197bb0bc95f09
> b3f3057a6844a0b70d75477350491883d14d8680ce\spiral.py }
> │ 00:00:00 d #16 runtime.execute_with_options / { 
> file_name = python; arguments = 
> ["c:/home/git\\polyglot\\target/spiral\\spiral\\packages\\Python\\cb8f3dd33197bb
> 0bc95f09b3f3057a6844a0b70d75477350491883d14d8680ce\\spiral.py"]; options = { 
> command = python 
> "c:/home/git\polyglot\target/spiral\spiral\packages\Python\cb8f3dd33197bb0bc95f0
> 9b3f3057a6844a0b70d75477350491883d14d8680ce\spiral.py"; cancellation_token = 
> None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose")])); 
> on_line = None; stdin = None; trace = true; working_directory = Some(
> │     "c:/home/git\polyglot",
> │ ) } }
> │ 00:00:00 v #17 > -3
> │ 00:00:00 v #18 runtime.execute_with_options / result / 
> { exit_code = 0; std_trace_length = 2 }
> │ __assert_eq / actual: "py" / expected: "py"
> │ __assert_eq / actual: "-3" / expected: "-3"
> │ 
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! rust -d async-walkdir chrono clap encoding_rs encoding_rs_io futures rand 
> rayon regex serde_json sha2
> 
> inl file_name = "test.dib"
> inl code =
>     
> "#!meta\n\n{\"kernelInfo\":{\"defaultKernelName\":\"fsharp\",\"items\":[[]]}}\n\
> n#!fsharp\n\n3 - 6\n"
> 
> inl temp_dir, disposable =
>     (file_name, code)
>     |> sm'.format_debug
>     |> crypto.hash_text
>     |> file_system.create_temp_dir'
> disposable |> use |> ignore
> inl path = temp_dir </> file_name |> file_system.normalize_path
> 
> code
> |> file_system.write_all_text path
> 
> get_command ()
> |> runtime.command_get_matches_from ($'$"_ dib -p {!path}"' |> 
> runtime.split_args |> resultm.get)
> |> run Verbose
> |> async.block_on_futures
> |> resultm.unwrap'
> |> __assert sm'.contains Silent "<pre>-3"
> 
> $'$"{!path}.html"'
> |> file_system.read_all_text
> |> __assert sm'.contains Silent "\"cell-id=1\""
> 
> ── [ 1.01m - return value ] ────────────────────────────────────────────────────
> │ 00:00:00 v #1 file_system.create_dir / { dir = 
> C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\spiral_865f890b072aaf3da36c
> ec6017257ba9ea0841dc0c79f003e73156e81123a4bd\af524e22-8e9a-5d18-99ed-bd86e1b7462
> 3 }
> │ 00:00:00 d #2 runtime.execute_with_options / { 
> file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", 
> "c:/Users/i574n/AppData/Local/Temp/!create_temp_path_/spiral_865f890b072aaf3da36
> cec6017257ba9ea0841dc0c79f003e73156e81123a4bd/af524e22-8e9a-5d18-99ed-bd86e1b746
> 23/test.dib", "--output-path", 
> "c:/Users/i574n/AppData/Local/Temp/!create_temp_path_/spiral_865f890b072aaf3da36
> cec6017257ba9ea0841dc0c79f003e73156e81123a4bd/af524e22-8e9a-5d18-99ed-bd86e1b746
> 23/test.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run 
> "c:/Users/i574n/AppData/Local/Temp/!create_temp_path_/spiral_865f890b072aaf3da36
> cec6017257ba9ea0841dc0c79f003e73156e81123a4bd/af524e22-8e9a-5d18-99ed-bd86e1b746
> 23/test.dib" --output-path 
> "c:/Users/i574n/AppData/Local/Temp/!create_temp_path_/spiral_865f890b072aaf3da36
> cec6017257ba9ea0841dc0c79f003e73156e81123a4bd/af524e22-8e9a-5d18-99ed-bd86e1b746
> 23/test.dib.ipynb"; cancellation_token = None; environment_variables = 
> Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = 
> None; stdin = None; trace = false; working_directory = None } }
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > 3 - 6
> │ > 
> │ > ── [ 3.74s - return value ] 
> ─────────────────────────────────...f524e22-8e9a-5d18-99ed-bd86e1b74623\test.dib
> .html
> │ 00:00:07 v #11 runtime.execute_with_options / result / 
> { exit_code = 0; std_trace_length = 1110 }
> │ 00:00:07 d #12 spiral.run / dib / jupyter nbconvert / {
> exit_code = 0; jupyter_result_length = 1110 }
> │ 00:00:07 d #13 runtime.execute_with_options / { 
> file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 
> 'c:/Users/i574n/AppData/Local/Temp/!create_temp_path_/spiral_865f890b072aaf3da36
> cec6017257ba9ea0841dc0c79f003e73156e81123a4bd/af524e22-8e9a-5d18-99ed-bd86e1b746
> 23/test.dib.html'; (Get-Content $path -Raw) -replace 
> '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | 
> Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 
> 'c:/Users/i574n/AppData/Local/Temp/!create_temp_path_/spiral_865f890b072aaf3da36
> cec6017257ba9ea0841dc0c79f003e73156e81123a4bd/af524e22-8e9a-5d18-99ed-bd86e1b746
> 23/test.dib.html'; (Get-Content $path -Raw) -replace 
> '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | 
> Set-Content $path"; cancellation_token = None; environment_variables = 
> Array(MutCell([])); on_line = None; stdin = None; trace = true; 
> working_directory = None } }
> │ 00:00:08 v #14 runtime.execute_with_options / result / 
> { exit_code = 0; std_trace_length = 0 }
> │ 00:00:08 d #15 spiral.run / dib / html cell ids / { 
> exit_code = 0; pwsh_replace_html_result_length = 0 }
> │ 00:00:08 d #16 spiral.run / dib / { exit_code = 0; 
> result_length = 2636 }
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## tests
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl tests () =
>     testing.run_tests {
>         verify_app = get_command >> runtime.command_debug_assert
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## main
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> ///! _
> 
> inl main (args : array_base string) =
>     inl trace_state = get_trace_state_or_init None
> 
>     trace Debug
>         fun () => "spiral.main"
>         fun () => { args }
> 
>     inl command = get_command ()
>     inl arg_matches = command |> runtime.command_get_matches
> 
>     inl trace_state_level = trace_state.level
> 
>     inl result =
>         arg_matches
>         |> run *trace_state_level
>         |> async.block_on_futures
>         |> resultm.unwrap'
> 
>     if *trace_state_level = Info
>     then result |> console.write_line
> 
>     0i32
> 
> inl main () =
>     $'let tests () = !tests ()' : ()
>     $'let main args = !main args' : ()
00:05:41 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 112890 }
00:05:41 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/spiral/apps/spiral/spiral.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/spiral/apps/spiral/spiral.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:05:43 v #5 ! [NbConvertApp] Converting notebook c:/home/git/spiral/apps/spiral/spiral.dib.ipynb to html
00:05:43 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:05:43 v #7 !   validate(nb)
00:05:43 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:05:43 v #9 !   return _pygments_highlight(
00:05:45 v #10 ! [NbConvertApp] Writing 641030 bytes to c:\home\git\spiral\apps\spiral\spiral.dib.html
00:05:45 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 852 }
00:05:45 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 852 }
00:05:45 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/spiral/apps/spiral/spiral.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/spiral/apps/spiral/spiral.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:05:46 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:05:46 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:05:46 d #16 spiral.run / dib / { exit_code = 0; result_length = 113801 }
00:00:00 d #1 writeDibCode / output: Spi / path: spiral.dib
00:00:00 d #2 parseDibCode / output: Spi / file: spiral.dib
00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: spiral / hash:  / code.Length: 1618887
spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: C:\home\git\polyglot\target\Builder\spiral
polyglot/scripts/core.ps1/ResolveLink #4 / Path: C:\home\git\spiral\deps\polyglot\deps\spiral\lib\spiral/../../deps/polyglot / parent_target:  / path_target: C:\home\git\polyglot / parent: C:\home\git\spiral\deps\polyglot\deps\spiral\lib\spiral\..\..\deps / End: polyglot
spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: C:\home\git\polyglot\target\Builder\spiral / ProjectName: spiral / Language: rs / Runtime:  / root: C:\home\git\polyglot
Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha)

Thanks to the contributor! @fbehrens
Stand with Ukraine! https://standwithukraine.com.ua/

Parsing target\Builder\spiral\spiral.fsproj...
Retrieving project options from cache, in case of issues run `dotnet fable clean` or try `--noCache` option.
Project and references (14 source files) parsed in 181ms

Skipped compilation because all generated files are up-to-date!
spiral/apps/spiral/build.ps1 / path: C:\home\git\polyglot\target\Builder\spiral/target/rs/spiral.rs
spiral/apps/spiral/build.ps1 / $projectName: spiral / $env:CI:''
   Compiling fable_library_rust v0.1.0 (C:\home\git\spiral\deps\polyglot\lib\rust\fable\fable_modules\fable-library-rust)
   Compiling spiral v0.0.1 (C:\home\git\spiral\apps\spiral)
    Finished `release` profile [optimized] target(s) in 23.85s
     Running unittests spiral.rs (C:\home\git\spiral\workspace\target\release\deps\spiral-8769982ca9bb71d8.exe)

running 1 test
test module_1216f6c3::Spiral::verify_app ... ok

successes:

successes:
    module_1216f6c3::Spiral::verify_app

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Compiling fable_library_rust v0.1.0 (C:\home\git\spiral\deps\polyglot\lib\rust\fable\fable_modules\fable-library-rust)
   Compiling spiral v0.0.1 (C:\home\git\spiral\apps\spiral)
error: failed to remove file `C:\home\git\spiral\workspace\target\release\spiral.exe`

Caused by:
  Access is denied. (os error 5)

# Invoke-Block / $retry: 1/1 / $Location:  / Get-Location: C:\home\git\spiral\apps\spiral / $OnError: Continue / $exitcode: 101 / $Error: '' / $ScriptBlock:
'cargo build --release'

polyglot/scripts/core.ps1/GetFullPath / Path: ../../deps/polyglot / Location: C:\home\git\spiral\apps\wasm / ResolvedLocation: C:\home\git\spiral\apps\wasm
polyglot/scripts/core.ps1/GetFullPath / FullPath: C:\home\git\spiral\deps\polyglot
polyglot/scripts/core.ps1/ResolveLink #4 / Path: C:\home\git\spiral\deps\polyglot / parent_target:  / path_target: C:\home\git\polyglot / parent: C:\home\git\spiral\deps / End: polyglot
00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "C:\home\git\spiral\apps\wasm/spiral_wasm.dib", "--working-directory", "C:\home\git\polyglot"])) }
00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/spiral/apps/wasm/spiral_wasm.dib", "--output-path", "c:/home/git/spiral/apps/wasm/spiral_wasm.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/spiral/apps/wasm/spiral_wasm.dib" --output-path "c:/home/git/spiral/apps/wasm/spiral_wasm.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = Some(
    "C:\home\git\polyglot",
) } }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ # spiral_wasm
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> open rust.rust_operators
> open rust
> open sm'_operators
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## spiral_wasm
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### get_args
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl get_args () =
>     {
>         exception = "exception", 'e'
>         trace_level = "trace_level", 't'
>         wasm = "wasm", 'w'
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### get_command
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> let get_command () =
>     ##"command"
>     |> runtime.new_command
>     |> runtime.command_args_override_self true
>     |> runtime.command_init_arg (get_args () .exception) (
>         runtime.arg_num_args_range (
>             runtime.new_value_range
>                 true
>                 (am'.End eval)
>                 (am'.End fun _ => (1i32 |> convert : unativeint))
>         )
>         >> runtime.arg_require_equals true
>         >> runtime.arg_default_missing_value ""
>     )
>     |> runtime.command_init_arg (get_args () .trace_level) (
>         real runtime.arg_union `trace_level ignore
>     )
>     |> runtime.command_init_arg (get_args () .wasm) (
>         runtime.arg_required true
>     )
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### run
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> let rec run
>     (matches : runtime.arg_matches)
>     : async.future_pin (
>         resultm.result'
>             u8
>             resultm.anyhow_error
>     )
>     =
>     fun () =>
>         inl wasm_path =
>             matches
>             |> runtime.matches_get_one (get_args () .wasm |> fst)
>             |> optionm'.unbox
>             |> optionm.value
>             |> sm'.from_std_string
> 
>         trace Verbose (fun () => "spiral_wasm.run") fun () => { wasm_path }
> 
>         inl wasm = wasm_path |> file_system.read |> resultm.try'
> 
>         let fn (retry : u8) =
>             fun () =>
>                 inl worker = near_workspaces.sandbox_worker () |> resultm.try'
>                 inl contract = worker |> near_workspaces.dev_deploy wasm |> 
> async.await |> resultm.try'
> 
>                 trace Verbose (fun () => "spiral_wasm.run") fun () => { retry 
> worker contract }
> 
>                 inl result =
>                     contract
>                     |> near_workspaces.call "state_main"
>                     |> near_workspaces.gas (near_workspaces.from_tgas 300)
>                     |> near_workspaces.transact
>                     |> async.await
>                     |> resultm.try'
> 
>                 trace Verbose (fun () => "spiral_wasm.run") fun () => { retry 
> result }
> 
>                 result
>                 |> near_workspaces.logs
>                 |> am'.vec_map sm'.ref_to_std_string
>                 |> am'.vec_for_each console.write_line
> 
>                 trace_raw Info (fun () => " ")
>                 result |> near_workspaces.print_usd retry
> 
>                 inl result2 = result |> near_workspaces.into_result
> 
>                 trace Verbose (fun () => "spiral_wasm.run") fun () => { result2 
> }
> 
>                 inl receipt_failures = result |> 
> near_workspaces.receipt_failures
>                 inl receipt_failures_len = receipt_failures |> am'.vec_len |> 
> i32
> 
>                 trace Verbose
>                     fun () => "spiral_wasm.run"
>                     fun () => { receipt_failures_len receipt_failures }
> 
>                 inl receipt_outcomes = result |> 
> near_workspaces.receipt_outcomes
>                 inl receipt_outcomes_len = receipt_outcomes |> am'.vec_len |> 
> i32
> 
>                 trace Verbose
>                     fun () => "spiral_wasm.run"
>                     fun () => { receipt_outcomes_len receipt_outcomes }
> 
>                 inl json = result |> near_workspaces.json
> 
>                 trace Verbose (fun () => "spiral_wasm.run") fun () => { json }
> 
>                 inl borsh = result |> near_workspaces.borsh
> 
>                 trace Verbose (fun () => "spiral_wasm.run") fun () => { borsh }
> 
>                 inl error = { receipt_outcomes_len retry receipt_failures } |> 
> sm'.format
>                 if receipt_failures_len > 0
>                 then (Ok (Some error) : _ _ resultm.anyhow_error) |> resultm.box
>                 elif receipt_outcomes_len > 1
>                 then (Ok None : _ _ resultm.anyhow_error) |> resultm.box
>                 else error |> resultm.anyhow_error |> resultm.err
>             |> async.new_future_move
> 
>         let rec loop (retry : u8) =
>             inl max = 15
>             inl init (error : _ string) =
>                 fun () =>
>                     { retry error }
>                 |> async.new_future_move
>             fun () =>
>                 inl result =
>                     fn retry
>                     |> async.await
>                     |> resultm.map_error' sm'.format'
>                     |> resultm.unbox
>                 match result with
>                 | Ok (None) =>
>                     init None
>                     |> async.await
>                     |> Ok
>                 | Ok (Some error) =>
>                     trace Critical (fun () => "spiral_wasm.run / Ok (Some 
> error)") fun () => { retry error }
>                     init (Some error)
>                     |> async.await
>                     |> Error
>                 | Error error when retry >= max =>
>                     trace Warning (fun () => "spiral_wasm.run / Error error") 
> fun () => { retry error }
>                     trace_raw Warning (fun () => "\n")
>                     init None
>                     |> async.await
>                     |> Ok
>                 | Error error =>
>                     trace Warning (fun () => "spiral_wasm.run / Error error") 
> fun () => { retry error }
>                     trace_raw Warning (fun () => "\n")
>                     loop (retry + 1) |> async.await
>             |> async.new_future_move
>         inl retries = loop 1 |> async.await
> 
>         trace Verbose (fun () => "spiral_wasm.run") fun () => { retries }
> 
>         match retries with
>         | Ok { retry } => Ok retry |> resultm.box
>         | Error { retry error } => { retries error } |> sm'.format |> 
> resultm.anyhow_error |> resultm.err
> 
>     |> async.new_future_move
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### main
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> ///! _
> 
> inl main (args : array_base string) =
>     inl command = get_command ()
>     inl arg_matches = command |> runtime.command_get_matches
> 
>     inl trace_level =
>         arg_matches
>         |> runtime.matches_get_one (get_args () .trace_level |> fst)
>         |> optionm'.unbox
>         |> optionm.map (
>             sm'.from_std_string
>             >> reflection.union_try_pick
>         )
>         |> optionm'.flatten
>         |> optionm'.default_value Verbose
> 
>     inl trace_state = get_trace_state_or_init (Some trace_level)
> 
>     trace Verbose
>         fun () => "spiral_wasm.main"
>         fun () => { args }
> 
>     inl exception =
>         arg_matches
>         |> runtime.matches_get_one (get_args () .exception |> fst)
>         |> optionm'.map (sm'.from_std_string >> sm'.trim_start [[ '\\' ]] >> 
> sm'.trim_end [[ '\\' ]])
>         |> optionm'.unbox
> 
>     inl result =
>         arg_matches
>         |> run
>         |> async.block_on_tokio
>         |> resultm.map_error' sm'.format'
> 
>     match result |> resultm.unbox, exception with
>     | Ok retries, Some exception =>
>         ($'$"spiral_wasm.main / retries: {!retries} / exception: 
> \'{!exception}\'"' : string)
>         |> resultm.err |> resultm.unwrap'
>     | Error _error, Some ("") =>
>         ()
>     | Error error, Some exception when error |> sm'.from_std_string |> 
> sm'.contains exception =>
>         ()
>     | Error error, Some exception =>
>         ($'$"spiral_wasm.main / exception: \'{!exception}\' / error: {!error}"' 
> : string)
>         |> resultm.err |> resultm.unwrap'
>     | Ok _retries, _ =>
>         ()
>     | Error _error, _ =>
>         result |> resultm.unwrap' |> ignore
> 
>     0i32
> 
> inl main () =
>     $'let main args = !main args' : ()
00:00:16 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 8454 }
00:00:16 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/spiral/apps/wasm/spiral_wasm.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/spiral/apps/wasm/spiral_wasm.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:18 v #5 ! [NbConvertApp] Converting notebook c:/home/git/spiral/apps/wasm/spiral_wasm.dib.ipynb to html
00:00:18 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:18 v #7 !   validate(nb)
00:00:18 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:18 v #9 !   return _pygments_highlight(
00:00:19 v #10 ! [NbConvertApp] Writing 306846 bytes to c:\home\git\spiral\apps\wasm\spiral_wasm.dib.html
00:00:19 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 858 }
00:00:19 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 858 }
00:00:19 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/spiral/apps/wasm/spiral_wasm.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/spiral/apps/wasm/spiral_wasm.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:19 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:19 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:19 d #16 spiral.run / dib / { exit_code = 0; result_length = 9371 }
00:00:00 d #1 writeDibCode / output: Spi / path: spiral_wasm.dib
00:00:00 d #2 parseDibCode / output: Spi / file: spiral_wasm.dib
00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: spiral_wasm / hash:  / code.Length: 241712
spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: C:\home\git\polyglot\target\Builder\spiral_wasm
polyglot/scripts/core.ps1/ResolveLink #4 / Path: C:\home\git\spiral\deps\polyglot\deps\spiral\lib\spiral/../../deps/polyglot / parent_target:  / path_target: C:\home\git\polyglot / parent: C:\home\git\spiral\deps\polyglot\deps\spiral\lib\spiral\..\..\deps / End: polyglot
spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: C:\home\git\polyglot\target\Builder\spiral_wasm / ProjectName: spiral_wasm / Language: rs / Runtime:  / root: C:\home\git\polyglot
Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha)

Thanks to the contributor! @GordonBGood
Stand with Ukraine! https://standwithukraine.com.ua/

Parsing target\Builder\spiral_wasm\spiral_wasm.fsproj...
Retrieving project options from cache, in case of issues run `dotnet fable clean` or try `--noCache` option.
Project and references (14 source files) parsed in 200ms

Skipped compilation because all generated files are up-to-date!
spiral/apps/wasm/build.ps1 / path: C:\home\git\polyglot\target\Builder\spiral_wasm/target/rs/spiral_wasm.rs
spiral/apps/wasm/build.ps1 / $targetDir = C:\home\git\polyglot\target\Builder\spiral_wasm / $projectName: spiral_wasm / $env:CI:''
   Compiling fable_library_rust v0.1.0 (/mnt/c/home/git/spiral/deps/polyglot/lib/rust/fable/fable_modules/fable-library-rust)
   Compiling spiral_wasm v0.0.1 (/mnt/c/home/git/spiral/apps/wasm)
    Finished `release` profile [optimized] target(s) in 2m 17s
   Compiling fable_library_rust v0.1.0 (C:\home\git\spiral\deps\polyglot\lib\rust\fable\fable_modules\fable-library-rust)
   Compiling plot v0.0.1 (C:\home\git\spiral\deps\polyglot\apps\plot)
warning: unnecessary parentheses around function argument
   --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:668:33
    |
668 |         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
    |                                 ^                     ^
    |
    = note: `#[warn(unused_parens)]` on by default
help: remove these parentheses
    |
668 -         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
668 +         let v3: string = append(v0_1.l0.get().clone(), (v1_1));
    |

warning: unnecessary parentheses around function argument
   --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:668:58
    |
668 |         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
    |                                                          ^    ^
    |
help: remove these parentheses
    |
668 -         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
668 +         let v3: string = append((v0_1.l0.get().clone()), v1_1);
    |

warning: unnecessary parentheses around function argument
   --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:837:33
    |
837 |         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
    |                                 ^                     ^
    |
help: remove these parentheses
    |
837 -         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
837 +         let v3: string = append(v0_1.l0.get().clone(), (v1_1));
    |

warning: unnecessary parentheses around function argument
   --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:837:58
    |
837 |         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
    |                                                          ^    ^
    |
help: remove these parentheses
    |
837 -         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
837 +         let v3: string = append((v0_1.l0.get().clone()), v1_1);
    |

warning: unnecessary parentheses around `break` value
    --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1098:30
     |
1098 |             break '_method28 (match v0_1.get().clone().as_ref() {
     |                              ^
...
1136 |             });
     |              ^
     |
help: remove these parentheses
     |
1098 ~             break '_method28 match v0_1.get().clone().as_ref() {
1099 |                 Runtime::UH0::UH0_0 => (v1_1.get().clone(), v2_1.get().clone(), v3.get().clone()),
 ...
1135 |                 }
1136 ~             };
     |

warning: unnecessary parentheses around function argument
    --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1143:62
     |
1143 |             (Runtime::method29(v0_1, (v1_1) + 1_i32))(append((v2_1), string(" ")))
     |                                                              ^    ^
     |
help: remove these parentheses
     |
1143 -             (Runtime::method29(v0_1, (v1_1) + 1_i32))(append((v2_1), string(" ")))
1143 +             (Runtime::method29(v0_1, (v1_1) + 1_i32))(append(v2_1, string(" ")))
     |

warning: unnecessary parentheses around function argument
    --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1209:25
     |
1209 |                         ((Runtime::method29((v3) - 1_i32, 0_i32))(string(""))),
     |                         ^                                                    ^
     |
help: remove these parentheses
     |
1209 -                         ((Runtime::method29((v3) - 1_i32, 0_i32))(string(""))),
1209 +                         (Runtime::method29((v3) - 1_i32, 0_i32))(string("")),
     |

warning: unnecessary parentheses around function argument
    --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1273:25
     |
1273 |                         ((Runtime::method29((v3) - 1_i32, 0_i32))(string(""))),
     |                         ^                                                    ^
     |
help: remove these parentheses
     |
1273 -                         ((Runtime::method29((v3) - 1_i32, 0_i32))(string(""))),
1273 +                         (Runtime::method29((v3) - 1_i32, 0_i32))(string("")),
     |

warning: unnecessary parentheses around `break` value
    --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1290:30
     |
1290 |             break '_method30 (match v2_1.get().clone().as_ref() {
     |                              ^
...
1322 |             });
     |              ^
     |
help: remove these parentheses
     |
1290 ~             break '_method30 match v2_1.get().clone().as_ref() {
1291 |                 Runtime::UH1::UH1_0 => {
 ...
1321 |                 }
1322 ~             };
     |

warning: unnecessary parentheses around `break` value
    --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1329:30
     |
1329 |             break '_method31 (if (v1_1.get().clone()) >= 2_i64 {
     |                              ^
...
1360 |             });
     |              ^
     |
help: remove these parentheses
     |
1329 ~             break '_method31 if (v1_1.get().clone()) >= 2_i64 {
1330 |                 false
 ...
1359 |                 }
1360 ~             };
     |

warning: unnecessary parentheses around `break` value
    --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1376:30
     |
1376 |             break '_method32 ({
     |                              ^
...
1450 |             });
     |              ^
     |
help: remove these parentheses
     |
1376 ~             break '_method32 {
1377 |                 let v98: Runtime::US7 = if string("") == (v1_1.get().clone()) {
 ...
1449 |                 }
1450 ~             };
     |

warning: unnecessary parentheses around function argument
    --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1430:36
     |
1430 | ...                   append((v0_1.get().clone()), (ofChar(v110_0_0.clone())));
     |                              ^                  ^
     |
help: remove these parentheses
     |
1430 -                             append((v0_1.get().clone()), (ofChar(v110_0_0.clone())));
1430 +                             append(v0_1.get().clone(), (ofChar(v110_0_0.clone())));
     |

warning: unnecessary parentheses around function argument
    --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1430:58
     |
1430 | ...                   append((v0_1.get().clone()), (ofChar(v110_0_0.clone())));
     |                                                    ^                        ^
     |
help: remove these parentheses
     |
1430 -                             append((v0_1.get().clone()), (ofChar(v110_0_0.clone())));
1430 +                             append((v0_1.get().clone()), ofChar(v110_0_0.clone()));
     |

warning: unnecessary parentheses around `break` value
    --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1466:30
     |
1466 |             break '_method33 (match v4.get().clone().as_ref() {
     |                              ^
...
1501 |             });
     |              ^
     |
help: remove these parentheses
     |
1466 ~             break '_method33 match v4.get().clone().as_ref() {
1467 |                 Runtime::UH1::UH1_0 => {
 ...
1500 |                 }
1501 ~             };
     |

warning: unnecessary parentheses around `break` value
    --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1508:30
     |
1508 |             break '_method34 (if (v1_1.get().clone()) >= 3_i64 {
     |                              ^
...
1544 |             });
     |              ^
     |
help: remove these parentheses
     |
1508 ~             break '_method34 if (v1_1.get().clone()) >= 3_i64 {
1509 |                 false
 ...
1543 |                 }
1544 ~             };
     |

warning: unnecessary parentheses around `break` value
    --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1560:30
     |
1560 |             break '_method35 ({
     |                              ^
...
1634 |             });
     |              ^
     |
help: remove these parentheses
     |
1560 ~             break '_method35 {
1561 |                 let v106: Runtime::US7 = if string("") == (v1_1.get().clone()) {
 ...
1633 |                 }
1634 ~             };
     |

warning: unnecessary parentheses around function argument
    --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1614:36
     |
1614 | ...                   append((v0_1.get().clone()), (ofChar(v118_0_0.clone())));
     |                              ^                  ^
     |
help: remove these parentheses
     |
1614 -                             append((v0_1.get().clone()), (ofChar(v118_0_0.clone())));
1614 +                             append(v0_1.get().clone(), (ofChar(v118_0_0.clone())));
     |

warning: unnecessary parentheses around function argument
    --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1614:58
     |
1614 | ...                   append((v0_1.get().clone()), (ofChar(v118_0_0.clone())));
     |                                                    ^                        ^
     |
help: remove these parentheses
     |
1614 -                             append((v0_1.get().clone()), (ofChar(v118_0_0.clone())));
1614 +                             append((v0_1.get().clone()), ofChar(v118_0_0.clone()));
     |

warning: unnecessary parentheses around `break` value
    --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1641:30
     |
1641 |             break '_method36 (if (v1_1.get().clone()) >= (length(v0_1.get().clone())) {
     |                              ^
...
1653 |             });
     |              ^
     |
help: remove these parentheses
     |
1641 ~             break '_method36 if (v1_1.get().clone()) >= (length(v0_1.get().clone())) {
1642 |                 v1_1.get().clone()
 ...
1652 |                 }
1653 ~             };
     |

warning: unnecessary parentheses around `break` value
    --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1669:30
     |
1669 |             break '_method37 ({
     |                              ^
...
1720 |             });
     |              ^
     |
help: remove these parentheses
     |
1669 ~             break '_method37 {
1670 |                 let v66: Runtime::US7 = if string("") == (v1_1.get().clone()) {
 ...
1719 |                 }
1720 ~             };
     |

warning: unnecessary parentheses around function argument
    --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1700:36
     |
1700 | ...                   append((v0_1.get().clone()), (ofChar(v66_0_0.clone())));
     |                              ^                  ^
     |
help: remove these parentheses
     |
1700 -                             append((v0_1.get().clone()), (ofChar(v66_0_0.clone())));
1700 +                             append(v0_1.get().clone(), (ofChar(v66_0_0.clone())));
     |

warning: unnecessary parentheses around function argument
    --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1700:58
     |
1700 | ...                   append((v0_1.get().clone()), (ofChar(v66_0_0.clone())));
     |                                                    ^                       ^
     |
help: remove these parentheses
     |
1700 -                             append((v0_1.get().clone()), (ofChar(v66_0_0.clone())));
1700 +                             append((v0_1.get().clone()), ofChar(v66_0_0.clone()));
     |

warning: unnecessary parentheses around function argument
    --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2079:37
     |
2079 | ...                   ((Runtime::method29((v421) - 1_i32, 0_i32))(string(""))),
     |                       ^                                                      ^
     |
help: remove these parentheses
     |
2079 -                                     ((Runtime::method29((v421) - 1_i32, 0_i32))(string(""))),
2079 +                                     (Runtime::method29((v421) - 1_i32, 0_i32))(string("")),
     |

warning: unnecessary parentheses around `break` value
    --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3150:30
     |
3150 |             break '_method62 (if (v1_1.get().clone()) >= 4_i64 {
     |                              ^
...
3191 |             });
     |              ^
     |
help: remove these parentheses
     |
3150 ~             break '_method62 if (v1_1.get().clone()) >= 4_i64 {
3151 |                 false
 ...
3190 |                 }
3191 ~             };
     |

warning: unnecessary parentheses around `break` value
    --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3207:30
     |
3207 |             break '_method63 ({
     |                              ^
...
3268 |             });
     |              ^
     |
help: remove these parentheses
     |
3207 ~             break '_method63 {
3208 |                 let v114: Runtime::US7 = if string("") == (v1_1.get().clone()) {
 ...
3267 |                 }
3268 ~             };
     |

warning: unnecessary parentheses around function argument
    --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3248:36
     |
3248 | ...                   append((v0_1.get().clone()), (ofChar(v114_0_0.clone())));
     |                              ^                  ^
     |
help: remove these parentheses
     |
3248 -                             append((v0_1.get().clone()), (ofChar(v114_0_0.clone())));
3248 +                             append(v0_1.get().clone(), (ofChar(v114_0_0.clone())));
     |

warning: unnecessary parentheses around function argument
    --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3248:58
     |
3248 | ...                   append((v0_1.get().clone()), (ofChar(v114_0_0.clone())));
     |                                                    ^                        ^
     |
help: remove these parentheses
     |
3248 -                             append((v0_1.get().clone()), (ofChar(v114_0_0.clone())));
3248 +                             append((v0_1.get().clone()), ofChar(v114_0_0.clone()));
     |

warning: unnecessary parentheses around `break` value
    --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3275:30
     |
3275 |             break '_method65 (if (v1_1.get().clone()) >= 3_i64 {
     |                              ^
...
3311 |             });
     |              ^
     |
help: remove these parentheses
     |
3275 ~             break '_method65 if (v1_1.get().clone()) >= 3_i64 {
3276 |                 false
 ...
3310 |                 }
3311 ~             };
     |

warning: unnecessary parentheses around function argument
    --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3370:25
     |
3370 |                         ((Runtime::method29((v3) - 1_i32, 0_i32))(string(""))),
     |                         ^                                                    ^
     |
help: remove these parentheses
     |
3370 -                         ((Runtime::method29((v3) - 1_i32, 0_i32))(string(""))),
3370 +                         (Runtime::method29((v3) - 1_i32, 0_i32))(string("")),
     |

warning: unnecessary parentheses around function argument
    --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3413:28
     |
3413 |                     append((ofChar('\\')), (ofChar(v196_0_0.clone()))),
     |                            ^            ^
     |
help: remove these parentheses
     |
3413 -                     append((ofChar('\\')), (ofChar(v196_0_0.clone()))),
3413 +                     append(ofChar('\\'), (ofChar(v196_0_0.clone()))),
     |

warning: unnecessary parentheses around function argument
    --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3413:44
     |
3413 |                     append((ofChar('\\')), (ofChar(v196_0_0.clone()))),
     |                                            ^                        ^
     |
help: remove these parentheses
     |
3413 -                     append((ofChar('\\')), (ofChar(v196_0_0.clone()))),
3413 +                     append((ofChar('\\')), ofChar(v196_0_0.clone())),
     |

warning: unnecessary parentheses around function argument
    --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3479:25
     |
3479 |                         ((Runtime::method29((v3) - 1_i32, 0_i32))(string(""))),
     |                         ^                                                    ^
     |
help: remove these parentheses
     |
3479 -                         ((Runtime::method29((v3) - 1_i32, 0_i32))(string(""))),
3479 +                         (Runtime::method29((v3) - 1_i32, 0_i32))(string("")),
     |

warning: unnecessary parentheses around function argument
    --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3522:28
     |
3522 |                     append((ofChar('`')), (ofChar(v196_0_0.clone()))),
     |                            ^           ^
     |
help: remove these parentheses
     |
3522 -                     append((ofChar('`')), (ofChar(v196_0_0.clone()))),
3522 +                     append(ofChar('`'), (ofChar(v196_0_0.clone()))),
     |

warning: unnecessary parentheses around function argument
    --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3522:43
     |
3522 |                     append((ofChar('`')), (ofChar(v196_0_0.clone()))),
     |                                           ^                        ^
     |
help: remove these parentheses
     |
3522 -                     append((ofChar('`')), (ofChar(v196_0_0.clone()))),
3522 +                     append((ofChar('`')), ofChar(v196_0_0.clone())),
     |

warning: unnecessary parentheses around `break` value
    --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3545:30
     |
3545 |             break '_method66 (match v4.get().clone().as_ref() {
     |                              ^
...
3580 |             });
     |              ^
     |
help: remove these parentheses
     |
3545 ~             break '_method66 match v4.get().clone().as_ref() {
3546 |                 Runtime::UH3::UH3_0 => {
 ...
3579 |                 }
3580 ~             };
     |

warning: unnecessary parentheses around `break` value
    --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3590:30
     |
3590 |             break '_method67 (match v0_1.get().clone().as_ref() {
     |                              ^
...
3610 |             });
     |              ^
     |
help: remove these parentheses
     |
3590 ~             break '_method67 match v0_1.get().clone().as_ref() {
3591 |                 Runtime::UH2::UH2_0 => v1_1.get().clone(),
 ...
3609 |                 }
3610 ~             };
     |

warning: unnecessary parentheses around `break` value
    --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3626:30
     |
3626 |             break '_method64 ({
     |                              ^
...
3730 |             });
     |              ^
     |
help: remove these parentheses
     |
3626 ~             break '_method64 {
3627 |                 let v106: Runtime::US7 = if string("") == (v1_1.get().clone()) {
 ...
3729 |                 }
3730 ~             };
     |

warning: unnecessary parentheses around `break` value
    --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3766:30
     |
3766 |             break '_method69 ({
     |                              ^
...
3839 |             });
     |              ^
     |
help: remove these parentheses
     |
3766 ~             break '_method69 {
3767 |                 let v106: Runtime::US7 = if string("") == (v1_1.get().clone()) {
 ...
3838 |                 }
3839 ~             };
     |

warning: unnecessary parentheses around `break` value
    --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3855:30
     |
3855 |             break '_method61 ({
     |                              ^
...
4316 |             });
     |              ^
     |
help: remove these parentheses
     |
3855 ~             break '_method61 {
3856 |                 let v5: bool = string("") == (v1_1.get().clone());
 ...
4315 |                 }
4316 ~             };
     |

warning: unnecessary parentheses around function argument
    --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3972:96
     |
3972 | ...                   append(((Runtime::method29((v4.get().clone())
     |                              ^
...
3975 | ...                                              0_i32))(string(""))),
     |                                                                     ^
     |
help: remove these parentheses
     |
3972 ~                                                                                         append((Runtime::method29((v4.get().clone())
3973 |                                                                                                                        -
3974 |                                                                                                                        1_i32,
3975 ~                                                                                                                    0_i32))(string("")),
     |

warning: unnecessary parentheses around function argument
    --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:4100:116
     |
4100 | ...                   append(((Runtime::method29((v306)
     |                              ^
...
4103 | ...                                              0_i32))(string(""))),
     |                                                                     ^
     |
help: remove these parentheses
     |
4100 ~                                                                                                             append((Runtime::method29((v306)
4101 |                                                                                                                                            -
4102 |                                                                                                                                            1_i32,
4103 ~                                                                                                                                        0_i32))(string("")),
     |

warning: unnecessary parentheses around function argument
   --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\trace.rs:610:33
    |
610 |         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
    |                                 ^                     ^
    |
help: remove these parentheses
    |
610 -         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
610 +         let v3: string = append(v0_1.l0.get().clone(), (v1_1));
    |

warning: unnecessary parentheses around function argument
   --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\trace.rs:610:58
    |
610 |         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
    |                                                          ^    ^
    |
help: remove these parentheses
    |
610 -         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
610 +         let v3: string = append((v0_1.l0.get().clone()), v1_1);
    |

warning: unnecessary parentheses around function argument
   --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:892:33
    |
892 |         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
    |                                 ^                     ^
    |
help: remove these parentheses
    |
892 -         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
892 +         let v3: string = append(v0_1.l0.get().clone(), (v1_1));
    |

warning: unnecessary parentheses around function argument
   --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:892:58
    |
892 |         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
    |                                                          ^    ^
    |
help: remove these parentheses
    |
892 -         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
892 +         let v3: string = append((v0_1.l0.get().clone()), v1_1);
    |

warning: unnecessary parentheses around function argument
    --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2711:81
     |
2711 |             (File_system::method109(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3), (v1_1)))
     |                                                                                 ^  ^
     |
help: remove these parentheses
     |
2711 -             (File_system::method109(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3), (v1_1)))
2711 +             (File_system::method109(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append(v3, (v1_1)))
     |

warning: unnecessary parentheses around function argument
    --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2711:87
     |
2711 |             (File_system::method109(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3), (v1_1)))
     |                                                                                       ^    ^
     |
help: remove these parentheses
     |
2711 -             (File_system::method109(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3), (v1_1)))
2711 +             (File_system::method109(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3), v1_1))
     |

warning: unnecessary parentheses around function argument
    --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2725:13
     |
2725 |             ((File_system::method109(32_i32 - (length(v0_1.clone())), v3, 0_i32))(string(""))),
     |             ^                                                                                ^
     |
help: remove these parentheses
     |
2725 -             ((File_system::method109(32_i32 - (length(v0_1.clone())), v3, 0_i32))(string(""))),
2725 +             (File_system::method109(32_i32 - (length(v0_1.clone())), v3, 0_i32))(string("")),
     |

warning: unnecessary parentheses around function argument
    --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2726:13
     |
2726 |             (v0_1),
     |             ^    ^
     |
help: remove these parentheses
     |
2726 -             (v0_1),
2726 +             v0_1,
     |

warning: unnecessary parentheses around `break` value
    --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:3540:31
     |
3540 |             break '_method141 (if v3(File_system::method90(v4.get().clone(), v0_1.get().clone())) {
     |                               ^
...
3581 |             });
     |              ^
     |
help: remove these parentheses
     |
3540 ~             break '_method141 if v3(File_system::method90(v4.get().clone(), v0_1.get().clone())) {
3541 |                 File_system::US17::US17_0(v4.get().clone())
 ...
3580 |                 }
3581 ~             };
     |

warning: unnecessary parentheses around function argument
    --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:3565:25
     |
3565 |                         (concat(new_array(&[
     |                         ^
...
3572 |                         ]))),
     |                            ^
     |
help: remove these parentheses
     |
3565 ~                         concat(new_array(&[
3566 |                             string("file_system.find_parent / No parent for "),
 ...
3571 |                             },
3572 ~                         ])),
     |

warning: unnecessary parentheses around function argument
    --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:3609:21
     |
3609 |                     (concat(new_array(&[
     |                     ^
...
3612 |                     ]))),
     |                        ^
     |
help: remove these parentheses
     |
3609 ~                     concat(new_array(&[
3610 |                         string("file_system.find_parent / No parent for "),
3611 |                         if v2_1 { string("file") } else { string("dir") },
3612 ~                     ])),
     |

warning: unnecessary parentheses around function argument
  --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:94:70
   |
94 |             (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3_1), (v1_1)))
   |                                                                      ^    ^
   |
help: remove these parentheses
   |
94 -             (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3_1), (v1_1)))
94 +             (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append(v3_1, (v1_1)))
   |

warning: unnecessary parentheses around function argument
  --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:94:78
   |
94 |             (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3_1), (v1_1)))
   |                                                                              ^    ^
   |
help: remove these parentheses
   |
94 -             (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3_1), (v1_1)))
94 +             (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3_1), v1_1))
   |

warning: unnecessary parentheses around function argument
   --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:108:13
    |
108 |             ((Sm::method0((v0_1) - (length(v2_1.clone())), v5_1, 0_i32))(string(""))),
    |             ^                                                                       ^
    |
help: remove these parentheses
    |
108 -             ((Sm::method0((v0_1) - (length(v2_1.clone())), v5_1, 0_i32))(string(""))),
108 +             (Sm::method0((v0_1) - (length(v2_1.clone())), v5_1, 0_i32))(string("")),
    |

warning: unnecessary parentheses around function argument
   --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:109:13
    |
109 |             (v2_1),
    |             ^    ^
    |
help: remove these parentheses
    |
109 -             (v2_1),
109 +             v2_1,
    |

warning: unnecessary parentheses around function argument
   --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:128:13
    |
128 |             (v2_1.clone()),
    |             ^            ^
    |
help: remove these parentheses
    |
128 -             (v2_1.clone()),
128 +             v2_1.clone(),
    |

warning: unnecessary parentheses around function argument
   --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:129:13
    |
129 |             ((Sm::method0((v0_1) - (length(v2_1)), v5_1, 0_i32))(string(""))),
    |             ^                                                               ^
    |
help: remove these parentheses
    |
129 -             ((Sm::method0((v0_1) - (length(v2_1)), v5_1, 0_i32))(string(""))),
129 +             (Sm::method0((v0_1) - (length(v2_1)), v5_1, 0_i32))(string("")),
    |

warning: unnecessary parentheses around function argument
   --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:345:17
    |
345 |                 (getSlice(v1_1, Some(0_i32), Some((v0_1) - 1_i32))),
    |                 ^                                                 ^
    |
help: remove these parentheses
    |
345 -                 (getSlice(v1_1, Some(0_i32), Some((v0_1) - 1_i32))),
345 +                 getSlice(v1_1, Some(0_i32), Some((v0_1) - 1_i32)),
    |

warning: unnecessary parentheses around function argument
   --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:410:17
    |
410 |                 (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))),
    |                 ^                                                                    ^
    |
help: remove these parentheses
    |
410 -                 (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))),
410 +                 append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue)),
    |

warning: unnecessary parentheses around function argument
   --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:410:25
    |
410 |                 (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))),
    |                         ^                                            ^
    |
help: remove these parentheses
    |
410 -                 (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))),
410 +                 (append(append((v1_1[v9_1].clone()), (matchValue_1)), (matchValue))),
    |

warning: unnecessary parentheses around function argument
   --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:410:73
    |
410 |                 (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))),
    |                                                                         ^          ^
    |
help: remove these parentheses
    |
410 -                 (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))),
410 +                 (append((append((v1_1[v9_1].clone()), (matchValue_1))), matchValue)),
    |

warning: unnecessary parentheses around function argument
   --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:410:33
    |
410 |                 (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))),
    |                                 ^                  ^
    |
help: remove these parentheses
    |
410 -                 (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))),
410 +                 (append((append(v1_1[v9_1].clone(), (matchValue_1))), (matchValue))),
    |

warning: unnecessary parentheses around function argument
   --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:410:55
    |
410 |                 (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))),
    |                                                       ^            ^
    |
help: remove these parentheses
    |
410 -                 (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))),
410 +                 (append((append((v1_1[v9_1].clone()), matchValue_1)), (matchValue))),
    |

warning: unnecessary parentheses around function argument
   --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\crypto.rs:758:33
    |
758 |         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
    |                                 ^                     ^
    |
help: remove these parentheses
    |
758 -         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
758 +         let v3: string = append(v0_1.l0.get().clone(), (v1_1));
    |

warning: unnecessary parentheses around function argument
   --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\crypto.rs:758:58
    |
758 |         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
    |                                                          ^    ^
    |
help: remove these parentheses
    |
758 -         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
758 +         let v3: string = append((v0_1.l0.get().clone()), v1_1);
    |

warning: unnecessary parentheses around function argument
   --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\common.rs:690:33
    |
690 |         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
    |                                 ^                     ^
    |
help: remove these parentheses
    |
690 -         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
690 +         let v3: string = append(v0_1.l0.get().clone(), (v1_1));
    |

warning: unnecessary parentheses around function argument
   --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\common.rs:690:58
    |
690 |         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
    |                                                          ^    ^
    |
help: remove these parentheses
    |
690 -         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
690 +         let v3: string = append((v0_1.l0.get().clone()), v1_1);
    |

warning: unnecessary parentheses around `break` value
   --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\common.rs:867:29
    |
867 |             break '_method8 ({
    |                             ^
...
904 |             });
    |              ^
    |
help: remove these parentheses
    |
867 ~             break '_method8 {
868 |                 let result: LrcPtr<MutCell<Common::US7>> = refCell(Common::US7::US7_1);
...
903 |                 }
904 ~             };
    |

warning: `plot` (lib) generated 69 warnings (run `cargo fix --lib -p plot` to apply 69 suggestions)
    Finished `release` profile [optimized] target(s) in 32.28s
polyglot/scripts/core.ps1/GetFullPath / Path: ../../deps/polyglot/lib/fsharp / Location: C:\home\git\spiral\lib\spiral / ResolvedLocation: C:\home\git\spiral\lib\spiral
polyglot/scripts/core.ps1/GetFullPath / FullPath: C:\home\git\spiral\deps\polyglot\lib\fsharp
00:00:00 d #1 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/physics.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/physics.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:11 d #2 runtime.execute_with_options_async / { exit_code = 0; output_length = 127100; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/physics.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:11 d #1 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/physics.dib --retries 3
00:01:11 d #3 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/parsing.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/parsing.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:02:22 d #4 runtime.execute_with_options_async / { exit_code = 0; output_length = 70242; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/parsing.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:02:22 d #2 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/parsing.dib --retries 3
00:02:22 d #5 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/sm'.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/sm'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:04:05 d #6 runtime.execute_with_options_async / { exit_code = 0; output_length = 129820; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/sm'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:04:05 d #3 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/sm'.dib --retries 3
00:04:05 d #7 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/rust/rust.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/rust/rust.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:04:43 d #8 runtime.execute_with_options_async / { exit_code = 0; output_length = 50393; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/rust/rust.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:04:43 d #4 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/rust/rust.dib --retries 3
00:04:43 d #9 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/rust/testing.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/rust/testing.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:06:04 d #10 runtime.execute_with_options_async / { exit_code = 0; output_length = 18646; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/rust/testing.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:06:04 d #5 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/rust/testing.dib --retries 3
00:06:04 d #11 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/rust/near.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/rust/near.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:06:24 d #12 runtime.execute_with_options_async / { exit_code = 0; output_length = 14781; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/rust/near.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:06:24 d #6 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/rust/near.dib --retries 3
00:06:24 d #13 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0
  "dib --path C:\home\git\spiral\lib\spiral/rust/near_workspaces.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/rust/near_workspaces.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:06:45 d #14 runtime.execute_with_options_async / { exit_code = 0; output_length = 17696; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/rust/near_workspaces.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:06:45 d #7 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/rust/near_workspaces.dib --retries 3
00:06:45 d #15 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/testing.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/testing.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:07:08 d #16 runtime.execute_with_options_async / { exit_code = 0; output_length = 19895; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/testing.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:07:08 d #8 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/testing.dib --retries 3
00:07:08 d #17 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/guid.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/guid.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:07:26 d #18 runtime.execute_with_options_async / { exit_code = 0; output_length = 8723; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/guid.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:07:26 d #9 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/guid.dib --retries 3
00:07:26 d #19 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/async.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/async.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:07:58 d #20 runtime.execute_with_options_async / { exit_code = 0; output_length = 36390; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/async.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:07:58 d #10 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/async.dib --retries 3
00:07:58 d #21 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/runtime.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/runtime.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:09:59 d #22 runtime.execute_with_options_async / { exit_code = 0; output_length = 100289; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/runtime.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:09:59 d #11 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/runtime.dib --retries 3
00:09:59 d #23 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/trace.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/trace.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:10:26 d #24 runtime.execute_with_options_async / { exit_code = 0; output_length = 20906; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/trace.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:10:26 d #12 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/trace.dib --retries 3
00:10:26 d #25 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/am'.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/am'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:11:32 d #26 runtime.execute_with_options_async / { exit_code = 0; output_length = 46587; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/am'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:11:32 d #13 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/am'.dib --retries 3
00:11:32 d #27 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/crypto.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/crypto.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:13:00 d #28 runtime.execute_with_options_async / { exit_code = 0; output_length = 26110; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/crypto.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:13:00 d #14 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/crypto.dib --retries 3
00:13:00 d #29 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/common.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/common.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:13:32 d #30 runtime.execute_with_options_async / { exit_code = 0; output_length = 17289; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/common.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:13:32 d #15 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/common.dib --retries 3
00:13:32 d #31 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/resultm.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/resultm.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:14:03 d #32 runtime.execute_with_options_async / { exit_code = 0; output_length = 23823; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/resultm.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:14:03 d #16 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/resultm.dib --retries 3
00:14:03 d #33 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/console.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/console.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:14:16 d #34 runtime.execute_with_options_async / { exit_code = 0; output_length = 6479; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/console.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:14:16 d #17 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/console.dib --retries 3
00:14:16 d #35 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/base.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/base.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:15:57 d #36 runtime.execute_with_options_async / { exit_code = 0; output_length = 102816; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/base.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:15:57 d #18 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/base.dib --retries 3
00:15:57 d #37 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/date_time.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/date_time.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:17:17 d #38 runtime.execute_with_options_async / { exit_code = 0; output_length = 58723; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/date_time.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:17:17 d #19 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/date_time.dib --retries 3
00:17:17 d #39 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/math.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/math.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:17:36 d #40 runtime.execute_with_options_async / { exit_code = 0; output_length = 11877; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/math.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:17:36 d #20 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/math.dib --retries 3
00:17:36 d #41 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/mapm.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/mapm.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:17:52 d #42 runtime.execute_with_options_async / { exit_code = 0; output_length = 10156; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/mapm.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:17:52 d #21 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/mapm.dib --retries 3
00:17:52 d #43 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/optionm'.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/optionm'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:18:28 d #44 runtime.execute_with_options_async / { exit_code = 0; output_length = 23724; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/optionm'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:18:28 d #22 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/optionm'.dib --retries 3
00:18:28 d #45 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/listm'.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/listm'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:19:07 d #46 runtime.execute_with_options_async / { exit_code = 0; output_length = 102912; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/listm'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:19:07 d #23 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/listm'.dib --retries 3
00:19:07 d #47 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/reflection.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/reflection.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:19:41 d #48 runtime.execute_with_options_async / { exit_code = 0; output_length = 23416; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/reflection.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:19:41 d #24 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/reflection.dib --retries 3
00:19:41 d #49 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/iter.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/iter.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:20:00 d #50 runtime.execute_with_options_async / { exit_code = 0; output_length = 9145; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/iter.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:20:00 d #25 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/iter.dib --retries 3
00:20:00 d #51 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/wasm.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/wasm.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:20:16 d #52 runtime.execute_with_options_async / { exit_code = 0; output_length = 10792; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/wasm.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:20:16 d #26 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/wasm.dib --retries 3
00:20:16 d #53 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/leptos/leptos.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/leptos/leptos.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:21:21 d #54 runtime.execute_with_options_async / { exit_code = 0; output_length = 94496; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/leptos/leptos.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:21:21 d #27 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/leptos/leptos.dib --retries 3
00:21:21 d #55 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/lustre.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/lustre.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:21:56 d #56 runtime.execute_with_options_async / { exit_code = 0; output_length = 18192; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/lustre.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:21:56 d #28 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/lustre.dib --retries 3
00:21:56 d #57 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/util.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/util.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:22:08 d #58 runtime.execute_with_options_async / { exit_code = 0; output_length = 6673; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/util.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:22:08 d #29 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/util.dib --retries 3
00:22:08 d #59 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/platform.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/platform.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:22:23 d #60 runtime.execute_with_options_async / { exit_code = 0; output_length = 7613; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/platform.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:22:23 d #30 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/platform.dib --retries 3
00:22:23 d #61 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/stream.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/stream.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:22:49 d #62 runtime.execute_with_options_async / { exit_code = 0; output_length = 27473; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/stream.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:22:49 d #31 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/stream.dib --retries 3
00:22:49 d #63 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/threading.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/threading.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:23:17 d #64 runtime.execute_with_options_async / { exit_code = 0; output_length = 28212; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/threading.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:23:17 d #32 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/threading.dib --retries 3
00:23:17 d #65 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/benchmark.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/benchmark.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:23:37 d #66 runtime.execute_with_options_async / { exit_code = 0; output_length = 22109; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/benchmark.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:23:37 d #33 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/benchmark.dib --retries 3
00:23:37 d #67 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/seq.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/seq.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:24:24 d #68 runtime.execute_with_options_async / { exit_code = 0; output_length = 39762; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/seq.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:24:24 d #34 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/seq.dib --retries 3
00:24:24 d #69 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/env.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/env.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:24:43 d #70 runtime.execute_with_options_async / { exit_code = 0; output_length = 9823; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/env.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:24:43 d #35 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/env.dib --retries 3
00:24:43 d #71 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/python.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/python.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:24:55 d #72 runtime.execute_with_options_async / { exit_code = 0; output_length = 5136; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/python.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:24:55 d #36 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/python.dib --retries 3
00:24:55 d #73 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/typescript.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/typescript.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:25:07 d #74 runtime.execute_with_options_async / { exit_code = 0; output_length = 5184; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/typescript.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:25:07 d #37 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/typescript.dib --retries 3
00:25:07 d #75 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/file_system.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/file_system.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:27:34 d #76 runtime.execute_with_options_async / { exit_code = 0; output_length = 98751; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/file_system.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:27:34 d #38 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/file_system.dib --retries 3
00:27:34 d #77 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/networking.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/networking.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:28:58 d #78 runtime.execute_with_options_async / { exit_code = 0; output_length = 30048; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/networking.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:28:58 d #39 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/networking.dib --retries 3
00:00:00 d #1 writeDibCode / output: Spi / path: async.dib
00:00:00 d #1 writeDibCode / output: Spi / path: runtime.dib
00:00:00 d #1 writeDibCode / output: Spi / path: threading.dib
00:00:00 d #1 writeDibCode / output: Spi / path: testing.dib
00:00:00 d #1 writeDibCode / output: Spi / path: networking.dib
00:00:00 d #1 writeDibCode / output: Spi / path: common.dib
00:00:00 d #1 writeDibCode / output: Spi / path: trace.dib
00:00:00 d #1 writeDibCode / output: Spi / path: crypto.dib
00:00:00 d #2 parseDibCode / output: Spi / file: networking.dib
00:00:00 d #3 parseDibCode / output: Spi / file: crypto.dib
00:00:00 d #4 parseDibCode / output: Spi / file: trace.dib
00:00:00 d #3 parseDibCode / output: Spi / file: common.dib
00:00:00 d #4 parseDibCode / output: Spi / file: runtime.dib
00:00:00 d #3 parseDibCode / output: Spi / file: threading.dib
00:00:00 d #3 parseDibCode / output: Spi / file: async.dib
00:00:00 d #4 parseDibCode / output: Spi / file: testing.dib
00:00:00 d #9 writeDibCode / output: Spi / path: env.dib
00:00:00 d #9 writeDibCode / output: Spi / path: console.dib
00:00:00 d #9 writeDibCode / output: Spi / path: resultm.dib
00:00:00 d #9 writeDibCode / output: Spi / path: base.dib
00:00:00 d #9 writeDibCode / output: Spi / path: parsing.dib
00:00:00 d #9 writeDibCode / output: Spi / path: iter.dib
00:00:00 d #14 parseDibCode / output: Spi / file: console.dib
00:00:00 d #15 parseDibCode / output: Spi / file: resultm.dib
00:00:00 d #16 parseDibCode / output: Spi / file: env.dib
00:00:00 d #18 parseDibCode / output: Spi / file: base.dib
00:00:00 d #19 parseDibCode / output: Spi / file: iter.dib
00:00:00 d #16 parseDibCode / output: Spi / file: parsing.dib
00:00:00 d #20 writeDibCode / output: Spi / path: date_time.dib
00:00:00 d #21 writeDibCode / output: Spi / path: guid.dib
00:00:00 d #22 writeDibCode / output: Spi / path: file_system.dib
00:00:00 d #23 parseDibCode / output: Spi / file: date_time.dib
00:00:00 d #24 parseDibCode / output: Spi / file: guid.dib
00:00:00 d #25 parseDibCode / output: Spi / file: file_system.dib
00:00:00 d #26 writeDibCode / output: Spi / path: mapm.dib
00:00:00 d #26 writeDibCode / output: Spi / path: math.dib
00:00:00 d #27 writeDibCode / output: Spi / path: optionm'.dib
00:00:00 d #27 writeDibCode / output: Spi / path: am'.dib
00:00:00 d #29 parseDibCode / output: Spi / file: am'.dib
00:00:00 d #32 parseDibCode / output: Spi / file: optionm'.dib
00:00:00 d #29 parseDibCode / output: Spi / file: mapm.dib
00:00:00 d #29 parseDibCode / output: Spi / file: math.dib
00:00:00 d #33 writeDibCode / output: Spi / path: listm'.dib
00:00:00 d #34 writeDibCode / output: Spi / path: sm'.dib
00:00:00 d #34 writeDibCode / output: Spir / path: sm'.dib
00:00:00 d #36 parseDibCode / output: Spi / file: listm'.dib
00:00:00 d #37 parseDibCode / output: Spi / file: sm'.dib
00:00:00 d #38 parseDibCode / output: Spir / file: sm'.dib
00:00:00 d #39 writeDibCode / output: Spi / path: reflection.dib
00:00:00 d #40 parseDibCode / output: Spi / file: reflection.dib
00:00:00 d #41 writeDibCode / output: Spi / path: benchmark.dib
00:00:00 d #41 writeDibCode / output: Spi / path: typescript.dib
00:00:00 d #41 writeDibCode / output: Spi / path: python.dib
00:00:00 d #42 writeDibCode / output: Spi / path: stream.dib
00:00:00 d #43 parseDibCode / output: Spi / file: benchmark.dib
00:00:00 d #44 parseDibCode / output: Spi / file: typescript.dib
00:00:00 d #44 parseDibCode / output: Spi / file: python.dib
00:00:00 d #46 parseDibCode / output: Spi / file: stream.dib
00:00:00 d #47 writeDibCode / output: Spi / path: seq.dib
00:00:00 d #48 parseDibCode / output: Spi / file: seq.dib
00:00:00 d #49 writeDibCode / output: Spi / path: util.dib
00:00:00 d #50 writeDibCode / output: Spi / path: platform.dib
00:00:00 d #51 parseDibCode / output: Spi / file: util.dib
00:00:00 d #52 parseDibCode / output: Spi / file: platform.dib
00:00:00 d #53 writeDibCode / output: Spi / path: rust/rust.dib
00:00:00 d #54 parseDibCode / output: Spi / file: rust/rust.dib
00:00:00 d #55 writeDibCode / output: Spi / path: rust/testing.dib
00:00:00 d #56 parseDibCode / output: Spi / file: rust/testing.dib
00:00:00 d #57 writeDibCode / output: Spi / path: rust/near.dib
00:00:00 d #58 parseDibCode / output: Spi / file: rust/near.dib
00:00:00 d #59 writeDibCode / output: Spi / path: rust/near_workspaces.dib
00:00:00 d #60 parseDibCode / output: Spi / file: rust/near_workspaces.dib
00:00:00 d #61 writeDibCode / output: Spi / path: physics.dib
00:00:00 d #62 parseDibCode / output: Spi / file: physics.dib
00:00:00 d #63 writeDibCode / output: Spi / path: leptos/leptos.dib
00:00:00 d #64 parseDibCode / output: Spi / file: leptos/leptos.dib
00:00:00 d #65 writeDibCode / output: Spi / path: lustre.dib
00:00:00 d #66 parseDibCode / output: Spi / file: lustre.dib
00:00:00 d #67 writeDibCode / output: Spi / path: wasm.dib
00:00:00 d #68 parseDibCode / output: Spi / file: wasm.dib
bun install v1.2.5 (013fdddc)
Resolving dependencies
Resolved, downloaded and extracted [2]

Checked 4 installs across 6 packages (no changes) [622.00ms]
spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: C:\home\git\polyglot\target\Builder\near_wallet
   Compiled in 0.29s

  dist\main.js  23.4kb

⚡ Done in 44ms
2025-03-15T11:25:40.118408Z  INFO 🚀 Starting trunk 0.21.8
2025-03-15T11:25:41.183413Z  INFO ⏫ Found an update of trunk: 0.21.8 -> 0.21.9
2025-03-15T11:25:43.027083Z  INFO 📦 starting build
    Finished `release` profile [optimized] target(s) in 0.20s
2025-03-15T11:25:44.473126Z  INFO applying new distribution
2025-03-15T11:25:44.475124Z  INFO ✅ success

# Invoke-Block / $retry: 1/1 / $Location:  / Get-Location: C:\home\git\spiral\lib\spiral\near\wallet / $OnError: Continue / $exitcode: -1 / $Error: 'Cannot find path 'C:\home\git\spiral\lib\spiral\near\wallet\public' because it does not exist.' / $ScriptBlock:
'Copy-Item ./public/* ./dist -Recurse -Force'

$ playwright test

Running 1 test using 1 worker

[1/1] [Desktop Chrome] › test.spec.ts:3:5 › test
  1 passed (11.1s)

To open last HTML report run:

  npx playwright show-report

spiral/lib/spiral/near/wallet/build.ps1 / $targetDir = C:\home\git\polyglot\target\Builder\near_wallet / $projectName: near_wallet / $env:CI:''
00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "build.dib"])) }
00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/scripts/build.dib", "--output-path", "c:/home/git/polyglot/scripts/build.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/scripts/build.dib" --output-path "c:/home/git/polyglot/scripts/build.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
> 
> ── pwsh ────────────────────────────────────────────────────────────────────────
> . ./nbs_header.ps1
> . ./core.ps1
> 
> ── pwsh ────────────────────────────────────────────────────────────────────────
> { pwsh ../apps/builder/build.ps1 } | Invoke-Block
> 
> ── [ 1.61m - stdout ] ──────────────────────────────────────────────────────────
> │ 
> │ ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ │ # DibParser (Polyglot)
> │ 
> │ ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ #r 
> │ 
> @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
> │ dard2.1/FSharp.Control.AsyncSeq.dll"
> │ #r 
> │ 
> @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
> │ 0/System.Reactive.dll"
> │ #r 
> │ 
> @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/
> │ netstandard2.0/System.Reactive.Linq.dll"
> │ #r 
> │ 
> @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll"
> │ #r 
> │ 
> @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP
> │ arsec.dll"
> │ #r 
> │ 
> @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP
> │ arsecCS.dll"
> │ 
> │ ── pwsh 
> ────────────────────────────────────────────────────────────────────────
> │ ls ~/.nuget/packages/argu
> │ 
> │ ── [ 467.61ms - stdout ] 
> ───────────────────────────────────────────────────────
> │ │ 
> │ │     Directory: 
> C:\Users\i574n\.nuget\packages\argu
> │ │ 
> │ │ Mode                 
> LastWriteTime 
> │ Length Name
> │ │ ----                 
> ------------- 
> │ ------ ----
> │ │ d----          2023-05-17  3:38 PM│ 6.1.1
> │ │ d----          2024-03-12  8:22 PM│ 6.1.4
> │ │ d----          2024-01-29  5:12 PM│ 6.1.5
> │ │ d----          2024-03-12  8:20 PM│ 6.2.0
> │ │ d----          2024-02-23  6:50 PM│ 6.2.1
> │ │ d----          2024-03-12  8:15 PM│ 6.2.2
> │ │ d----          2024-05-14  8:20 PM│ 6.2.3
> │ │ d----          2024-06-06  7:37 PM│ 6.2.4
> │ │ d----          2024-12-08 11:22 AM│ 6.2.5
> │ │ 
> │ │ 
> │ 
> │ ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ #if !INTERACTIVE
> │ open Lib
> │ #endif
> │ 
> │ ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ open Common
> │ open FParsec
> │ open SpiralFileSystem.Operators
> │ 
> │ ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ │ ## escapeCell (test)
> │ 
> │ ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ //// test
> │ 
> │ let inline escapeCell input =
> │     input
> │     |> SpiralSm.split "\n"
> │     |> Array.map (function
> │         | line when line |> SpiralSm.starts_with "\\#!" || 
> line |> 
> │ SpiralSm.starts_with "\\#r" ->
> │             System.Text.RegularExpressions.Regex.Replace 
> (line, "^\\\\#", "#")
> │         | line -> line
> │     )
> │     |> SpiralSm.concat "\n"
> │ 
> │ ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ //// test
> │ 
> │ $"a{nl}\\#!magic{nl}b{nl}"
> │ |> escapeCell
> │ |> _assertEqual (
> │     $"a{nl}#!magic{nl}b{nl}"
> │ )
> │ 
> │ ── [ 49.47ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ │ "a
> │ │ #!magic
> │ │ b
> │ │ "
> │ │ 
> │ │ 
> │ 
> │ ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ │ ## magicMarker
> │ 
> │ ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ let magicMarker : Parser<string, unit> = pstring "#!"
> │ 
> │ ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ //// test
> │ 
> │ "#!magic"
> │ |> run magicMarker
> │ |> _assertEqual (
> │     Success ("#!", (), Position ("", 2, 1, 3))
> │ )
> │ 
> │ ── [ 32.63ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ │ Success: "#!"
> │ │ 
> │ │ 
> │ 
> │ ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ //// test
> │ 
> │ "##!magic"
> │ |> run magicMarker
> │ |> _assertEqual (
> │     Failure (
> │         $"Error in Ln: 1 Col: 
> 1{nl}##!magic{nl}^{nl}Expecting: '#!'{nl}",
> │         ParserError (
> │             Position ("", 0, 1, 1),
> │             (),
> │             ErrorMessageList (ExpectedString "#!")
> │         ),
> │         ()
> │     )
> │ )
> │ 
> │ ── [ 40.22ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ │ Failure:
> │ │ Error in Ln: 1 Col: 1
> │ │ ##!magic
> │ │ ^
> │ │ Expecting: '#!'
> │ │ 
> │ │ 
> │ │ 
> │ 
> │ ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ │ ## magicCommand
> │ 
> │ ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ let magicCommand =
> │     magicMarker
> │     >>. manyTill anyChar newline
> │     |>> (System.String.Concat >> SpiralSm.trim)
> │ 
> │ ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ //// test
> │ 
> │ "#!magic
> │ 
> │ a"
> │ |> run magicCommand
> │ |> _assertEqual (
> │     Success ("magic", (), Position ("", 8, 2, 1))
> │ )
> │ 
> │ ── [ 21.34ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ │ Success: "magic"
> │ │ 
> │ │ 
> │ 
> │ ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ //// test
> │ 
> │ " #!magic
> │ 
> │ a"
> │ |> run magicCommand
> │ |> _assertEqual (
> │     Failure (
> │         $"Error in Ln: 1 Col: 1{nl} 
> #!magic{nl}^{nl}Expecting: '#!'{nl}",
> │         ParserError (
> │             Position ("", 0, 1, 1),
> │             (),
> │             ErrorMessageList (ExpectedString "#!")
> │         ),
> │         ()
> │     )
> │ )
> │ 
> │ ── [ 20.85ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ │ Failure:
> │ │ Error in Ln: 1 Col: 1
> │ │  #!magic
> │ │ ^
> │ │ Expecting: '#!'
> │ │ 
> │ │ 
> │ │ 
> │ 
> │ ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ │ ## content
> │ 
> │ ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ let content =
> │     (newline >>. magicMarker) <|> (eof >>. preturn "")
> │     |> attempt
> │     |> lookAhead
> │     |> manyTill anyChar
> │     |>> (System.String.Concat >> SpiralSm.trim)
> │ 
> │ ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ //// test
> │ 
> │ "#!magic
> │ 
> │ 
> │ a
> │ 
> │ 
> │ "
> │ |> run content
> │ |> _assertEqual (
> │     Success ("#!magic
> │ 
> │ 
> │ a", (), Position ("", 14, 7, 1))
> │ )
> │ 
> │ ── [ 20.18ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ │ Success: "#!magic
> │ │ 
> │ │ 
> │ │ a"
> │ │ 
> │ │ 
> │ 
> │ ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ │ ## Output
> │ 
> │ ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ type Output =
> │     | Fs
> │     | Md
> │     | Spi
> │     | Spir
> │ 
> │ ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ │ ## Magic
> │ 
> │ ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ type Magic =
> │     | Fsharp
> │     | Markdown
> │     | Spiral of Output
> │     | Magic of string
> │ 
> │ ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ │ ## kernelOutputs
> │ 
> │ ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ let inline kernelOutputs magic =
> │     match magic with
> │     | Fsharp -> [[ Fs ]]
> │     | Markdown -> [[ Md ]]
> │     | Spiral output -> [[ output ]]
> │     | _ -> [[]]
> │ 
> │ ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ │ ## Block
> │ 
> │ ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ type Block =
> │     {
> │         magic : Magic
> │         content : string
> │     }
> │ 
> │ ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ │ ## block
> │ 
> │ ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ let block =
> │     pipe2
> │         magicCommand
> │         content
> │         (fun magic content ->
> │             let magic, content =
> │                 match magic with
> │                 | "fsharp" -> Fsharp, content
> │                 | "markdown" -> Markdown, content
> │                 | "spiral" ->
> │                     let output = if content |> 
> SpiralSm.contains "//// real\n" 
> │ then Spir else Spi
> │                     let content =
> │                         if output = Spi
> │                         then content
> │                         else
> │                             content
> │                             |> SpiralSm.replace "//// 
> real\n\n" ""
> │                             |> SpiralSm.replace "//// real\n"
> ""
> │                     Spiral output, content
> │                 | magic -> magic |> Magic, content
> │             {
> │                 magic = magic
> │                 content = content
> │             })
> │ 
> │ ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ //// test
> │ 
> │ "#!magic
> │ 
> │ 
> │ a
> │ 
> │ 
> │ "
> │ |> run block
> │ |> _assertEqual (
> │     Success (
> │         { magic = Magic "magic"; content = "a" },
> │         (),
> │         Position ("", 14, 7, 1)
> │     )
> │ )
> │ 
> │ ── [ 39.08ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ │ Success: { magic = Magic "magic"
> │ │   content = "a" }
> │ │ 
> │ │ 
> │ 
> │ ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ │ ## blocks
> │ 
> │ ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ let blocks =
> │     skipMany newline
> │     >>. sepEndBy block (skipMany1 newline)
> │ 
> │ ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ //// test
> │ 
> │ 
> │ "#!magic1
> │ 
> │ a
> │ 
> │ \#!magic2
> │ 
> │ b
> │ 
> │ "
> │ |> escapeCell
> │ |> run blocks
> │ |> _assertEqual (
> │     Success (
> │         [[
> │             { magic = Magic "magic1"; content = "a" }
> │             { magic = Magic "magic2"; content = "b" }
> │         ]],
> │         (),
> │         Position ("", 26, 9, 1)
> │     )
> │ )
> │ 
> │ ── [ 67.31ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ │ Success: [{ magic = Magic "magic1"
> │ │    content = "a" }; { magic = Magic 
> "magic2"
> │ │                       content = "b" }]
> │ │ 
> │ │ 
> │ 
> │ ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ │ ## formatBlock
> │ 
> │ ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ let inline formatBlock output (block : Block) =
> │     match output, block with
> │     | output, { magic = Markdown; content = content } ->
> │         let markdownComment =
> │             match output with
> │             | Spi | Spir -> "/// "
> │             | Fs -> "/// "
> │             | _ -> ""
> │         content
> │         |> SpiralSm.split "\n"
> │         |> Array.map (SpiralSm.trim_end [[||]])
> │         |> Array.filter (SpiralSm.ends_with " (test)" >> not)
> │         |> Array.map (function
> │             | "" -> markdownComment
> │             | line -> 
> System.Text.RegularExpressions.Regex.Replace (line, 
> │ "^\\s*", $"$&{markdownComment}")
> │         )
> │         |> SpiralSm.concat "\n"
> │     | Fs, { magic = Fsharp; content = content } ->
> │         let trimmedContent = content |> SpiralSm.trim
> │         if trimmedContent |> SpiralSm.contains "//// test\n"
> │             || trimmedContent |> SpiralSm.contains "//// 
> ignore\n"
> │         then ""
> │         else
> │             content
> │             |> SpiralSm.split "\n"
> │             |> Array.filter (SpiralSm.trim_start [[||]] >> 
> SpiralSm.starts_with 
> │ "#r" >> not)
> │             |> SpiralSm.concat "\n"
> │     | (Spi | Spir), { magic = Spiral output'; content = 
> content } when output' =
> │ output ->
> │         let trimmedContent = content |> SpiralSm.trim
> │         if trimmedContent |> SpiralSm.contains "//// test\n"
> │             || trimmedContent |> SpiralSm.contains "//// 
> ignore\n"
> │         then ""
> │         else content
> │     | _ -> ""
> │ 
> │ ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ //// test
> │ 
> │ "#!markdown
> │ 
> │ 
> │ a
> │ 
> │     b
> │ 
> │ c
> │ 
> │ 
> │ \#!markdown
> │ 
> │ 
> │ c
> │ 
> │ 
> │ \#!fsharp
> │ 
> │ 
> │ let a = 1"
> │ |> escapeCell
> │ |> run block
> │ |> function
> │     | Success (block, _, _) -> formatBlock Fs block
> │     | Failure (msg, _, _) -> failwith msg
> │ |> _assertEqual "/// a
> │ /// 
> │     /// b
> │ /// 
> │ /// c"
> │ 
> │ ── [ 44.93ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ │ "/// a
> │ │ /// 
> │ │     /// b
> │ │ /// 
> │ │ /// c"
> │ │ 
> │ │ 
> │ 
> │ ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ │ ## formatBlocks
> │ 
> │ ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ let inline formatBlocks output blocks =
> │     blocks
> │     |> List.map (fun block ->
> │         block, formatBlock output block
> │     )
> │     |> List.filter (snd >> (<>) "")
> │     |> fun list ->
> │         (list, (None, [[]]))
> │         ||> List.foldBack (fun (block, content) (lastMagic, 
> acc) ->
> │             let lineBreak =
> │                 if block.magic = Markdown && lastMagic <> 
> Some Markdown && 
> │ lastMagic <> None
> │                 then ""
> │                 else "\n"
> │             Some block.magic, $"{content}{lineBreak}" :: acc
> │         )
> │     |> snd
> │     |> SpiralSm.concat "\n"
> │ 
> │ ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ //// test
> │ 
> │ "#!markdown
> │ 
> │ 
> │ a
> │ 
> │ b
> │ 
> │ 
> │ \#!markdown
> │ 
> │ 
> │ c
> │ 
> │ 
> │ \#!fsharp
> │ 
> │ 
> │ let a = 1
> │ 
> │ \#!markdown
> │ 
> │ d (test)
> │ 
> │ \#!fsharp
> │ 
> │ //// test
> │ 
> │ let a = 2
> │ 
> │ \#!markdown
> │ 
> │ e
> │ 
> │ \#!fsharp
> │ 
> │ let a = 3"
> │ |> escapeCell
> │ |> run blocks
> │ |> function
> │     | Success (blocks, _, _) -> formatBlocks Fs blocks
> │     | Failure (msg, _, _) -> failwith msg
> │ |> _assertEqual "/// a
> │ /// 
> │ /// b
> │ 
> │ /// c
> │ let a = 1
> │ 
> │ /// e
> │ let a = 3
> │ "
> │ 
> │ ── [ 59.55ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ │ "/// a
> │ │ /// 
> │ │ /// b
> │ │ 
> │ │ /// c
> │ │ let a = 1
> │ │ 
> │ │ /// e
> │ │ let a = 3
> │ │ "
> │ │ 
> │ │ 
> │ 
> │ ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ │ ## parse
> │ 
> │ ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ let inline parse output input =
> │     match run blocks input with
> │     | Success (blocks, _, _) ->
> │         let blocks =
> │             blocks
> │             |> List.filter (fun block ->
> │                 block.magic |> kernelOutputs |> List.contains
> output || 
> │ block.magic = Markdown
> │             )
> │ 
> │         match blocks with
> │         | { magic = Markdown; content = content } :: _
> │             when output = Fs
> │             && content |> SpiralSm.starts_with "# "
> │             && content |> SpiralSm.ends_with ")"
> │             ->
> │             let inline indentBlock (block : Block) =
> │                 { block with
> │                     content =
> │                         block.content
> │                         |> SpiralSm.split "\n"
> │                         |> Array.fold
> │                             (fun (lines, isMultiline) line ->
> │                                 let trimmedLine = line |> 
> SpiralSm.trim
> │                                 if trimmedLine = ""
> │                                 then "" :: lines, isMultiline
> │                                 else
> │                                     let inline 
> singleQuoteLine () =
> │                                         trimmedLine |> 
> Seq.sumBy ((=) '"' >> 
> │ System.Convert.ToInt32) = 1
> │                                         && trimmedLine |> 
> SpiralSm.contains 
> │ @"'""'" |> not
> │                                         && trimmedLine |> 
> SpiralSm.ends_with "{"
> │ |> not
> │                                         && trimmedLine |> 
> SpiralSm.ends_with 
> │ "{|" |> not
> │                                         && trimmedLine |> 
> SpiralSm.starts_with 
> │ "}" |> not
> │                                         && trimmedLine |> 
> SpiralSm.starts_with 
> │ "|}" |> not
> │ 
> │                                     match isMultiline, 
> trimmedLine |> 
> │ SpiralSm.split_string [[| $"{q}{q}{q}" |]] with
> │                                     | false, [[| _; _ |]] ->
> │                                         $"    {line}" :: 
> lines, true
> │ 
> │                                     | true, [[| _; _ |]] ->
> │                                         line :: lines, false
> │ 
> │                                     | false, _ when 
> singleQuoteLine () ->
> │                                         $"    {line}" :: 
> lines, true
> │ 
> │                                     | false, _ when line |> 
> SpiralSm.starts_with
> │ "#" && block.magic = Fsharp ->
> │                                         line :: lines, false
> │ 
> │                                     | false, _ ->
> │                                         $"    {line}" :: 
> lines, false
> │ 
> │                                     | true, _ when 
> singleQuoteLine () && line |>
> │ SpiralSm.starts_with "    " ->
> │                                         $"    {line}" :: 
> lines, false
> │ 
> │                                     | true, _ when 
> singleQuoteLine () ->
> │                                         line :: lines, false
> │ 
> │                                     | true, _ ->
> │                                         line :: lines, true
> │                             )
> │                             ([[]], false)
> │                         |> fst
> │                         |> List.rev
> │                         |> SpiralSm.concat "\n"
> │                 }
> │ 
> │             let moduleName, namespaceName =
> │                 System.Text.RegularExpressions.Regex.Match 
> (content, @"# (.*) 
> │ \((.*)\)$")
> │                 |> fun m -> m.Groups.[[1]].Value, 
> m.Groups.[[2]].Value
> │ 
> │             let moduleBlock =
> │                 {
> │                     magic = Fsharp
> │                     content =
> │                         $"#if !INTERACTIVE
> │ namespace {namespaceName}
> │ #endif
> │ 
> │ module {moduleName} ="
> │                 }
> │ 
> │             blocks
> │             |> List.indexed
> │             |> List.fold
> │                 (fun blocks (index, block) ->
> │                     match index with
> │                     | 0 -> blocks
> │                     | 1 -> indentBlock block :: moduleBlock 
> :: blocks
> │                     | _ -> indentBlock block :: blocks
> │                 )
> │                 [[]]
> │             |> List.rev
> │         | _ -> blocks
> │         |> Result.Ok
> │     | Failure (errorMsg, _, _) -> Result.Error errorMsg
> │ 
> │ ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ //// test
> │ 
> │ let example1 =
> │     $"""#!meta
> │ 
> │ 
> {{"kernelInfo":{{"defaultKernelName":"fsharp","items":[[{{"aliases":[[]],"name":
> │ "fsharp"}},{{"aliases":[[]],"name":"fsharp"}}]]}}}}
> │ 
> │ \#!markdown
> │ 
> │ # TestModule (TestNamespace)
> │ 
> │ \#!fsharp
> │ 
> │ \#!import file.dib
> │ 
> │ \#!fsharp
> │ 
> │ \#r "nuget:Expecto"
> │ 
> │ \#!markdown
> │ 
> │ ## ParserLibrary
> │ 
> │ \#!fsharp
> │ 
> │ open System
> │ 
> │ \#!markdown
> │ 
> │ ## x (test)
> │ 
> │ \#!fsharp
> │ 
> │ //// ignore
> │ 
> │ let x = 1
> │ 
> │ \#!spiral
> │ 
> │ //// test
> │ 
> │ inl x = 1i32
> │ 
> │ \#!spiral
> │ 
> │ //// real
> │ 
> │ inl x = 2i32
> │ 
> │ \#!spiral
> │ 
> │ inl x = 3i32
> │ 
> │ \#!markdown
> │ 
> │ ### TextInput
> │ 
> │ \#!fsharp
> │ 
> │ let str1 = "abc
> │ def"
> │ 
> │ let str2 =
> │     "abc\
> │ def"
> │ 
> │ let str3 =
> │     $"1{{
> │         1
> │     }}1"
> │ 
> │ let str4 =
> │     $"1{{({{|
> │         a = 1
> │     |}}).a}}1"
> │ 
> │ let str5 =
> │     "abc \
> │         def"
> │ 
> │ let x =
> │     match '"' with
> │     | '"' -> true
> │     | _ -> false
> │ 
> │ let long1 = {q}{q}{q}a{q}{q}{q}
> │ 
> │ let long2 =
> │     {q}{q}{q}
> │ a
> │ {q}{q}{q}
> │ 
> │ \#!fsharp
> │ 
> │ type Position =
> │     {{
> │ #if INTERACTIVE
> │         line : string
> │ #else
> │         line : int
> │ #endif
> │         column : int
> │     }}"""
> │     |> escapeCell
> │ 
> │ ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ //// test
> │ 
> │ example1
> │ |> parse Fs
> │ |> Result.toOption
> │ |> Option.get
> │ |> (formatBlocks Fs)
> │ |> _assertEqual $"""#if !INTERACTIVE
> │ namespace TestNamespace
> │ #endif
> │ 
> │ module TestModule =
> │ 
> │     /// ## ParserLibrary
> │     open System
> │ 
> │     /// ### TextInput
> │     let str1 = "abc
> │ def"
> │ 
> │     let str2 =
> │         "abc\
> │ def"
> │ 
> │     let str3 =
> │         $"1{{
> │             1
> │         }}1"
> │ 
> │     let str4 =
> │         $"1{{({{|
> │             a = 1
> │         |}}).a}}1"
> │ 
> │     let str5 =
> │         "abc \
> │             def"
> │ 
> │     let x =
> │         match '"' with
> │         | '"' -> true
> │         | _ -> false
> │ 
> │     let long1 = {q}{q}{q}a{q}{q}{q}
> │ 
> │     let long2 =
> │         {q}{q}{q}
> │ a
> │ {q}{q}{q}
> │ 
> │     type Position =
> │         {{
> │ #if INTERACTIVE
> │             line : string
> │ #else
> │             line : int
> │ #endif
> │             column : int
> │         }}
> │ """
> │ 
> │ ── [ 145.80ms - stdout ] 
> ───────────────────────────────────────────────────────
> │ │ "#if !INTERACTIVE
> │ │ namespace TestNamespace
> │ │ #endif
> │ │ 
> │ │ module TestModule =
> │ │ 
> │ │     /// ## ParserLibrary
> │ │     open System
> │ │ 
> │ │     /// ### TextInput
> │ │     let str1 = "abc
> │ │ def"
> │ │ 
> │ │     let str2 =
> │ │         "abc\
> │ │ def"
> │ │ 
> │ │     let str3 =
> │ │         $"1{
> │ │             1
> │ │         }1"
> │ │ 
> │ │     let str4 =
> │ │         $"1{({|
> │ │             a = 1
> │ │         |}).a}1"
> │ │ 
> │ │     let str5 =
> │ │         "abc \
> │ │             def"
> │ │ 
> │ │     let x =
> │ │         match '"' with
> │ │         | '"' -> true
> │ │         | _ -> false
> │ │ 
> │ │     let long1 = """a"""
> │ │ 
> │ │     let long2 =
> │ │         """
> │ │ a
> │ │ """
> │ │ 
> │ │     type Position =
> │ │         {
> │ │ #if INTERACTIVE
> │ │             line : string
> │ │ #else
> │ │             line : int
> │ │ #endif
> │ │             column : int
> │ │         }
> │ │ "
> │ │ 
> │ │ 
> │ 
> │ ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ //// test
> │ 
> │ example1
> │ |> parse Md
> │ |> Result.toOption
> │ |> Option.get
> │ |> (formatBlocks Md)
> │ |> _assertEqual "# TestModule (TestNamespace)
> │ 
> │ ## ParserLibrary
> │ 
> │ ### TextInput
> │ "
> │ 
> │ ── [ 126.76ms - stdout ] 
> ───────────────────────────────────────────────────────
> │ │ "# TestModule (TestNamespace)
> │ │ 
> │ │ ## ParserLibrary
> │ │ 
> │ │ ### TextInput
> │ │ "
> │ │ 
> │ │ 
> │ 
> │ ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ //// test
> │ 
> │ example1
> │ |> parse Spi
> │ |> Result.toOption
> │ |> Option.get
> │ |> (formatBlocks Spi)
> │ |> _assertEqual "/// # TestModule (TestNamespace)
> │ 
> │ /// ## ParserLibrary
> │ inl x = 3i32
> │ 
> │ /// ### TextInput
> │ "
> │ 
> │ ── [ 131.39ms - stdout ] 
> ───────────────────────────────────────────────────────
> │ │ "/// # TestModule (TestNamespace)
> │ │ 
> │ │ /// ## ParserLibrary
> │ │ inl x = 3i32
> │ │ 
> │ │ /// ### TextInput
> │ │ "
> │ │ 
> │ │ 
> │ 
> │ ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ //// test
> │ 
> │ example1
> │ |> parse Spir
> │ |> Result.toOption
> │ |> Option.get
> │ |> (formatBlocks Spir)
> │ |> _assertEqual "/// # TestModule (TestNamespace)
> │ 
> │ /// ## ParserLibrary
> │ inl x = 2i32
> │ 
> │ /// ### TextInput
> │ "
> │ 
> │ ── [ 140.78ms - stdout ] 
> ───────────────────────────────────────────────────────
> │ │ "/// # TestModule (TestNamespace)
> │ │ 
> │ │ /// ## ParserLibrary
> │ │ inl x = 2i32
> │ │ 
> │ │ /// ### TextInput
> │ │ "
> │ │ 
> │ │ 
> │ 
> │ ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ │ ## parseDibCode
> │ 
> │ ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ let inline parseDibCode output file = async {
> │     trace Debug
> │         (fun () -> "parseDibCode")
> │         (fun () -> $"output: {output} / file: {file} / 
> {_locals ()}")
> │     let! input = file |> SpiralFileSystem.read_all_text_async
> │     match parse output input with
> │     | Result.Ok blocks -> return blocks |> formatBlocks 
> output
> │     | Result.Error msg -> return failwith msg
> │ }
> │ 
> │ ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ │ ## writeDibCode
> │ 
> │ ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ let inline writeDibCode output path = async {
> │     trace Debug
> │         (fun () -> "writeDibCode")
> │         (fun () -> $"output: {output} / path: {path} / 
> {_locals ()}")
> │     let! result = parseDibCode output path
> │     let pathDir = path |> System.IO.Path.GetDirectoryName
> │     let fileNameWithoutExt =
> │         match output, path |> 
> System.IO.Path.GetFileNameWithoutExtension with
> │         | Spir, fileNameWithoutExt -> 
> $"{fileNameWithoutExt}_real"
> │         | _, fileNameWithoutExt -> fileNameWithoutExt
> │     let outputPath = pathDir </> 
> $"{fileNameWithoutExt}.{output |> string |> 
> │ SpiralSm.to_lower}"
> │     do! result |> SpiralFileSystem.write_all_text_async 
> outputPath
> │ }
> │ 
> │ ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ │ ## Arguments
> │ 
> │ ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ [[<RequireQualifiedAccess>]]
> │ type Arguments =
> │     | [[<Argu.ArguAttributes.MainCommand; 
> Argu.ArguAttributes.Mandatory>]]
> │         File of file : string * Output
> │ 
> │     interface Argu.IArgParserTemplate with
> │         member s.Usage =
> │             match s with
> │             | File _ -> nameof File
> │ 
> │ ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ //// test
> │ 
> │ Argu.ArgumentParser.Create<Arguments>().PrintUsage ()
> │ 
> │ ── [ 87.10ms - return value ] 
> ──────────────────────────────────────────────────
> │ │ "USAGE: dotnet-repl [--help] <file> 
> <fs|md|spi|spir>
> │ │ 
> │ │ FILE:
> │ │ 
> │ │     <file> <fs|md|spi|spir>
> │ │                           File
> │ │ 
> │ │ OPTIONS:
> │ │ 
> │ │     --help                display this 
> list of options.
> │ │ "
> │ │ 
> │ 
> │ ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ │ ## main
> │ 
> │ ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ let main args =
> │     let argsMap = args |> Runtime.parseArgsMap<Arguments>
> │ 
> │     let files =
> │         argsMap.[[nameof Arguments.File]]
> │         |> List.map (function
> │             | Arguments.File (path, output) -> path, output
> │         )
> │ 
> │     files
> │     |> List.map (fun (path, output) -> path |> writeDibCode 
> output)
> │     |> Async.Parallel
> │     |> Async.Ignore
> │     |> Async.runWithTimeout 30000
> │     |> function
> │         | Some () -> 0
> │         | None -> 1
> │ 
> │ ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ //// test
> │ 
> │ let args =
> │     System.Environment.GetEnvironmentVariable "ARGS"
> │     |> SpiralRuntime.split_args
> │     |> Result.toArray
> │     |> Array.collect id
> │ 
> │ match args with
> │ | [[||]] -> 0
> │ | args -> if main args = 0 then 0 else failwith "main failed"
> │ 
> │ ── [ 145.51ms - return value ] 
> ─────────────────────────────────────────────────
> │ │ <div class="dni-plaintext"><pre>0
> │ │ </pre></div><style>
> │ │ .dni-code-hint {
> │ │     font-style: italic;
> │ │     overflow: hidden;
> │ │     white-space: nowrap;
> │ │ }
> │ │ .dni-treeview {
> │ │     white-space: nowrap;
> │ │ }
> │ │ .dni-treeview td {
> │ │     vertical-align: top;
> │ │     text-align: start;
> │ │ }
> │ │ details.dni-treeview {
> │ │     padding-left: 1em;
> │ │ }
> │ │ table td {
> │ │     text-align: start;
> │ │ }
> │ │ table tr { 
> │ │     vertical-align: top; 
> │ │     margin: 0em 0px;
> │ │ }
> │ │ table tr td pre 
> │ │ { 
> │ │     vertical-align: top !important; 
> │ │     margin: 0em 0px !important;
> │ │ } 
> │ │ table th {
> │ │     text-align: start;
> │ │ }
> │ │ </style>
> │ 
> │ ── [ 146.30ms - stdout ] 
> ───────────────────────────────────────────────────────
> │ │ 00:00:05 d #1 writeDibCode / output: 
> Fs / path: 
> │ Builder.dib
> │ │ 00:00:05 d #2 parseDibCode / output: 
> Fs / file: 
> │ Builder.dib
> │ │ 
> │ 00:00:00 d #1 spiral.main / { args = 
> Array(MutCell(["dib", "--path", "Builder.dib"])) }
> │ 00:00:00 d #2 runtime.execute_with_options / { 
> file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", 
> "c:/home/git/polyglot/apps/builder/Builder.dib", "--output-path", 
> "c:/home/git/polyglot/apps/builder/Builder.dib.ipynb"]; options = { command = 
> dotnet repl --exit-after-run --run 
> "c:/home/git/polyglot/apps/builder/Builder.dib" --output-path 
> "c:/home/git/polyglot/apps/builder/Builder.dib.ipynb"; cancellation_token = 
> None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), 
> ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; 
> working_directory = None } }
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ # Builder (Polyglot)
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
> │ > dard2.1/FSharp.Control.AsyncSeq.dll"
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
> │ > 0/System.Reactive.dll"
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/
> │ > netstandard2.0/System.Reactive.Linq.dll"
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll"
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > #if !INTERACTIVE
> │ > open Lib
> │ > #endif
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > open Common
> │ > open SpiralFileSystem.Operators
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## buildProject
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline buildProject runtime outputDir path = async {
> │ >     let fullPath = path |> System.IO.Path.GetFullPath
> │ >     let fileDir = fullPath |> 
> System.IO.Path.GetDirectoryName
> │ >     let extension = fullPath |> System.IO.Path.GetExtension
> │ > 
> │ >     trace Debug
> │ >         (fun () -> "buildProject")
> │ >         (fun () -> $"fullPath: {fullPath} / {_locals ()}")
> │ > 
> │ >     match extension with
> │ >     | ".fsproj" -> ()
> │ >     | _ -> failwith "Invalid project file"
> │ > 
> │ >     let runtimes =
> │ >         runtime
> │ >         |> Option.map List.singleton
> │ >         |> Option.defaultValue [[ "linux-x64"; "win-x64" ]]
> │ > 
> │ >     let outputDir = outputDir |> Option.defaultValue "dist"
> │ > 
> │ >     return!
> │ >         runtimes
> │ >         |> List.map (fun runtime -> async {
> │ >             let command = $@"dotnet publish ""{path}"" 
> --configuration Release 
> │ > --output ""{outputDir}"" --runtime {runtime}"
> │ >             let! exitCode, _result =
> │ >                 SpiralRuntime.execution_options (fun x ->
> │ >                     { x with
> │ >                         l0 = command
> │ >                         l6 = Some fileDir
> │ >                     }
> │ >                 )
> │ >                 |> SpiralRuntime.execute_with_options_async
> │ >             return exitCode
> │ >         })
> │ >         |> Async.Sequential
> │ >         |> Async.map Array.sum
> │ > }
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## persistCodeProject
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline persistCodeProject packages modules name hash 
> code = async {
> │ >     trace Debug
> │ >         (fun () -> "persistCodeProject")
> │ >         (fun () -> $"packages: {packages} / modules: 
> {modules} / name: {name} / 
> │ > hash: {hash} / code.Length: {code |> String.length} / 
> {_locals ()}")
> │ > 
> │ >     let workspaceRoot = SpiralFileSystem.get_workspace_root
> ()
> │ > 
> │ >     let targetDir =
> │ >         let targetDir = workspaceRoot </> "target/Builder" 
> </> name
> │ >         match hash with
> │ >         | Some hash -> targetDir </> "packages" </> hash
> │ >         | None -> targetDir
> │ >     targetDir |> System.IO.Directory.CreateDirectory |> 
> ignore
> │ > 
> │ >     let filePath = targetDir </> $"{name}.fs" |> 
> System.IO.Path.GetFullPath
> │ >     do! code |> SpiralFileSystem.write_all_text_exists 
> filePath
> │ > 
> │ >     let modulesCode =
> │ >         modules
> │ >         |> List.map (fun path -> $"""<Compile 
> Include="{workspaceRoot </> path}"
> │ > />""")
> │ >         |> SpiralSm.concat "\n        "
> │ > 
> │ >     let fsprojPath = targetDir </> $"{name}.fsproj"
> │ >     let fsprojCode = $"""<Project Sdk="Microsoft.NET.Sdk">
> │ >     <PropertyGroup>
> │ >         <TargetFramework>net9.0</TargetFramework>
> │ >         <LangVersion>preview</LangVersion>
> │ >         <RollForward>Major</RollForward>
> │ >         
> <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
> │ >         
> <ServerGarbageCollection>true</ServerGarbageCollection>
> │ >         
> <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection>
> │ >         <PublishAot>false</PublishAot>
> │ >         <PublishTrimmed>false</PublishTrimmed>
> │ >         <PublishSingleFile>true</PublishSingleFile>
> │ >         <SelfContained>true</SelfContained>
> │ >         <Version>0.0.1-alpha.1</Version>
> │ >         <OutputType>Exe</OutputType>
> │ >     </PropertyGroup>
> │ > 
> │ >     <PropertyGroup 
> Condition="$([[MSBuild]]::IsOSPlatform('FreeBSD'))">
> │ >         <DefineConstants>_FREEBSD</DefineConstants>
> │ >     </PropertyGroup>
> │ > 
> │ >     <PropertyGroup 
> Condition="$([[MSBuild]]::IsOSPlatform('Linux'))">
> │ >         <DefineConstants>_LINUX</DefineConstants>
> │ >     </PropertyGroup>
> │ > 
> │ >     <PropertyGroup 
> Condition="$([[MSBuild]]::IsOSPlatform('OSX'))">
> │ >         <DefineConstants>_OSX</DefineConstants>
> │ >     </PropertyGroup>
> │ > 
> │ >     <PropertyGroup 
> Condition="$([[MSBuild]]::IsOSPlatform('Windows'))">
> │ >         <DefineConstants>_WINDOWS</DefineConstants>
> │ >     </PropertyGroup>
> │ > 
> │ >     <ItemGroup>
> │ >         {modulesCode}
> │ >         <Compile Include="{filePath}" />
> │ >     </ItemGroup>
> │ > 
> │ >     <ItemGroup>
> │ >         <FrameworkReference 
> Include="Microsoft.AspNetCore.App" />
> │ >     </ItemGroup>
> │ > 
> │ >     <Import 
> Project="{workspaceRoot}/.paket/Paket.Restore.targets" />
> │ > </Project>
> │ > """
> │ >     do! fsprojCode |> 
> SpiralFileSystem.write_all_text_exists fsprojPath
> │ > 
> │ >     let paketReferencesPath = targetDir </> 
> "paket.references"
> │ >     let paketReferencesCode =
> │ >         "FSharp.Core" :: packages
> │ >         |> SpiralSm.concat "\n"
> │ >     do! paketReferencesCode |> 
> SpiralFileSystem.write_all_text_exists 
> │ > paketReferencesPath
> │ > 
> │ >     return fsprojPath
> │ > }
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## buildCode
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline buildCode runtime packages modules outputDir 
> name code = async {
> │ >     let! fsprojPath = code |> persistCodeProject packages 
> modules name None
> │ >     let! exitCode = fsprojPath |> buildProject runtime 
> outputDir
> │ >     if exitCode <> 0 then
> │ >         let! fsprojText = fsprojPath |> 
> SpiralFileSystem.read_all_text_async
> │ >         trace Critical
> │ >             (fun () -> "buildCode")
> │ >             (fun () -> $"code: {code |> 
> SpiralSm.ellipsis_end 400} / fsprojText:
> │ > {fsprojText} / {_locals ()}")
> │ >     return exitCode
> │ > }
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > "1 + 1 |> ignore"
> │ > |> buildCode None [[]] [[]] None "test1"
> │ > |> Async.runWithTimeout 180000
> │ > |> _assertEqual (Some 0)
> │ > 
> │ > ── [ 9.97s - stdout ] 
> ──────────────────────────────────────────────────────────
> │ > │ 00:00:02 d #1 persistCodeProject / 
> packages: [] / 
> │ > modules: [] / name: test1 / hash:  / code.Length: 15
> │ > │ 00:00:02 d #2 buildProject / 
> fullPath: 
> │ > c:\home\git\polyglot\target\Builder\test1\test1.fsproj
> │ > │ 00:00:04 d #1 
> runtime.execute_with_options_async / { 
> │ > file_name = dotnet; arguments = US5_0
> │ > │   "publish 
> │ > "c:/home/git\polyglot\target/Builder\test1\test1.fsproj" 
> --configuration Release
> │ > --output "dist" --runtime linux-x64"; options = { command =
> dotnet publish 
> │ > "c:/home/git\polyglot\target/Builder\test1\test1.fsproj" 
> --configuration Release
> │ > --output "dist" --runtime linux-x64; cancellation_token = 
> None; 
> │ > environment_variables = [||]; on_line = None; stdin = None;
> trace = true; 
> │ > working_directory = Some 
> "c:\home\git\polyglot\target\Builder\test1" } }
> │ > │ 00:00:05 v #2 >   Determining 
> projects to restore...
> │ > │ 00:00:06 v #3 >   Paket version 
> │ > 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
> │ > │ 00:00:06 v #4 >   The last full 
> restore is still up to 
> │ > date. Nothing left to do.
> │ > │ 00:00:06 v #5 >   Total time taken:
> 0 milliseconds
> │ > │ 00:00:06 v #6 >   Restored 
> │ > c:\home\git\polyglot\target\Builder\test1\test1.fsproj (in 
> 223 ms).
> │ > │ 00:00:08 v #7 >   test1 -> 
> │ > 
> c:\home\git\polyglot\target\Builder\test1\bin\Release\net9.0\linux-x64\test1.dll
> │ > │ 00:00:09 v #8 >   test1 -> 
> │ > c:\home\git\polyglot\target\Builder\test1\dist\
> │ > │ 00:00:09 d #9 
> runtime.execute_with_options_async / { 
> │ > exit_code = 0; output_length = 429; options = { command = 
> dotnet publish 
> │ > "c:/home/git\polyglot\target/Builder\test1\test1.fsproj" 
> --configuration Release
> │ > --output "dist" --runtime linux-x64; cancellation_token = 
> None; 
> │ > environment_variables = [||]; on_line = None; stdin = None;
> trace = true; 
> │ > working_directory = Some 
> "c:\home\git\polyglot\target\Builder\test1" } }
> │ > │ 00:00:09 d #10 
> runtime.execute_with_options_async / { 
> │ > file_name = dotnet; arguments = US5_0
> │ > │   "publish 
> │ > "c:/home/git\polyglot\target/Builder\test1\test1.fsproj" 
> --configuration Release
> │ > --output "dist" --runtime win-x64"; options = { command = 
> dotnet publish 
> │ > "c:/home/git\polyglot\target/Builder\test1\test1.fsproj" 
> --configuration Release
> │ > --output "dist" --runtime win-x64; cancellation_token = 
> None; 
> │ > environment_variables = [||]; on_line = None; stdin = None;
> trace = true; 
> │ > working_directory = Some 
> "c:\home\git\polyglot\target\Builder\test1" } }
> │ > │ 00:00:10 v #11 >   Determining 
> projects to restore...
> │ > │ 00:00:10 v #12 >   Paket version 
> │ > 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
> │ > │ 00:00:10 v #13 >   The last full 
> restore is still up to 
> │ > date. Nothing left to do.
> │ > │ 00:00:11 v #14 >   Total time 
> taken: 0 milliseconds
> │ > │ 00:00:11 v #15 >   Restored 
> │ > c:\home\git\polyglot\target\Builder\test1\test1.fsproj (in 
> 217 ms).
> │ > │ 00:00:12 v #16 >   test1 -> 
> │ > 
> c:\home\git\polyglot\target\Builder\test1\bin\Release\net9.0\win-x64\test1.dll
> │ > │ 00:00:14 v #17 >   test1 -> 
> │ > c:\home\git\polyglot\target\Builder\test1\dist\
> │ > │ 00:00:14 d #18 
> runtime.execute_with_options_async / { 
> │ > exit_code = 0; output_length = 427; options = { command = 
> dotnet publish 
> │ > "c:/home/git\polyglot\target/Builder\test1\test1.fsproj" 
> --configuration Release
> │ > --output "dist" --runtime win-x64; cancellation_token = 
> None; 
> │ > environment_variables = [||]; on_line = None; stdin = None;
> trace = true; 
> │ > working_directory = Some 
> "c:\home\git\polyglot\target\Builder\test1" } }
> │ > │ Some 0
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > "1 + a |> ignore"
> │ > |> buildCode None [[]] [[]] None "test2"
> │ > |> Async.runWithTimeout 180000
> │ > |> _assertEqual (Some 2)
> │ > 
> │ > ── [ 8.28s - stdout ] 
> ──────────────────────────────────────────────────────────
> │ > │ 00:00:12 d #3 persistCodeProject / 
> packages: [] / 
> │ > modules: [] / name: test2 / hash:  / code.Length: 15
> │ > │ 00:00:12 d #4 buildProject / 
> fullPath: 
> │ > c:\home\git\polyglot\target\Builder\test2\test2.fsproj
> │ > │ 00:00:14 d #19 
> runtime.execute_with_options_async / { 
> │ > file_name = dotnet; arguments = US5_0
> │ > │   "publish 
> │ > "c:/home/git\polyglot\target/Builder\test2\test2.fsproj" 
> --configuration Release
> │ > --output "dist" --runtime linux-x64"; options = { command =
> dotnet publish 
> │ > "c:/home/git\polyglot\target/Builder\test2\test2.fsproj" 
> --configuration Release
> │ > --output "dist" --runtime linux-x64; cancellation_token = 
> None; 
> │ > environment_variables = [||]; on_line = None; stdin = None;
> trace = true; 
> │ > working_directory = Some 
> "c:\home\git\polyglot\target\Builder\test2" } }
> │ > │ 00:00:15 v #20 >   Determining 
> projects to restore...
> │ > │ 00:00:15 v #21 >   Paket version 
> │ > 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
> │ > │ 00:00:15 v #22 >   The last full 
> restore is still up to 
> │ > date. Nothing left to do.
> │ > │ 00:00:15 v #23 >   Total time 
> taken: 0 milliseconds
> │ > │ 00:00:16 v #24 >   Restored 
> │ > c:\home\git\polyglot\target\Builder\test2\test2.fsproj (in 
> 214 ms).
> │ > │ 00:00:19 v #25 > 
> │ > c:\home\git\polyglot\target\Builder\test2\test2.fs(1,5): 
> error FS0039: The value
> │ > or constructor 'a' is not defined. 
> │ > [c:\home\git\polyglot\target\Builder\test2\test2.fsproj]
> │ > │ 00:00:19 d #26 
> runtime.execute_with_options_async / { 
> │ > exit_code = 1; output_length = 451; options = { command = 
> dotnet publish 
> │ > "c:/home/git\polyglot\target/Builder\test2\test2.fsproj" 
> --configuration Release
> │ > --output "dist" --runtime linux-x64; cancellation_token = 
> None; 
> │ > environment_variables = [||]; on_line = None; stdin = None;
> trace = true; 
> │ > working_directory = Some 
> "c:\home\git\polyglot\target\Builder\test2" } }
> │ > │ 00:00:19 d #27 
> runtime.execute_with_options_async / { 
> │ > file_name = dotnet; arguments = US5_0
> │ > │   "publish 
> │ > "c:/home/git\polyglot\target/Builder\test2\test2.fsproj" 
> --configuration Release
> │ > --output "dist" --runtime win-x64"; options = { command = 
> dotnet publish 
> │ > "c:/home/git\polyglot\target/Builder\test2\test2.fsproj" 
> --configuration Release
> │ > --output "dist" --runtime win-x64; cancellation_token = 
> None; 
> │ > environment_variables = [||]; on_line = None; stdin = None;
> trace = true; 
> │ > working_directory = Some 
> "c:\home\git\polyglot\target\Builder\test2" } }
> │ > │ 00:00:19 v #28 >   Determining 
> projects to restore...
> │ > │ 00:00:20 v #29 >   Paket version 
> │ > 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
> │ > │ 00:00:20 v #30 >   The last full 
> restore is still up to 
> │ > date. Nothing left to do.
> │ > │ 00:00:20 v #31 >   Total time 
> taken: 0 milliseconds
> │ > │ 00:00:20 v #32 >   Restored 
> │ > c:\home\git\polyglot\target\Builder\test2\test2.fsproj (in 
> 212 ms).
> │ > │ 00:00:22 v #33 > 
> │ > c:\home\git\polyglot\target\Builder\test2\test2.fs(1,5): 
> error FS0039: The value
> │ > or constructor 'a' is not defined. 
> │ > [c:\home\git\polyglot\target\Builder\test2\test2.fsproj]
> │ > │ 00:00:22 d #34 
> runtime.execute_with_options_async / { 
> │ > exit_code = 1; output_length = 451; options = { command = 
> dotnet publish 
> │ > "c:/home/git\polyglot\target/Builder\test2\test2.fsproj" 
> --configuration Release
> │ > --output "dist" --runtime win-x64; cancellation_token = 
> None; 
> │ > environment_variables = [||]; on_line = None; stdin = None;
> trace = true; 
> │ > working_directory = Some 
> "c:\home\git\polyglot\target\Builder\test2" } }
> │ > │ 00:00:20 c #5 buildCode / code: 1 +
> a |> ignore / 
> │ > fsprojText: <Project Sdk="Microsoft.NET.Sdk">
> │ > │     <PropertyGroup>
> │ > │         
> <TargetFramework>net9.0</TargetFramework>
> │ > │         
> <LangVersion>preview</LangVersion>
> │ > │         <RollForward>Major</RollForward>
> │ > │         
> │ > <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
> │ > │         
> │ > <ServerGarbageCollection>true</ServerGarbageCollection>
> │ > │         
> │ > 
> <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection>
> │ > │         <PublishAot>false</PublishAot>
> │ > │         
> <PublishTrimmed>false</PublishTrimmed>
> │ > │         
> <PublishSingleFile>true</PublishSingleFile>
> │ > │         
> <SelfContained>true</SelfContained>
> │ > │         <Version>0.0.1-alpha.1</Version>
> │ > │         <OutputType>Exe</OutputType>
> │ > │     </PropertyGroup>
> │ > │ 
> │ > │     <PropertyGroup 
> │ > Condition="$([MSBuild]::IsOSPlatform('FreeBSD'))">
> │ > │         
> <DefineConstants>_FREEBSD</DefineConstants>
> │ > │     </PropertyGroup>
> │ > │ 
> │ > │     <PropertyGroup 
> │ > Condition="$([MSBuild]::IsOSPlatform('Linux'))">
> │ > │         
> <DefineConstants>_LINUX</DefineConstants>
> │ > │     </PropertyGroup>
> │ > │ 
> │ > │     <PropertyGroup 
> │ > Condition="$([MSBuild]::IsOSPlatform('OSX'))">
> │ > │         
> <DefineConstants>_OSX</DefineConstants>
> │ > │     </PropertyGroup>
> │ > │ 
> │ > │     <PropertyGroup 
> │ > Condition="$([MSBuild]::IsOSPlatform('Windows'))">
> │ > │         
> <DefineConstants>_WINDOWS</DefineConstants>
> │ > │     </PropertyGroup>
> │ > │ 
> │ > │     <ItemGroup>
> │ > │         
> │ > │         <Compile 
> │ > 
> Include="c:\home\git\polyglot\target\Builder\test2\test2.fs" />
> │ > │     </ItemGroup>
> │ > │ 
> │ > │     <ItemGroup>
> │ > │         <FrameworkReference 
> │ > Include="Microsoft.AspNetCore.App" />
> │ > │     </ItemGroup>
> │ > │ 
> │ > │     <Import 
> │ > Project="c:/home/git\polyglot/.paket/Paket.Restore.targets"
> />
> │ > │ </Project>
> │ > │ 
> │ > │ Some 2
> │ > │ 
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## readFile
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline readFile path = async {
> │ >     let! code = path |> 
> SpiralFileSystem.read_all_text_async
> │ > 
> │ >     let code = System.Text.RegularExpressions.Regex.Replace
> (
> │ >         code,
> │ >         @"( *)(let\s+main\s+\w+\s*=)",
> │ >         fun m -> m.Groups.[[1]].Value + 
> "[[<EntryPoint>]]\n" + 
> │ > m.Groups.[[1]].Value + m.Groups.[[2]].Value
> │ >     )
> │ > 
> │ >     let codeTrim = code |> SpiralSm.trim_end [[||]]
> │ >     return
> │ >         if codeTrim |> SpiralSm.ends_with "\n()"
> │ >         then codeTrim |> SpiralSm.slice 0 ((codeTrim |> 
> String.length) - 3)
> │ >         else code
> │ > }
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## buildFile
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline buildFile runtime packages modules path = async 
> {
> │ >     let fullPath = path |> System.IO.Path.GetFullPath
> │ >     let dir = fullPath |> System.IO.Path.GetDirectoryName
> │ >     let name = fullPath |> 
> System.IO.Path.GetFileNameWithoutExtension
> │ >     let! code = fullPath |> readFile
> │ >     return! code |> buildCode runtime packages modules (dir
> </> "dist" |> Some) 
> │ > name
> │ > }
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## persistFile
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline persistFile packages modules path = async {
> │ >     let fullPath = path |> System.IO.Path.GetFullPath
> │ >     let name = fullPath |> 
> System.IO.Path.GetFileNameWithoutExtension
> │ >     let! code = fullPath |> readFile
> │ >     return! code |> persistCodeProject packages modules 
> name None
> │ > }
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## Arguments
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > [[<RequireQualifiedAccess>]]
> │ > type Arguments =
> │ >     | [[<Argu.ArguAttributes.MainCommand; 
> Argu.ArguAttributes.ExactlyOnce>]] 
> │ > Path of path : string
> │ >     | [[<Argu.ArguAttributes.Unique>]] Packages of packages
> : string list
> │ >     | [[<Argu.ArguAttributes.Unique>]] Modules of modules :
> string list
> │ >     | [[<Argu.ArguAttributes.Unique>]] Runtime of runtime :
> string
> │ >     | [[<Argu.ArguAttributes.Unique>]] Persist_Only
> │ > 
> │ >     interface Argu.IArgParserTemplate with
> │ >         member s.Usage =
> │ >             match s with
> │ >             | Path _ -> nameof Path
> │ >             | Packages _ -> nameof Packages
> │ >             | Modules _ -> nameof Modules
> │ >             | Runtime _ -> nameof Runtime
> │ >             | Persist_Only -> nameof Persist_Only
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > Argu.ArgumentParser.Create<Arguments>().PrintUsage ()
> │ > 
> │ > ── [ 109.83ms - return value ] 
> ─────────────────────────────────────────────────
> │ > │ "USAGE: dotnet-repl [--help] [--packages
> [<packages>...]]
> │ > │                    [--modules 
> [<modules>...]] [--runtime 
> │ > <runtime>]
> │ > │                    [--persist-only] 
> <path>
> │ > │ 
> │ > │ PATH:
> │ > │ 
> │ > │     <path>                Path
> │ > │ 
> │ > │ OPTIONS:
> │ > │ 
> │ > │     --packages [<packages>...]
> │ > │                           Packages
> │ > │     --modules [<modules>...]
> │ > │                           Modules
> │ > │     --runtime <runtime>   Runtime
> │ > │     --persist-only        Persist_Only
> │ > │     --help                display this 
> list of options.
> │ > │ "
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## main
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let main args =
> │ >     let argsMap = args |> Runtime.parseArgsMap<Arguments>
> │ > 
> │ >     let path =
> │ >         match argsMap.[[nameof Arguments.Path]] with
> │ >         | [[ Arguments.Path path ]] -> Some path
> │ >         | _ -> None
> │ >         |> Option.get
> │ > 
> │ >     let packages =
> │ >         match argsMap |> Map.tryFind (nameof 
> Arguments.Packages) with
> │ >         | Some [[ Arguments.Packages packages ]] -> 
> packages
> │ >         | _ -> [[]]
> │ > 
> │ >     let modules =
> │ >         match argsMap |> Map.tryFind (nameof 
> Arguments.Modules) with
> │ >         | Some [[ Arguments.Modules modules ]] -> modules
> │ >         | _ -> [[]]
> │ > 
> │ >     let runtime =
> │ >         match argsMap |> Map.tryFind (nameof 
> Arguments.Runtime) with
> │ >         | Some [[ Arguments.Runtime runtime ]] -> Some 
> runtime
> │ >         | _ -> None
> │ > 
> │ >     let persistOnly = argsMap |> Map.containsKey (nameof 
> Arguments.Persist_Only)
> │ > 
> │ >     if persistOnly
> │ >     then path |> persistFile packages modules |> Async.map 
> (fun _ -> 0)
> │ >     else path |> buildFile runtime packages modules
> │ >     |> Async.runWithTimeout (60001 * 60 * 24)
> │ >     |> function
> │ >         | Some exitCode -> exitCode
> │ >         | None -> 1
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > let args =
> │ >     System.Environment.GetEnvironmentVariable "ARGS"
> │ >     |> SpiralRuntime.split_args
> │ >     |> Result.toArray
> │ >     |> Array.collect id
> │ > 
> │ > match args with
> │ > | [[||]] -> 0
> │ > | args -> if main args = 0 then 0 else failwith "main 
> failed"
> │ > 
> │ > ── [ 32.07s - return value ] 
> ───────────────────────────────────────────────────
> │ > │ <div class="dni-plaintext"><pre>0
> │ > │ </pre></div><style>
> │ > │ .dni-code-hint {
> │ > │     font-style: italic;
> │ > │     overflow: hidden;
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview {
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview td {
> │ > │     vertical-align: top;
> │ > │     text-align: start;
> │ > │ }
> │ > │ details.dni-treeview {
> │ > │     padding-left: 1em;
> │ > │ }
> │ > │ table td {
> │ > │     text-align: start;
> │ > │ }
> │ > │ table tr { 
> │ > │     vertical-align: top; 
> │ > │     margin: 0em 0px;
> │ > │ }
> │ > │ table tr td pre 
> │ > │ { 
> │ > │     vertical-align: top !important; 
> │ > │     margin: 0em 0px !important;
> │ > │ } 
> │ > │ table th {
> │ > │     text-align: start;
> │ > │ }
> │ > │ </style>
> │ > 
> │ > ── [ 32.07s - stdout ] 
> ─────────────────────────────────────────────────────────
> │ > │ 00:00:21 d #6 persistCodeProject / 
> packages: [Argu; 
> │ > FSharp.Control.AsyncSeq; System.Reactive.Linq] / modules: 
> │ > [deps/spiral/lib/spiral/common.fsx; 
> deps/spiral/lib/spiral/sm.fsx; 
> │ > deps/spiral/lib/spiral/crypto.fsx; ... ] / name: Builder / 
> hash:  / code.Length:
> │ > 8451
> │ > │ 00:00:21 d #7 buildProject / 
> fullPath: 
> │ > c:\home\git\polyglot\target\Builder\Builder\Builder.fsproj
> │ > │ 00:00:23 d #35 
> runtime.execute_with_options_async / { 
> │ > file_name = dotnet; arguments = US5_0
> │ > │   "publish 
> │ > 
> "c:/home/git\polyglot\target/Builder\Builder\Builder.fsproj" --configuration 
> │ > Release --output "C:\home\git\polyglot\apps\builder\dist" 
> --runtime linux-x64"; 
> │ > options = { command = dotnet publish 
> │ > 
> "c:/home/git\polyglot\target/Builder\Builder\Builder.fsproj" --configuration 
> │ > Release --output "C:\home\git\polyglot\apps\builder\dist" 
> --runtime linux-x64; 
> │ > cancellation_token = None; environment_variables = [||]; 
> on_line = None; stdin =
> │ > None; trace = true; working_directory = Some 
> │ > "c:\home\git\polyglot\target\Builder\Builder" } }
> │ > │ 00:00:24 v #36 >   Determining 
> projects to restore...
> │ > │ 00:00:24 v #37 >   Paket version 
> │ > 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
> │ > │ 00:00:24 v #38 >   The last full 
> restore is still up to 
> │ > date. Nothing left to do.
> │ > │ 00:00:24 v #39 >   Total time 
> taken: 0 milliseconds
> │ > │ 00:00:25 v #40 >   Restored 
> │ > c:\home\git\polyglot\target\Builder\Builder\Builder.fsproj 
> (in 274 ms).
> │ > │ 00:00:38 v #41 >   Builder -> 
> │ > 
> c:\home\git\polyglot\target\Builder\Builder\bin\Release\net9.0\linux-x64\Builder
> │ > .dll
> │ > │ 00:00:39 v #42 >   Builder -> 
> │ > C:\home\git\polyglot\apps\builder\dist\
> │ > │ 00:00:39 d #43 
> runtime.execute_with_options_async / { 
> │ > exit_code = 0; output_length = 433; options = { command = 
> dotnet publish 
> │ > 
> "c:/home/git\polyglot\target/Builder\Builder\Builder.fsproj" --configuration 
> │ > Release --output "C:\home\git\polyglot\apps\builder\dist" 
> --runtime linux-x64; 
> │ > cancellation_token = None; environment_variables = [||]; 
> on_line = None; stdin =
> │ > None; trace = true; working_directory = Some 
> │ > "c:\home\git\polyglot\target\Builder\Builder" } }
> │ > │ 00:00:39 d #44 
> runtime.execute_with_options_async / { 
> │ > file_name = dotnet; arguments = US5_0
> │ > │   "publish 
> │ > 
> "c:/home/git\polyglot\target/Builder\Builder\Builder.fsproj" --configuration 
> │ > Release --output "C:\home\git\polyglot\apps\builder\dist" 
> --runtime win-x64"; 
> │ > options = { command = dotnet publish 
> │ > 
> "c:/home/git\polyglot\target/Builder\Builder\Builder.fsproj" --configuration 
> │ > Release --output "C:\home\git\polyglot\apps\builder\dist" 
> --runtime win-x64; 
> │ > cancellation_token = None; environment_variables = [||]; 
> on_line = None; stdin =
> │ > None; trace = true; working_directory = Some 
> │ > "c:\home\git\polyglot\target\Builder\Builder" } }
> │ > │ 00:00:40 v #45 >   Determining 
> projects to restore...
> │ > │ 00:00:40 v #46 >   Paket version 
> │ > 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
> │ > │ 00:00:41 v #47 >   The last full 
> restore is still up to 
> │ > date. Nothing left to do.
> │ > │ 00:00:41 v #48 >   Total time 
> taken: 0 milliseconds
> │ > │ 00:00:41 v #49 >   Restored 
> │ > c:\home\git\polyglot\target\Builder\Builder\Builder.fsproj 
> (in 244 ms).
> │ > │ 00:00:54 v #50 >   Builder -> 
> │ > 
> c:\home\git\polyglot\target\Builder\Builder\bin\Release\net9.0\win-x64\Builder.d
> │ > ll
> │ > │ 00:00:55 v #51 >   Builder -> 
> │ > C:\home\git\polyglot\apps\builder\dist\
> │ > │ 00:00:55 d #52 
> runtime.execute_with_options_async / { 
> │ > exit_code = 0; output_length = 431; options = { command = 
> dotnet publish 
> │ > 
> "c:/home/git\polyglot\target/Builder\Builder\Builder.fsproj" --configuration 
> │ > Release --output "C:\home\git\polyglot\apps\builder\dist" 
> --runtime win-x64; 
> │ > cancellation_token = None; environment_variables = [||]; 
> on_line = None; stdin =
> │ > None; trace = true; working_directory = Some 
> │ > "c:\home\git\polyglot\target\Builder\Builder" } }
> │ > │ 
> │ 00:01:10 v #3 runtime.execute_with_options / result / {
> exit_code = 0; std_trace_length = 28638 }
> │ 00:01:10 d #4 runtime.execute_with_options / { 
> file_name = jupyter; arguments = ["nbconvert", 
> "c:/home/git/polyglot/apps/builder/Builder.dib.ipynb", "--to", "html", 
> "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert 
> "c:/home/git/polyglot/apps/builder/Builder.dib.ipynb" --to html 
> --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = 
> Array(MutCell([])); on_line = None; stdin = None; trace = true; 
> working_directory = None } }
> │ 00:01:11 v #5 ! [NbConvertApp] Converting notebook 
> c:/home/git/polyglot/apps/builder/Builder.dib.ipynb to html
> │ 00:01:11 v #6 ! 
> C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.
> py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a 
> hard error in future nbformat versions. You may want to use `normalize()` on 
> your notebooks before validations (available since nbformat 5.1.4). Previous 
> versions of nbformat are fixing this issue transparently, and will stop doing so
> in the future.
> │ 00:01:11 v #7 !   validate(nb)
> │ 00:01:12 v #8 ! 
> C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\
> highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python
> 3
> │ 00:01:12 v #9 !   return _pygments_highlight(
> │ 00:01:12 v #10 ! [NbConvertApp] Writing 337357 bytes to
> c:\home\git\polyglot\apps\builder\Builder.dib.html
> │ 00:01:13 v #11 runtime.execute_with_options / result / 
> { exit_code = 0; std_trace_length = 860 }
> │ 00:01:13 d #12 spiral.run / dib / jupyter nbconvert / {
> exit_code = 0; jupyter_result_length = 860 }
> │ 00:01:13 d #13 runtime.execute_with_options / { 
> file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 
> 'c:/home/git/polyglot/apps/builder/Builder.dib.html'; (Get-Content $path -Raw) 
> -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } 
> | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 
> 'c:/home/git/polyglot/apps/builder/Builder.dib.html'; (Get-Content $path -Raw) 
> -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | 
> Set-Content $path"; cancellation_token = None; environment_variables = 
> Array(MutCell([])); on_line = None; stdin = None; trace = true; 
> working_directory = None } }
> │ 00:01:13 v #14 runtime.execute_with_options / result / 
> { exit_code = 0; std_trace_length = 0 }
> │ 00:01:13 d #15 spiral.run / dib / html cell ids / { 
> exit_code = 0; pwsh_replace_html_result_length = 0 }
> │ 00:01:13 d #16 spiral.run / dib / { exit_code = 0; 
> result_length = 29557 }
> │ polyglot/apps/builder/build.ps1 / $env:CI:''
> │ 
> 
> ── pwsh ────────────────────────────────────────────────────────────────────────
> { pwsh ../deps/spiral/apps/spiral/build.ps1 -fast 1 -SkipFsx 1 } | Invoke-Block
> 
> ── [ 1.20m - stdout ] ──────────────────────────────────────────────────────────
> │ spiral/apps/spiral/build.ps1 / ScriptDir: 
> C:\home\git\polyglot\deps\spiral\apps\spiral / ResolvedScriptDir: 
> C:\home\git\spiral\apps\spiral
> │ 00:00:00 d #1 persistCodeProject / packages: 
> [Fable.Core] / modules: [deps/spiral/lib/spiral/common.fsx; 
> deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: 
> spiral / hash:  / code.Length: 1618887
> │ spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: 
> C:\home\git\polyglot\target\Builder\spiral
> │ polyglot/scripts/core.ps1/ResolveLink #4 / Path: 
> C:\home\git\polyglot\deps\spiral\deps\polyglot\deps\spiral\lib\spiral/../../deps
> /polyglot / parent_target:  / path_target: C:\home\git\polyglot / parent: 
> C:\home\git\polyglot\deps\spiral\deps\polyglot\deps\spiral\lib\spiral\..\..\deps
> / End: polyglot
> │ spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: 
> C:\home\git\polyglot\target\Builder\spiral / ProjectName: spiral / Language: rs 
> / Runtime:  / root: C:\home\git\polyglot
> │ Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha)
> │ 
> │ Thanks to the contributor! @kirill-gerasimenko
> │ Stand with Ukraine! https://standwithukraine.com.ua/
> │ 
> │ Parsing target\Builder\spiral\spiral.fsproj...
> │ Retrieving project options from cache, in case of issues run 
> `dotnet fable clean` or try `--noCache` option.
> │ Project and references (14 source files) parsed in 166ms
> │ 
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this 
> assembly. Original error: The exception has been reported. This internal 
> exception should now be caught at an error recovery point on the stack. Original
> message: The type 'MetadataUpdateHandlerAttribute' is required here and is 
> unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping 
> this assembly. Original error: The exception has been reported. This internal 
> exception should now be caught at an error recovery point on the stack. Original
> message: The type 'MetadataUpdateHandlerAttribute' is required here and is 
> unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable 
> plugins, skipping this assembly. Original error: The exception has been 
> reported. This internal exception should now be caught at an error recovery 
> point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' 
> is required here and is unavailable. You must add a reference to assembly 
> 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, 
> PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, 
> skipping this assembly. Original error: The exception has been reported. This 
> internal exception should now be caught at an error recovery point on the stack.
> Original message: The type 'MetadataUpdateHandlerAttribute' is required here and
> is unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this 
> assembly. Original error: The exception has been reported. This internal 
> exception should now be caught at an error recovery point on the stack. Original
> message: The type 'MetadataUpdateHandlerAttribute' is required here and is 
> unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping 
> this assembly. Original error: The exception has been reported. This internal 
> exception should now be caught at an error recovery point on the stack. Original
> message: The type 'MetadataUpdateHandlerAttribute' is required here and is 
> unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, 
> skipping this assembly. Original error: The exception has been reported. This 
> internal exception should now be caught at an error recovery point on the stack.
> Original message: The type 'MetadataUpdateHandlerAttribute' is required here and
> is unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, 
> skipping this assembly. Original error: The exception has been reported. This 
> internal exception should now be caught at an error recovery point on the stack.
> Original message: The type 'MetadataUpdateHandlerAttribute' is required here and
> is unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable 
> plugins, skipping this assembly. Original error: The exception has been 
> reported. This internal exception should now be caught at an error recovery 
> point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' 
> is required here and is unavailable. You must add a reference to assembly 
> 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, 
> PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping
> this assembly. Original error: The exception has been reported. This internal 
> exception should now be caught at an error recovery point on the stack. Original
> message: The type 'MetadataUpdateHandlerAttribute' is required here and is 
> unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ 
> │ Started Fable compilation...
> │ 
> │ Fable compilation finished in 16528ms
> │ 
> │ .\deps\spiral\lib\spiral\common.fsx(2193,0): (2193,2) warning
> FABLE: For Rust, support for F# static and module do bindings is disabled by 
> default. It can be enabled with the 'static_do_bindings' feature. Use at your 
> own risk!
> │ .\deps\spiral\lib\spiral\sm.fsx(560,0): (560,2) warning 
> FABLE: For Rust, support for F# static and module do bindings is disabled by 
> default. It can be enabled with the 'static_do_bindings' feature. Use at your 
> own risk!
> │ .\deps\spiral\lib\spiral\async_.fsx(250,0): (250,2) warning 
> FABLE: For Rust, support for F# static and module do bindings is disabled by 
> default. It can be enabled with the 'static_do_bindings' feature. Use at your 
> own risk!
> │ .\deps\spiral\lib\spiral\threading.fsx(139,0): (139,2) 
> warning FABLE: For Rust, support for F# static and module do bindings is 
> disabled by default. It can be enabled with the 'static_do_bindings' feature. 
> Use at your own risk!
> │ .\deps\spiral\lib\spiral\crypto.fsx(2420,0): (2420,2) warning
> FABLE: For Rust, support for F# static and module do bindings is disabled by 
> default. It can be enabled with the 'static_do_bindings' feature. Use at your 
> own risk!
> │ .\deps\spiral\lib\spiral\date_time.fsx(2546,0): (2546,2) 
> warning FABLE: For Rust, support for F# static and module do bindings is 
> disabled by default. It can be enabled with the 'static_do_bindings' feature. 
> Use at your own risk!
> │ .\deps\spiral\lib\spiral\platform.fsx(121,0): (121,2) warning
> FABLE: For Rust, support for F# static and module do bindings is disabled by 
> default. It can be enabled with the 'static_do_bindings' feature. Use at your 
> own risk!
> │ .\deps\spiral\lib\spiral\networking.fsx(5011,0): (5011,2) 
> warning FABLE: For Rust, support for F# static and module do bindings is 
> disabled by default. It can be enabled with the 'static_do_bindings' feature. 
> Use at your own risk!
> │ .\deps\spiral\lib\spiral\trace.fsx(2226,0): (2226,2) warning 
> FABLE: For Rust, support for F# static and module do bindings is disabled by 
> default. It can be enabled with the 'static_do_bindings' feature. Use at your 
> own risk!
> │ .\deps\spiral\lib\spiral\runtime.fsx(7234,0): (7234,2) 
> warning FABLE: For Rust, support for F# static and module do bindings is 
> disabled by default. It can be enabled with the 'static_do_bindings' feature. 
> Use at your own risk!
> │ .\deps\spiral\lib\spiral\file_system.fsx(18760,0): (18760,2) 
> warning FABLE: For Rust, support for F# static and module do bindings is 
> disabled by default. It can be enabled with the 'static_do_bindings' feature. 
> Use at your own risk!
> │ spiral/apps/spiral/build.ps1 / path: 
> C:\home\git\polyglot\target\Builder\spiral/target/rs/spiral.rs
> │ spiral/apps/spiral/build.ps1 / $projectName: spiral / 
> $env:CI:''
> │    Compiling fable_library_rust v0.1.0 
> (C:\home\git\spiral\deps\polyglot\lib\rust\fable\fable_modules\fable-library-rus
> t)
> │    Compiling spiral v0.0.1 
> (C:\home\git\spiral\apps\spiral)
> │ error: failed to remove file 
> `C:\home\git\spiral\workspace\target\release\spiral.exe`
> │ 
> │ Caused by:
> │   Access is denied. (os error 5)
> │ 
> │ # Invoke-Block / $retry: 1/1 / $Location:  / Get-Location: 
> C:\home\git\spiral\apps\spiral / $OnError: Continue / $exitcode: 101 / $Error: 
> '' / $ScriptBlock:
> │ 'cargo build --release'
> │ 
> │ 
> 
> ── pwsh ────────────────────────────────────────────────────────────────────────
> { pwsh ../apps/parser/build.ps1 } | Invoke-Block
> 
> ── [ 1.90m - stdout ] ──────────────────────────────────────────────────────────
> │ 00:00:00 d #1 spiral.main / { args = 
> Array(MutCell(["dib", "--path", "DibParser.dib"])) }
> │ 00:00:00 d #2 runtime.execute_with_options / { 
> file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", 
> "c:/home/git/polyglot/apps/parser/DibParser.dib", "--output-path", 
> "c:/home/git/polyglot/apps/parser/DibParser.dib.ipynb"]; options = { command = 
> dotnet repl --exit-after-run --run 
> "c:/home/git/polyglot/apps/parser/DibParser.dib" --output-path 
> "c:/home/git/polyglot/apps/parser/DibParser.dib.ipynb"; cancellation_token = 
> None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), 
> ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; 
> working_directory = None } }
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ # DibParser (Polyglot)
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
> │ > dard2.1/FSharp.Control.AsyncSeq.dll"
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
> │ > 0/System.Reactive.dll"
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/
> │ > netstandard2.0/System.Reactive.Linq.dll"
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll"
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP
> │ > arsec.dll"
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP
> │ > arsecCS.dll"
> │ > 
> │ > ── pwsh 
> ────────────────────────────────────────────────────────────────────────
> │ > ls ~/.nuget/packages/argu
> │ > 
> │ > ── [ 473.21ms - stdout ] 
> ───────────────────────────────────────────────────────
> │ > │ 
> │ > │     Directory: 
> C:\Users\i574n\.nuget\packages\argu
> │ > │ 
> │ > │ Mode                 
> LastWriteTime 
> │ > Length Name
> │ > │ ----                 
> ------------- 
> │ > ------ ----
> │ > │ d----          2023-05-17  3:38 PM│ > 6.1.1
> │ > │ d----          2024-03-12  8:22 PM│ > 6.1.4
> │ > │ d----          2024-01-29  5:12 PM│ > 6.1.5
> │ > │ d----          2024-03-12  8:20 PM│ > 6.2.0
> │ > │ d----          2024-02-23  6:50 PM│ > 6.2.1
> │ > │ d----          2024-03-12  8:15 PM│ > 6.2.2
> │ > │ d----          2024-05-14  8:20 PM│ > 6.2.3
> │ > │ d----          2024-06-06  7:37 PM│ > 6.2.4
> │ > │ d----          2024-12-08 11:22 AM│ > 6.2.5
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > #if !INTERACTIVE
> │ > open Lib
> │ > #endif
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > open Common
> │ > open FParsec
> │ > open SpiralFileSystem.Operators
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## escapeCell (test)
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > let inline escapeCell input =
> │ >     input
> │ >     |> SpiralSm.split "\n"
> │ >     |> Array.map (function
> │ >         | line when line |> SpiralSm.starts_with "\\#!" || 
> line |> 
> │ > SpiralSm.starts_with "\\#r" ->
> │ >             System.Text.RegularExpressions.Regex.Replace 
> (line, "^\\\\#", "#")
> │ >         | line -> line
> │ >     )
> │ >     |> SpiralSm.concat "\n"
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > $"a{nl}\\#!magic{nl}b{nl}"
> │ > |> escapeCell
> │ > |> _assertEqual (
> │ >     $"a{nl}#!magic{nl}b{nl}"
> │ > )
> │ > 
> │ > ── [ 52.26ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ "a
> │ > │ #!magic
> │ > │ b
> │ > │ "
> │ > │ 
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## magicMarker
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let magicMarker : Parser<string, unit> = pstring "#!"
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > "#!magic"
> │ > |> run magicMarker
> │ > |> _assertEqual (
> │ >     Success ("#!", (), Position ("", 2, 1, 3))
> │ > )
> │ > 
> │ > ── [ 36.22ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ Success: "#!"
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > "##!magic"
> │ > |> run magicMarker
> │ > |> _assertEqual (
> │ >     Failure (
> │ >         $"Error in Ln: 1 Col: 
> 1{nl}##!magic{nl}^{nl}Expecting: '#!'{nl}",
> │ >         ParserError (
> │ >             Position ("", 0, 1, 1),
> │ >             (),
> │ >             ErrorMessageList (ExpectedString "#!")
> │ >         ),
> │ >         ()
> │ >     )
> │ > )
> │ > 
> │ > ── [ 41.83ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ Failure:
> │ > │ Error in Ln: 1 Col: 1
> │ > │ ##!magic
> │ > │ ^
> │ > │ Expecting: '#!'
> │ > │ 
> │ > │ 
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## magicCommand
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let magicCommand =
> │ >     magicMarker
> │ >     >>. manyTill anyChar newline
> │ >     |>> (System.String.Concat >> SpiralSm.trim)
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > "#!magic
> │ > 
> │ > a"
> │ > |> run magicCommand
> │ > |> _assertEqual (
> │ >     Success ("magic", (), Position ("", 8, 2, 1))
> │ > )
> │ > 
> │ > ── [ 21.37ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ Success: "magic"
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > " #!magic
> │ > 
> │ > a"
> │ > |> run magicCommand
> │ > |> _assertEqual (
> │ >     Failure (
> │ >         $"Error in Ln: 1 Col: 1{nl} 
> #!magic{nl}^{nl}Expecting: '#!'{nl}",
> │ >         ParserError (
> │ >             Position ("", 0, 1, 1),
> │ >             (),
> │ >             ErrorMessageList (ExpectedString "#!")
> │ >         ),
> │ >         ()
> │ >     )
> │ > )
> │ > 
> │ > ── [ 21.97ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ Failure:
> │ > │ Error in Ln: 1 Col: 1
> │ > │  #!magic
> │ > │ ^
> │ > │ Expecting: '#!'
> │ > │ 
> │ > │ 
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## content
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let content =
> │ >     (newline >>. magicMarker) <|> (eof >>. preturn "")
> │ >     |> attempt
> │ >     |> lookAhead
> │ >     |> manyTill anyChar
> │ >     |>> (System.String.Concat >> SpiralSm.trim)
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > "#!magic
> │ > 
> │ > 
> │ > a
> │ > 
> │ > 
> │ > "
> │ > |> run content
> │ > |> _assertEqual (
> │ >     Success ("#!magic
> │ > 
> │ > 
> │ > a", (), Position ("", 14, 7, 1))
> │ > )
> │ > 
> │ > ── [ 53.35ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ Success: "#!magic
> │ > │ 
> │ > │ 
> │ > │ a"
> │ > │ 
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## Output
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > type Output =
> │ >     | Fs
> │ >     | Md
> │ >     | Spi
> │ >     | Spir
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## Magic
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > type Magic =
> │ >     | Fsharp
> │ >     | Markdown
> │ >     | Spiral of Output
> │ >     | Magic of string
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## kernelOutputs
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline kernelOutputs magic =
> │ >     match magic with
> │ >     | Fsharp -> [[ Fs ]]
> │ >     | Markdown -> [[ Md ]]
> │ >     | Spiral output -> [[ output ]]
> │ >     | _ -> [[]]
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## Block
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > type Block =
> │ >     {
> │ >         magic : Magic
> │ >         content : string
> │ >     }
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## block
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let block =
> │ >     pipe2
> │ >         magicCommand
> │ >         content
> │ >         (fun magic content ->
> │ >             let magic, content =
> │ >                 match magic with
> │ >                 | "fsharp" -> Fsharp, content
> │ >                 | "markdown" -> Markdown, content
> │ >                 | "spiral" ->
> │ >                     let output = if content |> 
> SpiralSm.contains "//// real\n" 
> │ > then Spir else Spi
> │ >                     let content =
> │ >                         if output = Spi
> │ >                         then content
> │ >                         else
> │ >                             content
> │ >                             |> SpiralSm.replace "//// 
> real\n\n" ""
> │ >                             |> SpiralSm.replace "//// 
> real\n" ""
> │ >                     Spiral output, content
> │ >                 | magic -> magic |> Magic, content
> │ >             {
> │ >                 magic = magic
> │ >                 content = content
> │ >             })
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > "#!magic
> │ > 
> │ > 
> │ > a
> │ > 
> │ > 
> │ > "
> │ > |> run block
> │ > |> _assertEqual (
> │ >     Success (
> │ >         { magic = Magic "magic"; content = "a" },
> │ >         (),
> │ >         Position ("", 14, 7, 1)
> │ >     )
> │ > )
> │ > 
> │ > ── [ 37.88ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ Success: { magic = Magic "magic"
> │ > │   content = "a" }
> │ > │ 
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## blocks
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let blocks =
> │ >     skipMany newline
> │ >     >>. sepEndBy block (skipMany1 newline)
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > 
> │ > "#!magic1
> │ > 
> │ > a
> │ > 
> │ > \#!magic2
> │ > 
> │ > b
> │ > 
> │ > "
> │ > |> escapeCell
> │ > |> run blocks
> │ > |> _assertEqual (
> │ >     Success (
> │ >         [[
> │ >             { magic = Magic "magic1"; content = "a" }
> │ >             { magic = Magic "magic2"; content = "b" }
> │ >         ]],
> │ >         (),
> │ >         Position ("", 26, 9, 1)
> │ >     )
> │ > )
> │ > 
> │ > ── [ 37.17ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ Success: [{ magic = Magic "magic1"
> │ > │    content = "a" }; { magic = Magic 
> "magic2"
> │ > │                       content = "b" }]
> │ > │ 
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## formatBlock
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline formatBlock output (block : Block) =
> │ >     match output, block with
> │ >     | output, { magic = Markdown; content = content } ->
> │ >         let markdownComment =
> │ >             match output with
> │ >             | Spi | Spir -> "/// "
> │ >             | Fs -> "/// "
> │ >             | _ -> ""
> │ >         content
> │ >         |> SpiralSm.split "\n"
> │ >         |> Array.map (SpiralSm.trim_end [[||]])
> │ >         |> Array.filter (SpiralSm.ends_with " (test)" >> 
> not)
> │ >         |> Array.map (function
> │ >             | "" -> markdownComment
> │ >             | line -> 
> System.Text.RegularExpressions.Regex.Replace (line, 
> │ > "^\\s*", $"$&{markdownComment}")
> │ >         )
> │ >         |> SpiralSm.concat "\n"
> │ >     | Fs, { magic = Fsharp; content = content } ->
> │ >         let trimmedContent = content |> SpiralSm.trim
> │ >         if trimmedContent |> SpiralSm.contains "//// 
> test\n"
> │ >             || trimmedContent |> SpiralSm.contains "//// 
> ignore\n"
> │ >         then ""
> │ >         else
> │ >             content
> │ >             |> SpiralSm.split "\n"
> │ >             |> Array.filter (SpiralSm.trim_start [[||]] >> 
> SpiralSm.starts_with 
> │ > "#r" >> not)
> │ >             |> SpiralSm.concat "\n"
> │ >     | (Spi | Spir), { magic = Spiral output'; content = 
> content } when output' =
> │ > output ->
> │ >         let trimmedContent = content |> SpiralSm.trim
> │ >         if trimmedContent |> SpiralSm.contains "//// 
> test\n"
> │ >             || trimmedContent |> SpiralSm.contains "//// 
> ignore\n"
> │ >         then ""
> │ >         else content
> │ >     | _ -> ""
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > "#!markdown
> │ > 
> │ > 
> │ > a
> │ > 
> │ >     b
> │ > 
> │ > c
> │ > 
> │ > 
> │ > \#!markdown
> │ > 
> │ > 
> │ > c
> │ > 
> │ > 
> │ > \#!fsharp
> │ > 
> │ > 
> │ > let a = 1"
> │ > |> escapeCell
> │ > |> run block
> │ > |> function
> │ >     | Success (block, _, _) -> formatBlock Fs block
> │ >     | Failure (msg, _, _) -> failwith msg
> │ > |> _assertEqual "/// a
> │ > /// 
> │ >     /// b
> │ > /// 
> │ > /// c"
> │ > 
> │ > ── [ 44.30ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ "/// a
> │ > │ /// 
> │ > │     /// b
> │ > │ /// 
> │ > │ /// c"
> │ > │ 
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## formatBlocks
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline formatBlocks output blocks =
> │ >     blocks
> │ >     |> List.map (fun block ->
> │ >         block, formatBlock output block
> │ >     )
> │ >     |> List.filter (snd >> (<>) "")
> │ >     |> fun list ->
> │ >         (list, (None, [[]]))
> │ >         ||> List.foldBack (fun (block, content) (lastMagic,
> acc) ->
> │ >             let lineBreak =
> │ >                 if block.magic = Markdown && lastMagic <> 
> Some Markdown && 
> │ > lastMagic <> None
> │ >                 then ""
> │ >                 else "\n"
> │ >             Some block.magic, $"{content}{lineBreak}" :: 
> acc
> │ >         )
> │ >     |> snd
> │ >     |> SpiralSm.concat "\n"
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > "#!markdown
> │ > 
> │ > 
> │ > a
> │ > 
> │ > b
> │ > 
> │ > 
> │ > \#!markdown
> │ > 
> │ > 
> │ > c
> │ > 
> │ > 
> │ > \#!fsharp
> │ > 
> │ > 
> │ > let a = 1
> │ > 
> │ > \#!markdown
> │ > 
> │ > d (test)
> │ > 
> │ > \#!fsharp
> │ > 
> │ > //// test
> │ > 
> │ > let a = 2
> │ > 
> │ > \#!markdown
> │ > 
> │ > e
> │ > 
> │ > \#!fsharp
> │ > 
> │ > let a = 3"
> │ > |> escapeCell
> │ > |> run blocks
> │ > |> function
> │ >     | Success (blocks, _, _) -> formatBlocks Fs blocks
> │ >     | Failure (msg, _, _) -> failwith msg
> │ > |> _assertEqual "/// a
> │ > /// 
> │ > /// b
> │ > 
> │ > /// c
> │ > let a = 1
> │ > 
> │ > /// e
> │ > let a = 3
> │ > "
> │ > 
> │ > ── [ 62.17ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ "/// a
> │ > │ /// 
> │ > │ /// b
> │ > │ 
> │ > │ /// c
> │ > │ let a = 1
> │ > │ 
> │ > │ /// e
> │ > │ let a = 3
> │ > │ "
> │ > │ 
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## parse
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline parse output input =
> │ >     match run blocks input with
> │ >     | Success (blocks, _, _) ->
> │ >         let blocks =
> │ >             blocks
> │ >             |> List.filter (fun block ->
> │ >                 block.magic |> kernelOutputs |> 
> List.contains output || 
> │ > block.magic = Markdown
> │ >             )
> │ > 
> │ >         match blocks with
> │ >         | { magic = Markdown; content = content } :: _
> │ >             when output = Fs
> │ >             && content |> SpiralSm.starts_with "# "
> │ >             && content |> SpiralSm.ends_with ")"
> │ >             ->
> │ >             let inline indentBlock (block : Block) =
> │ >                 { block with
> │ >                     content =
> │ >                         block.content
> │ >                         |> SpiralSm.split "\n"
> │ >                         |> Array.fold
> │ >                             (fun (lines, isMultiline) line 
> ->
> │ >                                 let trimmedLine = line |> 
> SpiralSm.trim
> │ >                                 if trimmedLine = ""
> │ >                                 then "" :: lines, 
> isMultiline
> │ >                                 else
> │ >                                     let inline 
> singleQuoteLine () =
> │ >                                         trimmedLine |> 
> Seq.sumBy ((=) '"' >> 
> │ > System.Convert.ToInt32) = 1
> │ >                                         && trimmedLine |> 
> SpiralSm.contains 
> │ > @"'""'" |> not
> │ >                                         && trimmedLine |> 
> SpiralSm.ends_with "{"
> │ > |> not
> │ >                                         && trimmedLine |> 
> SpiralSm.ends_with 
> │ > "{|" |> not
> │ >                                         && trimmedLine |> 
> SpiralSm.starts_with 
> │ > "}" |> not
> │ >                                         && trimmedLine |> 
> SpiralSm.starts_with 
> │ > "|}" |> not
> │ > 
> │ >                                     match isMultiline, 
> trimmedLine |> 
> │ > SpiralSm.split_string [[| $"{q}{q}{q}" |]] with
> │ >                                     | false, [[| _; _ |]] 
> ->
> │ >                                         $"    {line}" :: 
> lines, true
> │ > 
> │ >                                     | true, [[| _; _ |]] ->
> │ >                                         line :: lines, 
> false
> │ > 
> │ >                                     | false, _ when 
> singleQuoteLine () ->
> │ >                                         $"    {line}" :: 
> lines, true
> │ > 
> │ >                                     | false, _ when line |>
> SpiralSm.starts_with
> │ > "#" && block.magic = Fsharp ->
> │ >                                         line :: lines, 
> false
> │ > 
> │ >                                     | false, _ ->
> │ >                                         $"    {line}" :: 
> lines, false
> │ > 
> │ >                                     | true, _ when 
> singleQuoteLine () && line |>
> │ > SpiralSm.starts_with "    " ->
> │ >                                         $"    {line}" :: 
> lines, false
> │ > 
> │ >                                     | true, _ when 
> singleQuoteLine () ->
> │ >                                         line :: lines, 
> false
> │ > 
> │ >                                     | true, _ ->
> │ >                                         line :: lines, true
> │ >                             )
> │ >                             ([[]], false)
> │ >                         |> fst
> │ >                         |> List.rev
> │ >                         |> SpiralSm.concat "\n"
> │ >                 }
> │ > 
> │ >             let moduleName, namespaceName =
> │ >                 System.Text.RegularExpressions.Regex.Match 
> (content, @"# (.*) 
> │ > \((.*)\)$")
> │ >                 |> fun m -> m.Groups.[[1]].Value, 
> m.Groups.[[2]].Value
> │ > 
> │ >             let moduleBlock =
> │ >                 {
> │ >                     magic = Fsharp
> │ >                     content =
> │ >                         $"#if !INTERACTIVE
> │ > namespace {namespaceName}
> │ > #endif
> │ > 
> │ > module {moduleName} ="
> │ >                 }
> │ > 
> │ >             blocks
> │ >             |> List.indexed
> │ >             |> List.fold
> │ >                 (fun blocks (index, block) ->
> │ >                     match index with
> │ >                     | 0 -> blocks
> │ >                     | 1 -> indentBlock block :: moduleBlock
> :: blocks
> │ >                     | _ -> indentBlock block :: blocks
> │ >                 )
> │ >                 [[]]
> │ >             |> List.rev
> │ >         | _ -> blocks
> │ >         |> Result.Ok
> │ >     | Failure (errorMsg, _, _) -> Result.Error errorMsg
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > let example1 =
> │ >     $"""#!meta
> │ > 
> │ > 
> {{"kernelInfo":{{"defaultKernelName":"fsharp","items":[[{{"aliases":[[]],"name":
> │ > "fsharp"}},{{"aliases":[[]],"name":"fsharp"}}]]}}}}
> │ > 
> │ > \#!markdown
> │ > 
> │ > # TestModule (TestNamespace)
> │ > 
> │ > \#!fsharp
> │ > 
> │ > \#!import file.dib
> │ > 
> │ > \#!fsharp
> │ > 
> │ > \#r "nuget:Expecto"
> │ > 
> │ > \#!markdown
> │ > 
> │ > ## ParserLibrary
> │ > 
> │ > \#!fsharp
> │ > 
> │ > open System
> │ > 
> │ > \#!markdown
> │ > 
> │ > ## x (test)
> │ > 
> │ > \#!fsharp
> │ > 
> │ > //// ignore
> │ > 
> │ > let x = 1
> │ > 
> │ > \#!spiral
> │ > 
> │ > //// test
> │ > 
> │ > inl x = 1i32
> │ > 
> │ > \#!spiral
> │ > 
> │ > //// real
> │ > 
> │ > inl x = 2i32
> │ > 
> │ > \#!spiral
> │ > 
> │ > inl x = 3i32
> │ > 
> │ > \#!markdown
> │ > 
> │ > ### TextInput
> │ > 
> │ > \#!fsharp
> │ > 
> │ > let str1 = "abc
> │ > def"
> │ > 
> │ > let str2 =
> │ >     "abc\
> │ > def"
> │ > 
> │ > let str3 =
> │ >     $"1{{
> │ >         1
> │ >     }}1"
> │ > 
> │ > let str4 =
> │ >     $"1{{({{|
> │ >         a = 1
> │ >     |}}).a}}1"
> │ > 
> │ > let str5 =
> │ >     "abc \
> │ >         def"
> │ > 
> │ > let x =
> │ >     match '"' with
> │ >     | '"' -> true
> │ >     | _ -> false
> │ > 
> │ > let long1 = {q}{q}{q}a{q}{q}{q}
> │ > 
> │ > let long2 =
> │ >     {q}{q}{q}
> │ > a
> │ > {q}{q}{q}
> │ > 
> │ > \#!fsharp
> │ > 
> │ > type Position =
> │ >     {{
> │ > #if INTERACTIVE
> │ >         line : string
> │ > #else
> │ >         line : int
> │ > #endif
> │ >         column : int
> │ >     }}"""
> │ >     |> escapeCell
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > example1
> │ > |> parse Fs
> │ > |> Result.toOption
> │ > |> Option.get
> │ > |> (formatBlocks Fs)
> │ > |> _assertEqual $"""#if !INTERACTIVE
> │ > namespace TestNamespace
> │ > #endif
> │ > 
> │ > module TestModule =
> │ > 
> │ >     /// ## ParserLibrary
> │ >     open System
> │ > 
> │ >     /// ### TextInput
> │ >     let str1 = "abc
> │ > def"
> │ > 
> │ >     let str2 =
> │ >         "abc\
> │ > def"
> │ > 
> │ >     let str3 =
> │ >         $"1{{
> │ >             1
> │ >         }}1"
> │ > 
> │ >     let str4 =
> │ >         $"1{{({{|
> │ >             a = 1
> │ >         |}}).a}}1"
> │ > 
> │ >     let str5 =
> │ >         "abc \
> │ >             def"
> │ > 
> │ >     let x =
> │ >         match '"' with
> │ >         | '"' -> true
> │ >         | _ -> false
> │ > 
> │ >     let long1 = {q}{q}{q}a{q}{q}{q}
> │ > 
> │ >     let long2 =
> │ >         {q}{q}{q}
> │ > a
> │ > {q}{q}{q}
> │ > 
> │ >     type Position =
> │ >         {{
> │ > #if INTERACTIVE
> │ >             line : string
> │ > #else
> │ >             line : int
> │ > #endif
> │ >             column : int
> │ >         }}
> │ > """
> │ > 
> │ > ── [ 148.73ms - stdout ] 
> ───────────────────────────────────────────────────────
> │ > │ "#if !INTERACTIVE
> │ > │ namespace TestNamespace
> │ > │ #endif
> │ > │ 
> │ > │ module TestModule =
> │ > │ 
> │ > │     /// ## ParserLibrary
> │ > │     open System
> │ > │ 
> │ > │     /// ### TextInput
> │ > │     let str1 = "abc
> │ > │ def"
> │ > │ 
> │ > │     let str2 =
> │ > │         "abc\
> │ > │ def"
> │ > │ 
> │ > │     let str3 =
> │ > │         $"1{
> │ > │             1
> │ > │         }1"
> │ > │ 
> │ > │     let str4 =
> │ > │         $"1{({|
> │ > │             a = 1
> │ > │         |}).a}1"
> │ > │ 
> │ > │     let str5 =
> │ > │         "abc \
> │ > │             def"
> │ > │ 
> │ > │     let x =
> │ > │         match '"' with
> │ > │         | '"' -> true
> │ > │         | _ -> false
> │ > │ 
> │ > │     let long1 = """a"""
> │ > │ 
> │ > │     let long2 =
> │ > │         """
> │ > │ a
> │ > │ """
> │ > │ 
> │ > │     type Position =
> │ > │         {
> │ > │ #if INTERACTIVE
> │ > │             line : string
> │ > │ #else
> │ > │             line : int
> │ > │ #endif
> │ > │             column : int
> │ > │         }
> │ > │ "
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > example1
> │ > |> parse Md
> │ > |> Result.toOption
> │ > |> Option.get
> │ > |> (formatBlocks Md)
> │ > |> _assertEqual "# TestModule (TestNamespace)
> │ > 
> │ > ## ParserLibrary
> │ > 
> │ > ### TextInput
> │ > "
> │ > 
> │ > ── [ 129.57ms - stdout ] 
> ───────────────────────────────────────────────────────
> │ > │ "# TestModule (TestNamespace)
> │ > │ 
> │ > │ ## ParserLibrary
> │ > │ 
> │ > │ ### TextInput
> │ > │ "
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > example1
> │ > |> parse Spi
> │ > |> Result.toOption
> │ > |> Option.get
> │ > |> (formatBlocks Spi)
> │ > |> _assertEqual "/// # TestModule (TestNamespace)
> │ > 
> │ > /// ## ParserLibrary
> │ > inl x = 3i32
> │ > 
> │ > /// ### TextInput
> │ > "
> │ > 
> │ > ── [ 132.23ms - stdout ] 
> ───────────────────────────────────────────────────────
> │ > │ "/// # TestModule (TestNamespace)
> │ > │ 
> │ > │ /// ## ParserLibrary
> │ > │ inl x = 3i32
> │ > │ 
> │ > │ /// ### TextInput
> │ > │ "
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > example1
> │ > |> parse Spir
> │ > |> Result.toOption
> │ > |> Option.get
> │ > |> (formatBlocks Spir)
> │ > |> _assertEqual "/// # TestModule (TestNamespace)
> │ > 
> │ > /// ## ParserLibrary
> │ > inl x = 2i32
> │ > 
> │ > /// ### TextInput
> │ > "
> │ > 
> │ > ── [ 157.68ms - stdout ] 
> ───────────────────────────────────────────────────────
> │ > │ "/// # TestModule (TestNamespace)
> │ > │ 
> │ > │ /// ## ParserLibrary
> │ > │ inl x = 2i32
> │ > │ 
> │ > │ /// ### TextInput
> │ > │ "
> │ > │ 
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## parseDibCode
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline parseDibCode output file = async {
> │ >     trace Debug
> │ >         (fun () -> "parseDibCode")
> │ >         (fun () -> $"output: {output} / file: {file} / 
> {_locals ()}")
> │ >     let! input = file |> 
> SpiralFileSystem.read_all_text_async
> │ >     match parse output input with
> │ >     | Result.Ok blocks -> return blocks |> formatBlocks 
> output
> │ >     | Result.Error msg -> return failwith msg
> │ > }
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## writeDibCode
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline writeDibCode output path = async {
> │ >     trace Debug
> │ >         (fun () -> "writeDibCode")
> │ >         (fun () -> $"output: {output} / path: {path} / 
> {_locals ()}")
> │ >     let! result = parseDibCode output path
> │ >     let pathDir = path |> System.IO.Path.GetDirectoryName
> │ >     let fileNameWithoutExt =
> │ >         match output, path |> 
> System.IO.Path.GetFileNameWithoutExtension with
> │ >         | Spir, fileNameWithoutExt -> 
> $"{fileNameWithoutExt}_real"
> │ >         | _, fileNameWithoutExt -> fileNameWithoutExt
> │ >     let outputPath = pathDir </> 
> $"{fileNameWithoutExt}.{output |> string |> 
> │ > SpiralSm.to_lower}"
> │ >     do! result |> SpiralFileSystem.write_all_text_async 
> outputPath
> │ > }
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## Arguments
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > [[<RequireQualifiedAccess>]]
> │ > type Arguments =
> │ >     | [[<Argu.ArguAttributes.MainCommand; 
> Argu.ArguAttributes.Mandatory>]]
> │ >         File of file : string * Output
> │ > 
> │ >     interface Argu.IArgParserTemplate with
> │ >         member s.Usage =
> │ >             match s with
> │ >             | File _ -> nameof File
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > Argu.ArgumentParser.Create<Arguments>().PrintUsage ()
> │ > 
> │ > ── [ 89.28ms - return value ] 
> ──────────────────────────────────────────────────
> │ > │ "USAGE: dotnet-repl [--help] <file> 
> <fs|md|spi|spir>
> │ > │ 
> │ > │ FILE:
> │ > │ 
> │ > │     <file> <fs|md|spi|spir>
> │ > │                           File
> │ > │ 
> │ > │ OPTIONS:
> │ > │ 
> │ > │     --help                display this 
> list of options.
> │ > │ "
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## main
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let main args =
> │ >     let argsMap = args |> Runtime.parseArgsMap<Arguments>
> │ > 
> │ >     let files =
> │ >         argsMap.[[nameof Arguments.File]]
> │ >         |> List.map (function
> │ >             | Arguments.File (path, output) -> path, output
> │ >         )
> │ > 
> │ >     files
> │ >     |> List.map (fun (path, output) -> path |> writeDibCode
> output)
> │ >     |> Async.Parallel
> │ >     |> Async.Ignore
> │ >     |> Async.runWithTimeout 30000
> │ >     |> function
> │ >         | Some () -> 0
> │ >         | None -> 1
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > let args =
> │ >     System.Environment.GetEnvironmentVariable "ARGS"
> │ >     |> SpiralRuntime.split_args
> │ >     |> Result.toArray
> │ >     |> Array.collect id
> │ > 
> │ > match args with
> │ > | [[||]] -> 0
> │ > | args -> if main args = 0 then 0 else failwith "main 
> failed"
> │ > 
> │ > ── [ 155.82ms - return value ] 
> ─────────────────────────────────────────────────
> │ > │ <div class="dni-plaintext"><pre>0
> │ > │ </pre></div><style>
> │ > │ .dni-code-hint {
> │ > │     font-style: italic;
> │ > │     overflow: hidden;
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview {
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview td {
> │ > │     vertical-align: top;
> │ > │     text-align: start;
> │ > │ }
> │ > │ details.dni-treeview {
> │ > │     padding-left: 1em;
> │ > │ }
> │ > │ table td {
> │ > │     text-align: start;
> │ > │ }
> │ > │ table tr { 
> │ > │     vertical-align: top; 
> │ > │     margin: 0em 0px;
> │ > │ }
> │ > │ table tr td pre 
> │ > │ { 
> │ > │     vertical-align: top !important; 
> │ > │     margin: 0em 0px !important;
> │ > │ } 
> │ > │ table th {
> │ > │     text-align: start;
> │ > │ }
> │ > │ </style>
> │ > 
> │ > ── [ 156.90ms - stdout ] 
> ───────────────────────────────────────────────────────
> │ > │ 00:00:05 d #1 writeDibCode / 
> output: Fs / path: 
> │ > DibParser.dib
> │ > │ 00:00:05 d #2 parseDibCode / 
> output: Fs / file: 
> │ > DibParser.dib
> │ > │ 
> │ 00:00:23 v #3 runtime.execute_with_options / result / {
> exit_code = 0; std_trace_length = 29954 }
> │ 00:00:23 d #4 runtime.execute_with_options / { 
> file_name = jupyter; arguments = ["nbconvert", 
> "c:/home/git/polyglot/apps/parser/DibParser.dib.ipynb", "--to", "html", 
> "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert 
> "c:/home/git/polyglot/apps/parser/DibParser.dib.ipynb" --to html 
> --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = 
> Array(MutCell([])); on_line = None; stdin = None; trace = true; 
> working_directory = None } }
> │ 00:00:24 v #5 ! [NbConvertApp] Converting notebook 
> c:/home/git/polyglot/apps/parser/DibParser.dib.ipynb to html
> │ 00:00:24 v #6 ! 
> C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.
> py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a 
> hard error in future nbformat versions. You may want to use `normalize()` on 
> your notebooks before validations (available since nbformat 5.1.4). Previous 
> versions of nbformat are fixing this issue transparently, and will stop doing so
> in the future.
> │ 00:00:24 v #7 !   validate(nb)
> │ 00:00:25 v #8 ! 
> C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\
> highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python
> 3
> │ 00:00:25 v #9 !   return _pygments_highlight(
> │ 00:00:25 v #10 ! [NbConvertApp] Writing 378895 bytes to
> c:\home\git\polyglot\apps\parser\DibParser.dib.html
> │ 00:00:26 v #11 runtime.execute_with_options / result / 
> { exit_code = 0; std_trace_length = 862 }
> │ 00:00:26 d #12 spiral.run / dib / jupyter nbconvert / {
> exit_code = 0; jupyter_result_length = 862 }
> │ 00:00:26 d #13 runtime.execute_with_options / { 
> file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 
> 'c:/home/git/polyglot/apps/parser/DibParser.dib.html'; (Get-Content $path -Raw) 
> -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } 
> | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 
> 'c:/home/git/polyglot/apps/parser/DibParser.dib.html'; (Get-Content $path -Raw) 
> -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | 
> Set-Content $path"; cancellation_token = None; environment_variables = 
> Array(MutCell([])); on_line = None; stdin = None; trace = true; 
> working_directory = None } }
> │ 00:00:26 v #14 runtime.execute_with_options / result / 
> { exit_code = 0; std_trace_length = 0 }
> │ 00:00:26 d #15 spiral.run / dib / html cell ids / { 
> exit_code = 0; pwsh_replace_html_result_length = 0 }
> │ 00:00:26 d #16 spiral.run / dib / { exit_code = 0; 
> result_length = 30875 }
> │ 00:00:00 d #1 persistCodeProject / packages: [Argu; 
> FParsec; FSharp.Control.AsyncSeq; ... ] / modules: 
> [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; 
> deps/spiral/lib/spiral/crypto.fsx; ... ] / name: DibParser / hash:  / 
> code.Length: 10861
> │ 00:00:00 d #2 buildProject / fullPath: 
> c:\home\git\polyglot\target\Builder\DibParser\DibParser.fsproj
> │ 00:00:00 d #1 runtime.execute_with_options_async / { 
> file_name = dotnet; arguments = US5_0
> │   "publish 
> "c:/home/git\polyglot\target/Builder\DibParser\DibParser.fsproj" --configuration
> Release --output "C:\home\git\polyglot\apps\parser\dist" --runtime linux-x64"; 
> options = { command = dotnet publish 
> "c:/home/git\polyglot\target/Builder\DibParser\DibParser.fsproj" --configuration
> Release --output "C:\home\git\polyglot\apps\parser\dist" --runtime linux-x64; 
> cancellation_token = None; environment_variables = [||]; on_line = None; stdin =
> None; trace = true; working_directory = Some 
> "c:\home\git\polyglot\target\Builder\DibParser" } }
> │ 00:00:01 v #2 >   Determining projects to restore...
> │ 00:00:01 v #3 >   Paket version 
> 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
> │ 00:00:01 v #4 >   The last full restore is still up to 
> date. Nothing left to do.
> │ 00:00:01 v #5 >   Total time taken: 0 milliseconds
> │ 00:00:02 v #6 >   Restored 
> c:\home\git\polyglot\target\Builder\DibParser\DibParser.fsproj (in 258 ms).
> │ 00:00:16 v #7 >   DibParser -> 
> c:\home\git\polyglot\target\Builder\DibParser\bin\Release\net9.0\linux-x64\DibPa
> rser.dll
> │ 00:00:18 v #8 >   DibParser -> 
> C:\home\git\polyglot\apps\parser\dist\
> │ 00:00:18 d #9 runtime.execute_with_options_async / { 
> exit_code = 0; output_length = 444; options = { command = dotnet publish 
> "c:/home/git\polyglot\target/Builder\DibParser\DibParser.fsproj" --configuration
> Release --output "C:\home\git\polyglot\apps\parser\dist" --runtime linux-x64; 
> cancellation_token = None; environment_variables = [||]; on_line = None; stdin =
> None; trace = true; working_directory = Some 
> "c:\home\git\polyglot\target\Builder\DibParser" } }
> │ 00:00:18 d #10 runtime.execute_with_options_async / { 
> file_name = dotnet; arguments = US5_0
> │   "publish 
> "c:/home/git\polyglot\target/Builder\DibParser\DibParser.fsproj" --configuration
> Release --output "C:\home\git\polyglot\apps\parser\dist" --runtime win-x64"; 
> options = { command = dotnet publish 
> "c:/home/git\polyglot\target/Builder\DibParser\DibParser.fsproj" --configuration
> Release --output "C:\home\git\polyglot\apps\parser\dist" --runtime win-x64; 
> cancellation_token = None; environment_variables = [||]; on_line = None; stdin =
> None; trace = true; working_directory = Some 
> "c:\home\git\polyglot\target\Builder\DibParser" } }
> │ 00:00:19 v #11 >   Determining projects to restore...
> │ 00:00:19 v #12 >   Paket version 
> 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
> │ 00:00:19 v #13 >   The last full restore is still up to 
> date. Nothing left to do.
> │ 00:00:19 v #14 >   Total time taken: 0 milliseconds
> │ 00:00:20 v #15 >   Restored 
> c:\home\git\polyglot\target\Builder\DibParser\DibParser.fsproj (in 288 ms).
> │ 00:00:33 v #16 >   DibParser -> 
> c:\home\git\polyglot\target\Builder\DibParser\bin\Release\net9.0\win-x64\DibPars
> er.dll
> │ 00:00:35 v #17 >   DibParser -> 
> C:\home\git\polyglot\apps\parser\dist\
> │ 00:00:35 d #18 runtime.execute_with_options_async / { 
> exit_code = 0; output_length = 442; options = { command = dotnet publish 
> "c:/home/git\polyglot\target/Builder\DibParser\DibParser.fsproj" --configuration
> Release --output "C:\home\git\polyglot\apps\parser\dist" --runtime win-x64; 
> cancellation_token = None; environment_variables = [||]; on_line = None; stdin =
> None; trace = true; working_directory = Some 
> "c:\home\git\polyglot\target\Builder\DibParser" } }
> │ 00:00:00 d #1 spiral.main / { args = 
> Array(MutCell(["dib", "--path", "JsonParser.dib"])) }
> │ 00:00:00 d #2 runtime.execute_with_options / { 
> file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", 
> "c:/home/git/polyglot/apps/parser/JsonParser.dib", "--output-path", 
> "c:/home/git/polyglot/apps/parser/JsonParser.dib.ipynb"]; options = { command = 
> dotnet repl --exit-after-run --run 
> "c:/home/git/polyglot/apps/parser/JsonParser.dib" --output-path 
> "c:/home/git/polyglot/apps/parser/JsonParser.dib.ipynb"; cancellation_token = 
> None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), 
> ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; 
> working_directory = None } }
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ # JsonParser (Polyglot)
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > open Common
> │ > open Parser
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## JsonParser
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > (*
> │ > // --------------------------------
> │ > JSON spec from http://www.json.org/
> │ > // --------------------------------
> │ > 
> │ > The JSON spec is available at 
> [[json.org]](http://www.json.org/). I'll paraphase
> │ > it here:
> │ > 
> │ > * A `value` can be a `string` or a `number` or a `bool` or 
> `null` or an `object`
> │ > or an `array`.
> │ >   * These structures can be nested.
> │ > * A `string` is a sequence of zero or more Unicode 
> characters, wrapped in double
> │ > quotes, using backslash escapes.
> │ > * A `number` is very much like a C or Java number, except 
> that the octal and 
> │ > hexadecimal formats are not used.
> │ > * A `boolean` is the literal `true` or `false`
> │ > * A `null` is the literal `null`
> │ > * An `object` is an unordered set of name/value pairs.
> │ >   * An object begins with { (left brace) and ends with } 
> (right brace).
> │ >   * Each name is followed by : (colon) and the name/value 
> pairs are separated by
> │ > , (comma).
> │ > * An `array` is an ordered collection of values.
> │ >   * An array begins with [[ (left bracket) and ends with ]]
> (right bracket).
> │ >   * Values are separated by , (comma).
> │ > * Whitespace can be inserted between any pair of tokens.
> │ > *)
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > let inline parserEqual (expected : ParseResult<'a>) (actual
> : ParseResult<'a * 
> │ > Input>) =
> │ >     match actual, expected with
> │ >     | Success (_actual, _), Success _expected ->
> │ >         printResult actual
> │ >         _actual |> _assertEqual _expected
> │ >     | Failure (l1, e1, p1), Failure (l2, e2, p2) when l1 = 
> l2 && e1 = e2 && p1 =
> │ > p2 ->
> │ >         printResult actual
> │ >     | _ ->
> │ >         printfn $"Actual: {actual}"
> │ >         printfn $"Expected: {expected}"
> │ >         failwith "Parse failed"
> │ >     actual
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### JValue
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > type JValue =
> │ >     | JString of string
> │ >     | JNumber of float
> │ >     | JBool   of bool
> │ >     | JNull
> │ >     | JObject of Map<string, JValue>
> │ >     | JArray  of JValue list
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let jValue, jValueRef = createParserForwardedToRef<JValue> 
> ()
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### jNull
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let jNull =
> │ >     pstring "null"
> │ >     >>% JNull
> │ >     <?> "null"
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > jValueRef <|
> │ >     choice
> │ >         [[
> │ >             jNull
> │ >         ]]
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > run jValue "null"
> │ > |> parserEqual (Success JNull)
> │ > 
> │ > ── [ 198.10ms - return value ] 
> ─────────────────────────────────────────────────
> │ > │ <details open="open" 
> class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>Success (JNull, { lines = 
> [|&quot;null&quot;|]<br />
> │ > position = { line = 0<br />                               
> column = 4 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>(JNull, { lines = 
> [|&quot;null&quot;|]<br />  
> │ > position = { line = 0<br />               column = 4 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m1</td><td><details class="dni-treeview"><summary><span 
> │ > 
> class="dni-code-hint"><code>JNull</code></span></summary><div><table><thead><tr>
> │ > 
> </tr></thead><tbody></tbody></table></div></details></td></tr><tr><td>Item2</td>
> │ > <td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ 
> │ > lines = [|&quot;null&quot;|]<br />  position = { line = 
> 0<br />               
> │ > column = 4 } 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > s</td><td><div class="dni-plaintext"><pre>[ null 
> │ > ]</pre></div></td></tr><tr><td>position</td><td><details 
> │ > class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ line = 0<br />
> │ > column = 4 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > </td><td><div class="dni-plaintext"><pre>0
> │ > │ 
> </pre></div></td></tr><tr><td>column</td><td><div 
> │ > class="dni-plaintext"><pre>4
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> │ > 
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> │ > ble></div></details><style>
> │ > │ .dni-code-hint {
> │ > │     font-style: italic;
> │ > │     overflow: hidden;
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview {
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview td {
> │ > │     vertical-align: top;
> │ > │     text-align: start;
> │ > │ }
> │ > │ details.dni-treeview {
> │ > │     padding-left: 1em;
> │ > │ }
> │ > │ table td {
> │ > │     text-align: start;
> │ > │ }
> │ > │ table tr { 
> │ > │     vertical-align: top; 
> │ > │     margin: 0em 0px;
> │ > │ }
> │ > │ table tr td pre 
> │ > │ { 
> │ > │     vertical-align: top !important; 
> │ > │     margin: 0em 0px !important;
> │ > │ } 
> │ > │ table th {
> │ > │     text-align: start;
> │ > │ }
> │ > │ </style>
> │ > 
> │ > ── [ 209.88ms - stdout ] 
> ───────────────────────────────────────────────────────
> │ > │ JNull
> │ > │ JNull
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > run jNull "nulp"
> │ > |> parserEqual (
> │ >     Failure (
> │ >         "null",
> │ >         "Unexpected 'p'",
> │ >         { currentLine = "nulp"; line = 0; column = 3 }
> │ >     )
> │ > )
> │ > 
> │ > ── [ 47.79ms - return value ] 
> ──────────────────────────────────────────────────
> │ > │ <details open="open" 
> class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>Failure (&quot;null&quot;, 
> &quot;Unexpected 
> │ > &#39;p&#39;&quot;, { currentLine = &quot;nulp&quot;<br />
> │ > line = 0<br />                                     column =
> 3 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m1</td><td><div class="dni-plaintext"><pre>&quot;null&quot;
> │ > │ 
> </pre></div></td></tr><tr><td>Item2</td><td><div 
> │ > class="dni-plaintext"><pre>&quot;Unexpected 
> &#39;p&#39;&quot;
> │ > │ 
> </pre></div></td></tr><tr><td>Item3</td><td><details 
> │ > class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ currentLine = 
> │ > &quot;nulp&quot;<br />  line = 0<br />  column = 3 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr
> │ > entLine</td><td><div 
> class="dni-plaintext"><pre>&quot;nulp&quot;
> │ > │ 
> </pre></div></td></tr><tr><td>line</td><td><div 
> │ > class="dni-plaintext"><pre>0
> │ > │ 
> </pre></div></td></tr><tr><td>column</td><td><div 
> │ > class="dni-plaintext"><pre>3
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> │ > </div></details><style>
> │ > │ .dni-code-hint {
> │ > │     font-style: italic;
> │ > │     overflow: hidden;
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview {
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview td {
> │ > │     vertical-align: top;
> │ > │     text-align: start;
> │ > │ }
> │ > │ details.dni-treeview {
> │ > │     padding-left: 1em;
> │ > │ }
> │ > │ table td {
> │ > │     text-align: start;
> │ > │ }
> │ > │ table tr { 
> │ > │     vertical-align: top; 
> │ > │     margin: 0em 0px;
> │ > │ }
> │ > │ table tr td pre 
> │ > │ { 
> │ > │     vertical-align: top !important; 
> │ > │     margin: 0em 0px !important;
> │ > │ } 
> │ > │ table th {
> │ > │     text-align: start;
> │ > │ }
> │ > │ </style>
> │ > 
> │ > ── [ 49.12ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ Line:0 Col:3 Error parsing null
> │ > │ nulp
> │ > │    ^Unexpected 'p'
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### jBool
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let jBool =
> │ >     let jtrue =
> │ >         pstring "true"
> │ >         >>% JBool true
> │ >     let jfalse =
> │ >         pstring "false"
> │ >         >>% JBool false
> │ > 
> │ >     jtrue <|> jfalse
> │ >     <?> "bool"
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > jValueRef <|
> │ >     choice
> │ >         [[
> │ >             jNull
> │ >             jBool
> │ >         ]]
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > run jBool "true"
> │ > |> parserEqual (Success (JBool true))
> │ > 
> │ > ── [ 45.63ms - return value ] 
> ──────────────────────────────────────────────────
> │ > │ <details open="open" 
> class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>Success (JBool true, { lines = 
> │ > [|&quot;true&quot;|]<br />                       position =
> { line = 0<br />
> │ > column = 4 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>(JBool true, { lines = 
> [|&quot;true&quot;|]<br />  
> │ > position = { line = 0<br />               column = 4 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m1</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>JBool 
> │ > 
> true</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>I
> │ > tem</td><td><div class="dni-plaintext"><pre>true
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> │ > d><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{
> │ > lines = [|&quot;true&quot;|]<br />  position = { line = 
> 0<br />               
> │ > column = 4 } 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > s</td><td><div class="dni-plaintext"><pre>[ true 
> │ > ]</pre></div></td></tr><tr><td>position</td><td><details 
> │ > class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ line = 0<br />
> │ > column = 4 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > </td><td><div class="dni-plaintext"><pre>0
> │ > │ 
> </pre></div></td></tr><tr><td>column</td><td><div 
> │ > class="dni-plaintext"><pre>4
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> │ > 
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> │ > ble></div></details><style>
> │ > │ .dni-code-hint {
> │ > │     font-style: italic;
> │ > │     overflow: hidden;
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview {
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview td {
> │ > │     vertical-align: top;
> │ > │     text-align: start;
> │ > │ }
> │ > │ details.dni-treeview {
> │ > │     padding-left: 1em;
> │ > │ }
> │ > │ table td {
> │ > │     text-align: start;
> │ > │ }
> │ > │ table tr { 
> │ > │     vertical-align: top; 
> │ > │     margin: 0em 0px;
> │ > │ }
> │ > │ table tr td pre 
> │ > │ { 
> │ > │     vertical-align: top !important; 
> │ > │     margin: 0em 0px !important;
> │ > │ } 
> │ > │ table th {
> │ > │     text-align: start;
> │ > │ }
> │ > │ </style>
> │ > 
> │ > ── [ 47.32ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ JBool true
> │ > │ JBool true
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > run jBool "false"
> │ > |> parserEqual (Success (JBool false))
> │ > 
> │ > ── [ 35.95ms - return value ] 
> ──────────────────────────────────────────────────
> │ > │ <details open="open" 
> class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>Success (JBool false, { lines =│ > [|&quot;false&quot;|]<br />                        position
> = { line = 0<br />
> │ > column = 5 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>(JBool false, { lines = 
> [|&quot;false&quot;|]<br />
> │ > position = { line = 0<br />               column = 5 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m1</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>JBool 
> │ > 
> false</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>
> │ > Item</td><td><div class="dni-plaintext"><pre>false
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> │ > d><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{
> │ > lines = [|&quot;false&quot;|]<br />  position = { line = 
> 0<br />               
> │ > column = 5 } 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > s</td><td><div class="dni-plaintext"><pre>[ false 
> │ > ]</pre></div></td></tr><tr><td>position</td><td><details 
> │ > class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ line = 0<br />
> │ > column = 5 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > </td><td><div class="dni-plaintext"><pre>0
> │ > │ 
> </pre></div></td></tr><tr><td>column</td><td><div 
> │ > class="dni-plaintext"><pre>5
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> │ > 
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> │ > ble></div></details><style>
> │ > │ .dni-code-hint {
> │ > │     font-style: italic;
> │ > │     overflow: hidden;
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview {
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview td {
> │ > │     vertical-align: top;
> │ > │     text-align: start;
> │ > │ }
> │ > │ details.dni-treeview {
> │ > │     padding-left: 1em;
> │ > │ }
> │ > │ table td {
> │ > │     text-align: start;
> │ > │ }
> │ > │ table tr { 
> │ > │     vertical-align: top; 
> │ > │     margin: 0em 0px;
> │ > │ }
> │ > │ table tr td pre 
> │ > │ { 
> │ > │     vertical-align: top !important; 
> │ > │     margin: 0em 0px !important;
> │ > │ } 
> │ > │ table th {
> │ > │     text-align: start;
> │ > │ }
> │ > │ </style>
> │ > 
> │ > ── [ 37.75ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ JBool false
> │ > │ JBool false
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > run jBool "truX"
> │ > |> parserEqual (
> │ >     Failure (
> │ >         "bool",
> │ >         "Unexpected 't'",
> │ >         { currentLine = "truX"; line = 0; column = 0 }
> │ >     )
> │ > )
> │ > 
> │ > ── [ 29.82ms - return value ] 
> ──────────────────────────────────────────────────
> │ > │ <details open="open" 
> class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>Failure (&quot;bool&quot;, 
> &quot;Unexpected 
> │ > &#39;t&#39;&quot;, { currentLine = &quot;truX&quot;<br />
> │ > line = 0<br />                                     column =
> 0 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m1</td><td><div class="dni-plaintext"><pre>&quot;bool&quot;
> │ > │ 
> </pre></div></td></tr><tr><td>Item2</td><td><div 
> │ > class="dni-plaintext"><pre>&quot;Unexpected 
> &#39;t&#39;&quot;
> │ > │ 
> </pre></div></td></tr><tr><td>Item3</td><td><details 
> │ > class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ currentLine = 
> │ > &quot;truX&quot;<br />  line = 0<br />  column = 0 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr
> │ > entLine</td><td><div 
> class="dni-plaintext"><pre>&quot;truX&quot;
> │ > │ 
> </pre></div></td></tr><tr><td>line</td><td><div 
> │ > class="dni-plaintext"><pre>0
> │ > │ 
> </pre></div></td></tr><tr><td>column</td><td><div 
> │ > class="dni-plaintext"><pre>0
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> │ > </div></details><style>
> │ > │ .dni-code-hint {
> │ > │     font-style: italic;
> │ > │     overflow: hidden;
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview {
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview td {
> │ > │     vertical-align: top;
> │ > │     text-align: start;
> │ > │ }
> │ > │ details.dni-treeview {
> │ > │     padding-left: 1em;
> │ > │ }
> │ > │ table td {
> │ > │     text-align: start;
> │ > │ }
> │ > │ table tr { 
> │ > │     vertical-align: top; 
> │ > │     margin: 0em 0px;
> │ > │ }
> │ > │ table tr td pre 
> │ > │ { 
> │ > │     vertical-align: top !important; 
> │ > │     margin: 0em 0px !important;
> │ > │ } 
> │ > │ table th {
> │ > │     text-align: start;
> │ > │ }
> │ > │ </style>
> │ > 
> │ > ── [ 31.13ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ Line:0 Col:0 Error parsing bool
> │ > │ truX
> │ > │ ^Unexpected 't'
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### jUnescapedChar
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let jUnescapedChar =
> │ >     satisfy (fun ch -> ch <> '\\' && ch <> '\"') "char"
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > run jUnescapedChar "a"
> │ > |> parserEqual (Success 'a')
> │ > 
> │ > ── [ 48.85ms - return value ] 
> ──────────────────────────────────────────────────
> │ > │ <details open="open" 
> class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>Success (&#39;a&#39;, { lines =
> [|&quot;a&quot;|]<br
> │ > />                position = { line = 0<br />
> column
> │ > = 1 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>(a, { lines = 
> [|&quot;a&quot;|]<br />  position = { 
> │ > line = 0<br />               column = 1 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m1</td><td><div class="dni-plaintext"><pre>&#39;a&#39;
> │ > │ 
> </pre></div></td></tr><tr><td>Item2</td><td><details 
> │ > class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ lines = 
> │ > [|&quot;a&quot;|]<br />  position = { line = 0<br />
> column = 1 } 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > s</td><td><div class="dni-plaintext"><pre>[ a 
> │ > ]</pre></div></td></tr><tr><td>position</td><td><details 
> │ > class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ line = 0<br />
> │ > column = 1 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > </td><td><div class="dni-plaintext"><pre>0
> │ > │ 
> </pre></div></td></tr><tr><td>column</td><td><div 
> │ > class="dni-plaintext"><pre>1
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> │ > 
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> │ > ble></div></details><style>
> │ > │ .dni-code-hint {
> │ > │     font-style: italic;
> │ > │     overflow: hidden;
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview {
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview td {
> │ > │     vertical-align: top;
> │ > │     text-align: start;
> │ > │ }
> │ > │ details.dni-treeview {
> │ > │     padding-left: 1em;
> │ > │ }
> │ > │ table td {
> │ > │     text-align: start;
> │ > │ }
> │ > │ table tr { 
> │ > │     vertical-align: top; 
> │ > │     margin: 0em 0px;
> │ > │ }
> │ > │ table tr td pre 
> │ > │ { 
> │ > │     vertical-align: top !important; 
> │ > │     margin: 0em 0px !important;
> │ > │ } 
> │ > │ table th {
> │ > │     text-align: start;
> │ > │ }
> │ > │ </style>
> │ > 
> │ > ── [ 50.74ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ 'a'
> │ > │ 'a'
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > run jUnescapedChar "\\"
> │ > |> parserEqual (
> │ >     Failure (
> │ >         "char",
> │ >         "Unexpected '\\'",
> │ >         { currentLine = "\\"; line = 0; column = 0 }
> │ >     )
> │ > )
> │ > 
> │ > ── [ 38.78ms - return value ] 
> ──────────────────────────────────────────────────
> │ > │ <details open="open" 
> class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>Failure (&quot;char&quot;, 
> &quot;Unexpected 
> │ > &#39;\&#39;&quot;, { currentLine = &quot;\&quot;<br />
> │ > line = 0<br />                                     column =
> 0 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m1</td><td><div class="dni-plaintext"><pre>&quot;char&quot;
> │ > │ 
> </pre></div></td></tr><tr><td>Item2</td><td><div 
> │ > class="dni-plaintext"><pre>&quot;Unexpected 
> &#39;\&#39;&quot;
> │ > │ 
> </pre></div></td></tr><tr><td>Item3</td><td><details 
> │ > class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ currentLine = 
> │ > &quot;\&quot;<br />  line = 0<br />  column = 0 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr
> │ > entLine</td><td><div 
> class="dni-plaintext"><pre>&quot;\&quot;
> │ > │ 
> </pre></div></td></tr><tr><td>line</td><td><div 
> │ > class="dni-plaintext"><pre>0
> │ > │ 
> </pre></div></td></tr><tr><td>column</td><td><div 
> │ > class="dni-plaintext"><pre>0
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> │ > </div></details><style>
> │ > │ .dni-code-hint {
> │ > │     font-style: italic;
> │ > │     overflow: hidden;
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview {
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview td {
> │ > │     vertical-align: top;
> │ > │     text-align: start;
> │ > │ }
> │ > │ details.dni-treeview {
> │ > │     padding-left: 1em;
> │ > │ }
> │ > │ table td {
> │ > │     text-align: start;
> │ > │ }
> │ > │ table tr { 
> │ > │     vertical-align: top; 
> │ > │     margin: 0em 0px;
> │ > │ }
> │ > │ table tr td pre 
> │ > │ { 
> │ > │     vertical-align: top !important; 
> │ > │     margin: 0em 0px !important;
> │ > │ } 
> │ > │ table th {
> │ > │     text-align: start;
> │ > │ }
> │ > │ </style>
> │ > 
> │ > ── [ 40.03ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ Line:0 Col:0 Error parsing char
> │ > │ \
> │ > │ ^Unexpected '\'
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### jEscapedChar
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let jEscapedChar =
> │ >     [[
> │ >         ("\\\"",'\"')
> │ >         ("\\\\",'\\')
> │ >         ("\\/",'/')
> │ >         ("\\b",'\b')
> │ >         ("\\f",'\f')
> │ >         ("\\n",'\n')
> │ >         ("\\r",'\r')
> │ >         ("\\t",'\t')
> │ >     ]]
> │ >     |> List.map (fun (toMatch, result) ->
> │ >         pstring toMatch >>% result
> │ >     )
> │ >     |> choice
> │ >     <?> "escaped char"
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > run jEscapedChar "\\\\"
> │ > |> parserEqual (Success '\\')
> │ > 
> │ > ── [ 36.03ms - return value ] 
> ──────────────────────────────────────────────────
> │ > │ <details open="open" 
> class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>Success (&#39;\\&#39;, { lines 
> = 
> │ > [|&quot;\\&quot;|]<br />                 position = { line 
> = 0<br />
> │ > column = 2 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>(\, { lines = 
> [|&quot;\\&quot;|]<br />  position = {
> │ > line = 0<br />               column = 2 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m1</td><td><div class="dni-plaintext"><pre>&#39;\\&#39;
> │ > │ 
> </pre></div></td></tr><tr><td>Item2</td><td><details 
> │ > class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ lines = 
> │ > [|&quot;\\&quot;|]<br />  position = { line = 0<br />
> column = 2 }
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > s</td><td><div class="dni-plaintext"><pre>[ \\ 
> │ > ]</pre></div></td></tr><tr><td>position</td><td><details 
> │ > class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ line = 0<br />
> │ > column = 2 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > </td><td><div class="dni-plaintext"><pre>0
> │ > │ 
> </pre></div></td></tr><tr><td>column</td><td><div 
> │ > class="dni-plaintext"><pre>2
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> │ > 
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> │ > ble></div></details><style>
> │ > │ .dni-code-hint {
> │ > │     font-style: italic;
> │ > │     overflow: hidden;
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview {
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview td {
> │ > │     vertical-align: top;
> │ > │     text-align: start;
> │ > │ }
> │ > │ details.dni-treeview {
> │ > │     padding-left: 1em;
> │ > │ }
> │ > │ table td {
> │ > │     text-align: start;
> │ > │ }
> │ > │ table tr { 
> │ > │     vertical-align: top; 
> │ > │     margin: 0em 0px;
> │ > │ }
> │ > │ table tr td pre 
> │ > │ { 
> │ > │     vertical-align: top !important; 
> │ > │     margin: 0em 0px !important;
> │ > │ } 
> │ > │ table th {
> │ > │     text-align: start;
> │ > │ }
> │ > │ </style>
> │ > 
> │ > ── [ 38.45ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ '\\'
> │ > │ '\\'
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > run jEscapedChar "\\t"
> │ > |> parserEqual (Success '\t')
> │ > 
> │ > ── [ 34.82ms - return value ] 
> ──────────────────────────────────────────────────
> │ > │ <details open="open" 
> class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>Success (&#39;\009&#39;, { 
> lines = 
> │ > [|&quot;\t&quot;|]<br />                   position = { 
> line = 0<br />
> │ > column = 2 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>(	, { lines = 
> [|&quot;\t&quot;|]<br />  position = { 
> │ > line = 0<br />               column = 2 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m1</td><td><div class="dni-plaintext"><pre>&#39;\009&#39;
> │ > │ 
> </pre></div></td></tr><tr><td>Item2</td><td><details 
> │ > class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ lines = 
> │ > [|&quot;\t&quot;|]<br />  position = { line = 0<br />
> column = 2 }
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > s</td><td><div class="dni-plaintext"><pre>[ \t 
> │ > ]</pre></div></td></tr><tr><td>position</td><td><details 
> │ > class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ line = 0<br />
> │ > column = 2 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > </td><td><div class="dni-plaintext"><pre>0
> │ > │ 
> </pre></div></td></tr><tr><td>column</td><td><div 
> │ > class="dni-plaintext"><pre>2
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> │ > 
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> │ > ble></div></details><style>
> │ > │ .dni-code-hint {
> │ > │     font-style: italic;
> │ > │     overflow: hidden;
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview {
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview td {
> │ > │     vertical-align: top;
> │ > │     text-align: start;
> │ > │ }
> │ > │ details.dni-treeview {
> │ > │     padding-left: 1em;
> │ > │ }
> │ > │ table td {
> │ > │     text-align: start;
> │ > │ }
> │ > │ table tr { 
> │ > │     vertical-align: top; 
> │ > │     margin: 0em 0px;
> │ > │ }
> │ > │ table tr td pre 
> │ > │ { 
> │ > │     vertical-align: top !important; 
> │ > │     margin: 0em 0px !important;
> │ > │ } 
> │ > │ table th {
> │ > │     text-align: start;
> │ > │ }
> │ > │ </style>
> │ > 
> │ > ── [ 36.42ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ '\009'
> │ > │ '\009'
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > run jEscapedChar @"\\"
> │ > |> parserEqual (Success '\\')
> │ > 
> │ > ── [ 33.12ms - return value ] 
> ──────────────────────────────────────────────────
> │ > │ <details open="open" 
> class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>Success (&#39;\\&#39;, { lines 
> = 
> │ > [|&quot;\\&quot;|]<br />                 position = { line 
> = 0<br />
> │ > column = 2 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>(\, { lines = 
> [|&quot;\\&quot;|]<br />  position = {
> │ > line = 0<br />               column = 2 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m1</td><td><div class="dni-plaintext"><pre>&#39;\\&#39;
> │ > │ 
> </pre></div></td></tr><tr><td>Item2</td><td><details 
> │ > class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ lines = 
> │ > [|&quot;\\&quot;|]<br />  position = { line = 0<br />
> column = 2 }
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > s</td><td><div class="dni-plaintext"><pre>[ \\ 
> │ > ]</pre></div></td></tr><tr><td>position</td><td><details 
> │ > class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ line = 0<br />
> │ > column = 2 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > </td><td><div class="dni-plaintext"><pre>0
> │ > │ 
> </pre></div></td></tr><tr><td>column</td><td><div 
> │ > class="dni-plaintext"><pre>2
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> │ > 
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> │ > ble></div></details><style>
> │ > │ .dni-code-hint {
> │ > │     font-style: italic;
> │ > │     overflow: hidden;
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview {
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview td {
> │ > │     vertical-align: top;
> │ > │     text-align: start;
> │ > │ }
> │ > │ details.dni-treeview {
> │ > │     padding-left: 1em;
> │ > │ }
> │ > │ table td {
> │ > │     text-align: start;
> │ > │ }
> │ > │ table tr { 
> │ > │     vertical-align: top; 
> │ > │     margin: 0em 0px;
> │ > │ }
> │ > │ table tr td pre 
> │ > │ { 
> │ > │     vertical-align: top !important; 
> │ > │     margin: 0em 0px !important;
> │ > │ } 
> │ > │ table th {
> │ > │     text-align: start;
> │ > │ }
> │ > │ </style>
> │ > 
> │ > ── [ 34.61ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ '\\'
> │ > │ '\\'
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > run jEscapedChar @"\n"
> │ > |> parserEqual (Success '\n')
> │ > 
> │ > ── [ 33.30ms - return value ] 
> ──────────────────────────────────────────────────
> │ > │ <details open="open" 
> class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>Success (&#39;\010&#39;, { 
> lines = [|&quot;<br 
> │ > />&quot;|]<br />                   position = { line = 0<br
> />
> │ > column = 2 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>(<br />, { lines = [|&quot;<br 
> />&quot;|]<br />  
> │ > position = { line = 0<br />               column = 2 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m1</td><td><div class="dni-plaintext"><pre>&#39;\010&#39;
> │ > │ 
> </pre></div></td></tr><tr><td>Item2</td><td><details 
> │ > class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ lines = 
> │ > [|&quot;<br />&quot;|]<br />  position = { line = 0<br />
> column =
> │ > 2 } 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > s</td><td><div class="dni-plaintext"><pre>[ <br /> 
> │ > ]</pre></div></td></tr><tr><td>position</td><td><details 
> │ > class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ line = 0<br />
> │ > column = 2 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > </td><td><div class="dni-plaintext"><pre>0
> │ > │ 
> </pre></div></td></tr><tr><td>column</td><td><div 
> │ > class="dni-plaintext"><pre>2
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> │ > 
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> │ > ble></div></details><style>
> │ > │ .dni-code-hint {
> │ > │     font-style: italic;
> │ > │     overflow: hidden;
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview {
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview td {
> │ > │     vertical-align: top;
> │ > │     text-align: start;
> │ > │ }
> │ > │ details.dni-treeview {
> │ > │     padding-left: 1em;
> │ > │ }
> │ > │ table td {
> │ > │     text-align: start;
> │ > │ }
> │ > │ table tr { 
> │ > │     vertical-align: top; 
> │ > │     margin: 0em 0px;
> │ > │ }
> │ > │ table tr td pre 
> │ > │ { 
> │ > │     vertical-align: top !important; 
> │ > │     margin: 0em 0px !important;
> │ > │ } 
> │ > │ table th {
> │ > │     text-align: start;
> │ > │ }
> │ > │ </style>
> │ > 
> │ > ── [ 34.98ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ '\010'
> │ > │ '\010'
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > run jEscapedChar "a"
> │ > |> parserEqual (
> │ >     Failure (
> │ >         "escaped char",
> │ >         "Unexpected 'a'",
> │ >         { currentLine = "a"; line = 0; column = 0 }
> │ >     )
> │ > )
> │ > 
> │ > ── [ 31.29ms - return value ] 
> ──────────────────────────────────────────────────
> │ > │ <details open="open" 
> class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>Failure (&quot;escaped 
> char&quot;, &quot;Unexpected 
> │ > &#39;a&#39;&quot;, { currentLine = &quot;a&quot;<br />
> │ > line = 0<br />                                             
> column = 0 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m1</td><td><div class="dni-plaintext"><pre>&quot;escaped 
> char&quot;
> │ > │ 
> </pre></div></td></tr><tr><td>Item2</td><td><div 
> │ > class="dni-plaintext"><pre>&quot;Unexpected 
> &#39;a&#39;&quot;
> │ > │ 
> </pre></div></td></tr><tr><td>Item3</td><td><details 
> │ > class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ currentLine = 
> │ > &quot;a&quot;<br />  line = 0<br />  column = 0 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr
> │ > entLine</td><td><div 
> class="dni-plaintext"><pre>&quot;a&quot;
> │ > │ 
> </pre></div></td></tr><tr><td>line</td><td><div 
> │ > class="dni-plaintext"><pre>0
> │ > │ 
> </pre></div></td></tr><tr><td>column</td><td><div 
> │ > class="dni-plaintext"><pre>0
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> │ > </div></details><style>
> │ > │ .dni-code-hint {
> │ > │     font-style: italic;
> │ > │     overflow: hidden;
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview {
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview td {
> │ > │     vertical-align: top;
> │ > │     text-align: start;
> │ > │ }
> │ > │ details.dni-treeview {
> │ > │     padding-left: 1em;
> │ > │ }
> │ > │ table td {
> │ > │     text-align: start;
> │ > │ }
> │ > │ table tr { 
> │ > │     vertical-align: top; 
> │ > │     margin: 0em 0px;
> │ > │ }
> │ > │ table tr td pre 
> │ > │ { 
> │ > │     vertical-align: top !important; 
> │ > │     margin: 0em 0px !important;
> │ > │ } 
> │ > │ table th {
> │ > │     text-align: start;
> │ > │ }
> │ > │ </style>
> │ > 
> │ > ── [ 32.60ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ Line:0 Col:0 Error parsing escaped char
> │ > │ a
> │ > │ ^Unexpected 'a'
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### jUnicodeChar
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let jUnicodeChar =
> │ >     let backslash = pchar '\\'
> │ >     let uChar = pchar 'u'
> │ >     let hexdigit = anyOf ([[ '0' .. '9' ]] @ [[ 'A' .. 'F' 
> ]] @ [[ 'a' .. 'f' 
> │ > ]])
> │ >     let fourHexDigits = hexdigit .>>. hexdigit .>>. 
> hexdigit .>>. hexdigit
> │ > 
> │ >     let inline convertToChar (((h1, h2), h3), h4) =
> │ >         let str = $"%c{h1}%c{h2}%c{h3}%c{h4}"
> │ >         Int32.Parse (str, 
> Globalization.NumberStyles.HexNumber) |> char
> │ > 
> │ >     backslash >>. uChar >>. fourHexDigits
> │ >     |>> convertToChar
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > run jUnicodeChar "\\u263A"
> │ > |> parserEqual (Success '☺')
> │ > 
> │ > ── [ 45.56ms - return value ] 
> ──────────────────────────────────────────────────
> │ > │ <details open="open" 
> class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>Success (&#39;☺&#39;, { lines =│ > [|&quot;\u263A&quot;|]<br />                position = { 
> line = 0<br />
> │ > column = 6 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>(☺, { lines = 
> [|&quot;\u263A&quot;|]<br />  position
> │ > = { line = 0<br />               column = 6 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m1</td><td><div class="dni-plaintext"><pre>&#39;☺&#39;
> │ > │ 
> </pre></div></td></tr><tr><td>Item2</td><td><details 
> │ > class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ lines = 
> │ > [|&quot;\u263A&quot;|]<br />  position = { line = 0<br />
> column =
> │ > 6 } 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > s</td><td><div class="dni-plaintext"><pre>[ \u263A 
> │ > ]</pre></div></td></tr><tr><td>position</td><td><details 
> │ > class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ line = 0<br />
> │ > column = 6 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > </td><td><div class="dni-plaintext"><pre>0
> │ > │ 
> </pre></div></td></tr><tr><td>column</td><td><div 
> │ > class="dni-plaintext"><pre>6
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> │ > 
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> │ > ble></div></details><style>
> │ > │ .dni-code-hint {
> │ > │     font-style: italic;
> │ > │     overflow: hidden;
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview {
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview td {
> │ > │     vertical-align: top;
> │ > │     text-align: start;
> │ > │ }
> │ > │ details.dni-treeview {
> │ > │     padding-left: 1em;
> │ > │ }
> │ > │ table td {
> │ > │     text-align: start;
> │ > │ }
> │ > │ table tr { 
> │ > │     vertical-align: top; 
> │ > │     margin: 0em 0px;
> │ > │ }
> │ > │ table tr td pre 
> │ > │ { 
> │ > │     vertical-align: top !important; 
> │ > │     margin: 0em 0px !important;
> │ > │ } 
> │ > │ table th {
> │ > │     text-align: start;
> │ > │ }
> │ > │ </style>
> │ > 
> │ > ── [ 47.30ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ '☺'
> │ > │ '☺'
> │ > │ 
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### jString
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let quotedString =
> │ >     let quote = pchar '\"' <?> "quote"
> │ >     let jchar = jUnescapedChar <|> jEscapedChar <|> 
> jUnicodeChar
> │ > 
> │ >     quote >>. manyChars jchar .>> quote
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let jString =
> │ >     quotedString
> │ >     |>> JString
> │ >     <?> "quoted string"
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > jValueRef <|
> │ >     choice
> │ >         [[
> │ >             jNull
> │ >             jBool
> │ >             jString
> │ >         ]]
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > run jString "\"\""
> │ > |> parserEqual (Success (JString ""))
> │ > 
> │ > ── [ 48.53ms - return value ] 
> ──────────────────────────────────────────────────
> │ > │ <details open="open" 
> class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>Success (JString &quot;&quot;, 
> { lines = 
> │ > [|&quot;&quot;&quot;&quot;|]<br />                       
> position = { line = 
> │ > 0<br />                                    column = 2 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>(JString &quot;&quot;, { lines 
> = 
> │ > [|&quot;&quot;&quot;&quot;|]<br />  position = { line = 
> 0<br />               
> │ > column = 2 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m1</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>JString 
> │ > 
> &quot;&quot;</code></span></summary><div><table><thead><tr></tr></thead><tbody><
> │ > tr><td>Item</td><td><div 
> class="dni-plaintext"><pre>&quot;&quot;
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> │ > d><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{
> │ > lines = [|&quot;&quot;&quot;&quot;|]<br />  position = { 
> line = 0<br />
> │ > column = 2 } 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > s</td><td><div class="dni-plaintext"><pre>[ &quot;&quot; 
> │ > ]</pre></div></td></tr><tr><td>position</td><td><details 
> │ > class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ line = 0<br />
> │ > column = 2 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > </td><td><div class="dni-plaintext"><pre>0
> │ > │ 
> </pre></div></td></tr><tr><td>column</td><td><div 
> │ > class="dni-plaintext"><pre>2
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> │ > 
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> │ > ble></div></details><style>
> │ > │ .dni-code-hint {
> │ > │     font-style: italic;
> │ > │     overflow: hidden;
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview {
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview td {
> │ > │     vertical-align: top;
> │ > │     text-align: start;
> │ > │ }
> │ > │ details.dni-treeview {
> │ > │     padding-left: 1em;
> │ > │ }
> │ > │ table td {
> │ > │     text-align: start;
> │ > │ }
> │ > │ table tr { 
> │ > │     vertical-align: top; 
> │ > │     margin: 0em 0px;
> │ > │ }
> │ > │ table tr td pre 
> │ > │ { 
> │ > │     vertical-align: top !important; 
> │ > │     margin: 0em 0px !important;
> │ > │ } 
> │ > │ table th {
> │ > │     text-align: start;
> │ > │ }
> │ > │ </style>
> │ > 
> │ > ── [ 50.28ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ JString ""
> │ > │ JString ""
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > run jString "\"a\""
> │ > |> parserEqual (Success (JString "a"))
> │ > 
> │ > ── [ 37.64ms - return value ] 
> ──────────────────────────────────────────────────
> │ > │ <details open="open" 
> class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>Success (JString &quot;a&quot;,
> { lines = 
> │ > [|&quot;&quot;a&quot;&quot;|]<br />                        
> position = { line = 
> │ > 0<br />                                     column = 3 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>(JString &quot;a&quot;, { lines
> = 
> │ > [|&quot;&quot;a&quot;&quot;|]<br />  position = { line = 
> 0<br />               
> │ > column = 3 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m1</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>JString 
> │ > 
> &quot;a&quot;</code></span></summary><div><table><thead><tr></tr></thead><tbody>
> │ > <tr><td>Item</td><td><div 
> class="dni-plaintext"><pre>&quot;a&quot;
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> │ > d><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{
> │ > lines = [|&quot;&quot;a&quot;&quot;|]<br />  position = { 
> line = 0<br />
> │ > column = 3 } 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > s</td><td><div class="dni-plaintext"><pre>[ &quot;a&quot; 
> │ > ]</pre></div></td></tr><tr><td>position</td><td><details 
> │ > class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ line = 0<br />
> │ > column = 3 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > </td><td><div class="dni-plaintext"><pre>0
> │ > │ 
> </pre></div></td></tr><tr><td>column</td><td><div 
> │ > class="dni-plaintext"><pre>3
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> │ > 
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> │ > ble></div></details><style>
> │ > │ .dni-code-hint {
> │ > │     font-style: italic;
> │ > │     overflow: hidden;
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview {
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview td {
> │ > │     vertical-align: top;
> │ > │     text-align: start;
> │ > │ }
> │ > │ details.dni-treeview {
> │ > │     padding-left: 1em;
> │ > │ }
> │ > │ table td {
> │ > │     text-align: start;
> │ > │ }
> │ > │ table tr { 
> │ > │     vertical-align: top; 
> │ > │     margin: 0em 0px;
> │ > │ }
> │ > │ table tr td pre 
> │ > │ { 
> │ > │     vertical-align: top !important; 
> │ > │     margin: 0em 0px !important;
> │ > │ } 
> │ > │ table th {
> │ > │     text-align: start;
> │ > │ }
> │ > │ </style>
> │ > 
> │ > ── [ 39.43ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ JString "a"
> │ > │ JString "a"
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > run jString "\"ab\""
> │ > |> parserEqual (Success (JString "ab"))
> │ > 
> │ > ── [ 36.77ms - return value ] 
> ──────────────────────────────────────────────────
> │ > │ <details open="open" 
> class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>Success (JString 
> &quot;ab&quot;, { lines = 
> │ > [|&quot;&quot;ab&quot;&quot;|]<br />
> position = { line =
> │ > 0<br />                                      column = 4 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>(JString &quot;ab&quot;, { 
> lines = 
> │ > [|&quot;&quot;ab&quot;&quot;|]<br />  position = { line = 
> 0<br />               
> │ > column = 4 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m1</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>JString 
> │ > 
> &quot;ab&quot;</code></span></summary><div><table><thead><tr></tr></thead><tbody
> │ > ><tr><td>Item</td><td><div 
> class="dni-plaintext"><pre>&quot;ab&quot;
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> │ > d><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{
> │ > lines = [|&quot;&quot;ab&quot;&quot;|]<br />  position = { 
> line = 0<br />
> │ > column = 4 } 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > s</td><td><div class="dni-plaintext"><pre>[ &quot;ab&quot; 
> │ > ]</pre></div></td></tr><tr><td>position</td><td><details 
> │ > class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ line = 0<br />
> │ > column = 4 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > </td><td><div class="dni-plaintext"><pre>0
> │ > │ 
> </pre></div></td></tr><tr><td>column</td><td><div 
> │ > class="dni-plaintext"><pre>4
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> │ > 
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> │ > ble></div></details><style>
> │ > │ .dni-code-hint {
> │ > │     font-style: italic;
> │ > │     overflow: hidden;
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview {
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview td {
> │ > │     vertical-align: top;
> │ > │     text-align: start;
> │ > │ }
> │ > │ details.dni-treeview {
> │ > │     padding-left: 1em;
> │ > │ }
> │ > │ table td {
> │ > │     text-align: start;
> │ > │ }
> │ > │ table tr { 
> │ > │     vertical-align: top; 
> │ > │     margin: 0em 0px;
> │ > │ }
> │ > │ table tr td pre 
> │ > │ { 
> │ > │     vertical-align: top !important; 
> │ > │     margin: 0em 0px !important;
> │ > │ } 
> │ > │ table th {
> │ > │     text-align: start;
> │ > │ }
> │ > │ </style>
> │ > 
> │ > ── [ 38.53ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ JString "ab"
> │ > │ JString "ab"
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > run jString "\"ab\\tde\""
> │ > |> parserEqual (Success (JString "ab\tde"))
> │ > 
> │ > ── [ 36.98ms - return value ] 
> ──────────────────────────────────────────────────
> │ > │ <details open="open" 
> class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>Success (JString &quot;ab	
> de&quot;, { lines = 
> │ > [|&quot;&quot;ab\tde&quot;&quot;|]<br />
> position = {
> │ > line = 0<br />                                         
> column = 8 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>(JString &quot;ab	de&quot;, { 
> lines = 
> │ > [|&quot;&quot;ab\tde&quot;&quot;|]<br />  position = { line
> = 0<br />
> │ > column = 8 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m1</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>JString &quot;ab	
> │ > 
> de&quot;</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><
> │ > td>Item</td><td><div class="dni-plaintext"><pre>&quot;ab	
> de&quot;
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> │ > d><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{
> │ > lines = [|&quot;&quot;ab\tde&quot;&quot;|]<br />  position 
> = { line = 0<br />
> │ > column = 8 } 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > s</td><td><div class="dni-plaintext"><pre>[ 
> &quot;ab\tde&quot; 
> │ > ]</pre></div></td></tr><tr><td>position</td><td><details 
> │ > class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ line = 0<br />
> │ > column = 8 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > </td><td><div class="dni-plaintext"><pre>0
> │ > │ 
> </pre></div></td></tr><tr><td>column</td><td><div 
> │ > class="dni-plaintext"><pre>8
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> │ > 
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> │ > ble></div></details><style>
> │ > │ .dni-code-hint {
> │ > │     font-style: italic;
> │ > │     overflow: hidden;
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview {
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview td {
> │ > │     vertical-align: top;
> │ > │     text-align: start;
> │ > │ }
> │ > │ details.dni-treeview {
> │ > │     padding-left: 1em;
> │ > │ }
> │ > │ table td {
> │ > │     text-align: start;
> │ > │ }
> │ > │ table tr { 
> │ > │     vertical-align: top; 
> │ > │     margin: 0em 0px;
> │ > │ }
> │ > │ table tr td pre 
> │ > │ { 
> │ > │     vertical-align: top !important; 
> │ > │     margin: 0em 0px !important;
> │ > │ } 
> │ > │ table th {
> │ > │     text-align: start;
> │ > │ }
> │ > │ </style>
> │ > 
> │ > ── [ 38.68ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ JString "ab	de"
> │ > │ JString "ab	de"
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > run jString "\"ab\\u263Ade\""
> │ > |> parserEqual (Success (JString "ab☺de"))
> │ > 
> │ > ── [ 39.29ms - return value ] 
> ──────────────────────────────────────────────────
> │ > │ <details open="open" 
> class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>Success (JString 
> &quot;ab☺de&quot;, { lines = 
> │ > [|&quot;&quot;ab\u263Ade&quot;&quot;|]<br />
> position
> │ > = { line = 0<br />                                         
> column = 12 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>(JString &quot;ab☺de&quot;, { 
> lines = 
> │ > [|&quot;&quot;ab\u263Ade&quot;&quot;|]<br />  position = { 
> line = 0<br />
> │ > column = 12 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m1</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>JString 
> │ > 
> &quot;ab☺de&quot;</code></span></summary><div><table><thead><tr></tr></thead><tb
> │ > ody><tr><td>Item</td><td><div 
> class="dni-plaintext"><pre>&quot;ab☺de&quot;
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> │ > d><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{
> │ > lines = [|&quot;&quot;ab\u263Ade&quot;&quot;|]<br />  
> position = { line = 0<br 
> │ > />               column = 12 } 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > s</td><td><div class="dni-plaintext"><pre>[ 
> &quot;ab\u263Ade&quot; 
> │ > ]</pre></div></td></tr><tr><td>position</td><td><details 
> │ > class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ line = 0<br />
> │ > column = 12 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > </td><td><div class="dni-plaintext"><pre>0
> │ > │ 
> </pre></div></td></tr><tr><td>column</td><td><div 
> │ > class="dni-plaintext"><pre>12
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> │ > 
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> │ > ble></div></details><style>
> │ > │ .dni-code-hint {
> │ > │     font-style: italic;
> │ > │     overflow: hidden;
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview {
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview td {
> │ > │     vertical-align: top;
> │ > │     text-align: start;
> │ > │ }
> │ > │ details.dni-treeview {
> │ > │     padding-left: 1em;
> │ > │ }
> │ > │ table td {
> │ > │     text-align: start;
> │ > │ }
> │ > │ table tr { 
> │ > │     vertical-align: top; 
> │ > │     margin: 0em 0px;
> │ > │ }
> │ > │ table tr td pre 
> │ > │ { 
> │ > │     vertical-align: top !important; 
> │ > │     margin: 0em 0px !important;
> │ > │ } 
> │ > │ table th {
> │ > │     text-align: start;
> │ > │ }
> │ > │ </style>
> │ > 
> │ > ── [ 41.08ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ JString "ab☺de"
> │ > │ JString "ab☺de"
> │ > │ 
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### jNumber
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let jNumber =
> │ >     let optSign = opt (pchar '-')
> │ > 
> │ >     let zero = pstring "0"
> │ > 
> │ >     let digitOneNine =
> │ >         satisfy (fun ch -> Char.IsDigit ch && ch <> '0') 
> "1-9"
> │ > 
> │ >     let digit =
> │ >         satisfy Char.IsDigit "digit"
> │ > 
> │ >     let point = pchar '.'
> │ > 
> │ >     let e = pchar 'e' <|> pchar 'E'
> │ > 
> │ >     let optPlusMinus = opt (pchar '-' <|> pchar '+')
> │ > 
> │ >     let nonZeroInt =
> │ >         digitOneNine .>>. manyChars digit
> │ >         |>> fun (first, rest) -> string first + rest
> │ > 
> │ >     let intPart = zero <|> nonZeroInt
> │ > 
> │ >     let fractionPart = point >>. manyChars1 digit
> │ > 
> │ >     let exponentPart = e >>. optPlusMinus .>>. manyChars1 
> digit
> │ > 
> │ >     let inline (|>?) opt f =
> │ >         match opt with
> │ >         | None -> ""
> │ >         | Some x -> f x
> │ > 
> │ >     let inline convertToJNumber (((optSign, intPart), 
> fractionPart), expPart) =
> │ >         let signStr =
> │ >             optSign
> │ >             |>? string
> │ > 
> │ >         let fractionPartStr =
> │ >             fractionPart
> │ >             |>? (fun digits -> "." + digits)
> │ > 
> │ >         let expPartStr =
> │ >             expPart
> │ >             |>? fun (optSign, digits) ->
> │ >                 let sign = optSign |>? string
> │ >                 "e" + sign + digits
> │ > 
> │ >         (signStr + intPart + fractionPartStr + expPartStr)
> │ >         |> float
> │ >         |> JNumber
> │ > 
> │ >     optSign .>>. intPart .>>. opt fractionPart .>>. opt 
> exponentPart
> │ >     |>> convertToJNumber
> │ >     <?> "number"
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > jValueRef <|
> │ >     choice
> │ >         [[
> │ >             jNull
> │ >             jBool
> │ >             jString
> │ >             jNumber
> │ >         ]]
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > run jNumber "123"
> │ > |> parserEqual (Success (JNumber 123.0))
> │ > 
> │ > ── [ 55.67ms - return value ] 
> ──────────────────────────────────────────────────
> │ > │ <details open="open" 
> class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>Success (JNumber 123.0, { lines
> = 
> │ > [|&quot;123&quot;|]<br />                          position
> = { line = 0<br />
> │ > column = 3 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>(JNumber 123.0, { lines = 
> [|&quot;123&quot;|]<br />
> │ > position = { line = 0<br />               column = 3 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m1</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>JNumber 
> │ > 
> 123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>
> │ > Item</td><td><div class="dni-plaintext"><pre>123.0
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> │ > d><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{
> │ > lines = [|&quot;123&quot;|]<br />  position = { line = 0<br
> />               
> │ > column = 3 } 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > s</td><td><div class="dni-plaintext"><pre>[ 123 
> │ > ]</pre></div></td></tr><tr><td>position</td><td><details 
> │ > class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ line = 0<br />
> │ > column = 3 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > </td><td><div class="dni-plaintext"><pre>0
> │ > │ 
> </pre></div></td></tr><tr><td>column</td><td><div 
> │ > class="dni-plaintext"><pre>3
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> │ > 
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> │ > ble></div></details><style>
> │ > │ .dni-code-hint {
> │ > │     font-style: italic;
> │ > │     overflow: hidden;
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview {
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview td {
> │ > │     vertical-align: top;
> │ > │     text-align: start;
> │ > │ }
> │ > │ details.dni-treeview {
> │ > │     padding-left: 1em;
> │ > │ }
> │ > │ table td {
> │ > │     text-align: start;
> │ > │ }
> │ > │ table tr { 
> │ > │     vertical-align: top; 
> │ > │     margin: 0em 0px;
> │ > │ }
> │ > │ table tr td pre 
> │ > │ { 
> │ > │     vertical-align: top !important; 
> │ > │     margin: 0em 0px !important;
> │ > │ } 
> │ > │ table th {
> │ > │     text-align: start;
> │ > │ }
> │ > │ </style>
> │ > 
> │ > ── [ 57.27ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ JNumber 123.0
> │ > │ JNumber 123.0
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > run jNumber "-123"
> │ > |> parserEqual (Success (JNumber -123.0))
> │ > 
> │ > ── [ 36.52ms - return value ] 
> ──────────────────────────────────────────────────
> │ > │ <details open="open" 
> class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>Success (JNumber -123.0, { 
> lines = 
> │ > [|&quot;-123&quot;|]<br />                           
> position = { line = 0<br />
> │ > column = 4 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>(JNumber -123.0, { lines = 
> [|&quot;-123&quot;|]<br 
> │ > />  position = { line = 0<br />               column = 4 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m1</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>JNumber 
> │ > 
> -123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td
> │ > >Item</td><td><div class="dni-plaintext"><pre>-123.0
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> │ > d><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{
> │ > lines = [|&quot;-123&quot;|]<br />  position = { line = 
> 0<br />               
> │ > column = 4 } 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > s</td><td><div class="dni-plaintext"><pre>[ -123 
> │ > ]</pre></div></td></tr><tr><td>position</td><td><details 
> │ > class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ line = 0<br />
> │ > column = 4 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > </td><td><div class="dni-plaintext"><pre>0
> │ > │ 
> </pre></div></td></tr><tr><td>column</td><td><div 
> │ > class="dni-plaintext"><pre>4
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> │ > 
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> │ > ble></div></details><style>
> │ > │ .dni-code-hint {
> │ > │     font-style: italic;
> │ > │     overflow: hidden;
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview {
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview td {
> │ > │     vertical-align: top;
> │ > │     text-align: start;
> │ > │ }
> │ > │ details.dni-treeview {
> │ > │     padding-left: 1em;
> │ > │ }
> │ > │ table td {
> │ > │     text-align: start;
> │ > │ }
> │ > │ table tr { 
> │ > │     vertical-align: top; 
> │ > │     margin: 0em 0px;
> │ > │ }
> │ > │ table tr td pre 
> │ > │ { 
> │ > │     vertical-align: top !important; 
> │ > │     margin: 0em 0px !important;
> │ > │ } 
> │ > │ table th {
> │ > │     text-align: start;
> │ > │ }
> │ > │ </style>
> │ > 
> │ > ── [ 38.01ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ JNumber -123.0
> │ > │ JNumber -123.0
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > run jNumber "123.4"
> │ > |> parserEqual (Success (JNumber 123.4))
> │ > 
> │ > ── [ 37.15ms - return value ] 
> ──────────────────────────────────────────────────
> │ > │ <details open="open" 
> class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>Success (JNumber 123.4, { lines
> = 
> │ > [|&quot;123.4&quot;|]<br />                          
> position = { line = 0<br />
> │ > column = 5 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>(JNumber 123.4, { lines = 
> [|&quot;123.4&quot;|]<br 
> │ > />  position = { line = 0<br />               column = 5 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m1</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>JNumber 
> │ > 
> 123.4</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>
> │ > Item</td><td><div class="dni-plaintext"><pre>123.4
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> │ > d><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{
> │ > lines = [|&quot;123.4&quot;|]<br />  position = { line = 
> 0<br />               
> │ > column = 5 } 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > s</td><td><div class="dni-plaintext"><pre>[ 123.4 
> │ > ]</pre></div></td></tr><tr><td>position</td><td><details 
> │ > class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ line = 0<br />
> │ > column = 5 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > </td><td><div class="dni-plaintext"><pre>0
> │ > │ 
> </pre></div></td></tr><tr><td>column</td><td><div 
> │ > class="dni-plaintext"><pre>5
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> │ > 
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> │ > ble></div></details><style>
> │ > │ .dni-code-hint {
> │ > │     font-style: italic;
> │ > │     overflow: hidden;
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview {
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview td {
> │ > │     vertical-align: top;
> │ > │     text-align: start;
> │ > │ }
> │ > │ details.dni-treeview {
> │ > │     padding-left: 1em;
> │ > │ }
> │ > │ table td {
> │ > │     text-align: start;
> │ > │ }
> │ > │ table tr { 
> │ > │     vertical-align: top; 
> │ > │     margin: 0em 0px;
> │ > │ }
> │ > │ table tr td pre 
> │ > │ { 
> │ > │     vertical-align: top !important; 
> │ > │     margin: 0em 0px !important;
> │ > │ } 
> │ > │ table th {
> │ > │     text-align: start;
> │ > │ }
> │ > │ </style>
> │ > 
> │ > ── [ 38.88ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ JNumber 123.4
> │ > │ JNumber 123.4
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > run jNumber "-123."
> │ > |> parserEqual (Success (JNumber -123.0))
> │ > 
> │ > ── [ 35.87ms - return value ] 
> ──────────────────────────────────────────────────
> │ > │ <details open="open" 
> class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>Success (JNumber -123.0, { 
> lines = 
> │ > [|&quot;-123.&quot;|]<br />                           
> position = { line = 0<br 
> │ > />                                        column = 4 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>(JNumber -123.0, { lines = 
> [|&quot;-123.&quot;|]<br 
> │ > />  position = { line = 0<br />               column = 4 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m1</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>JNumber 
> │ > 
> -123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td
> │ > >Item</td><td><div class="dni-plaintext"><pre>-123.0
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> │ > d><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{
> │ > lines = [|&quot;-123.&quot;|]<br />  position = { line = 
> 0<br />               
> │ > column = 4 } 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > s</td><td><div class="dni-plaintext"><pre>[ -123. 
> │ > ]</pre></div></td></tr><tr><td>position</td><td><details 
> │ > class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ line = 0<br />
> │ > column = 4 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > </td><td><div class="dni-plaintext"><pre>0
> │ > │ 
> </pre></div></td></tr><tr><td>column</td><td><div 
> │ > class="dni-plaintext"><pre>4
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> │ > 
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> │ > ble></div></details><style>
> │ > │ .dni-code-hint {
> │ > │     font-style: italic;
> │ > │     overflow: hidden;
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview {
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview td {
> │ > │     vertical-align: top;
> │ > │     text-align: start;
> │ > │ }
> │ > │ details.dni-treeview {
> │ > │     padding-left: 1em;
> │ > │ }
> │ > │ table td {
> │ > │     text-align: start;
> │ > │ }
> │ > │ table tr { 
> │ > │     vertical-align: top; 
> │ > │     margin: 0em 0px;
> │ > │ }
> │ > │ table tr td pre 
> │ > │ { 
> │ > │     vertical-align: top !important; 
> │ > │     margin: 0em 0px !important;
> │ > │ } 
> │ > │ table th {
> │ > │     text-align: start;
> │ > │ }
> │ > │ </style>
> │ > 
> │ > ── [ 37.42ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ JNumber -123.0
> │ > │ JNumber -123.0
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > run jNumber "00.1"
> │ > |> parserEqual (Success (JNumber 0.0))
> │ > 
> │ > ── [ 35.70ms - return value ] 
> ──────────────────────────────────────────────────
> │ > │ <details open="open" 
> class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>Success (JNumber 0.0, { lines =│ > [|&quot;00.1&quot;|]<br />                        position 
> = { line = 0<br />
> │ > column = 1 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>(JNumber 0.0, { lines = 
> [|&quot;00.1&quot;|]<br />  
> │ > position = { line = 0<br />               column = 1 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m1</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>JNumber 
> │ > 
> 0.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>It
> │ > em</td><td><div class="dni-plaintext"><pre>0.0
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> │ > d><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{
> │ > lines = [|&quot;00.1&quot;|]<br />  position = { line = 
> 0<br />               
> │ > column = 1 } 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > s</td><td><div class="dni-plaintext"><pre>[ 00.1 
> │ > ]</pre></div></td></tr><tr><td>position</td><td><details 
> │ > class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ line = 0<br />
> │ > column = 1 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > </td><td><div class="dni-plaintext"><pre>0
> │ > │ 
> </pre></div></td></tr><tr><td>column</td><td><div 
> │ > class="dni-plaintext"><pre>1
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> │ > 
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> │ > ble></div></details><style>
> │ > │ .dni-code-hint {
> │ > │     font-style: italic;
> │ > │     overflow: hidden;
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview {
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview td {
> │ > │     vertical-align: top;
> │ > │     text-align: start;
> │ > │ }
> │ > │ details.dni-treeview {
> │ > │     padding-left: 1em;
> │ > │ }
> │ > │ table td {
> │ > │     text-align: start;
> │ > │ }
> │ > │ table tr { 
> │ > │     vertical-align: top; 
> │ > │     margin: 0em 0px;
> │ > │ }
> │ > │ table tr td pre 
> │ > │ { 
> │ > │     vertical-align: top !important; 
> │ > │     margin: 0em 0px !important;
> │ > │ } 
> │ > │ table th {
> │ > │     text-align: start;
> │ > │ }
> │ > │ </style>
> │ > 
> │ > ── [ 37.31ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ JNumber 0.0
> │ > │ JNumber 0.0
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > let jNumber_ = jNumber .>> spaces1
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > run jNumber_ "123"
> │ > |> parserEqual (Success (JNumber 123.0))
> │ > 
> │ > ── [ 37.79ms - return value ] 
> ──────────────────────────────────────────────────
> │ > │ <details open="open" 
> class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>Success (JNumber 123.0, { lines
> = 
> │ > [|&quot;123&quot;|]<br />                          position
> = { line = 1<br />
> │ > column = 0 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>(JNumber 123.0, { lines = 
> [|&quot;123&quot;|]<br />
> │ > position = { line = 1<br />               column = 0 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m1</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>JNumber 
> │ > 
> 123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>
> │ > Item</td><td><div class="dni-plaintext"><pre>123.0
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> │ > d><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{
> │ > lines = [|&quot;123&quot;|]<br />  position = { line = 1<br
> />               
> │ > column = 0 } 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > s</td><td><div class="dni-plaintext"><pre>[ 123 
> │ > ]</pre></div></td></tr><tr><td>position</td><td><details 
> │ > class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ line = 1<br />
> │ > column = 0 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > </td><td><div class="dni-plaintext"><pre>1
> │ > │ 
> </pre></div></td></tr><tr><td>column</td><td><div 
> │ > class="dni-plaintext"><pre>0
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> │ > 
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> │ > ble></div></details><style>
> │ > │ .dni-code-hint {
> │ > │     font-style: italic;
> │ > │     overflow: hidden;
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview {
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview td {
> │ > │     vertical-align: top;
> │ > │     text-align: start;
> │ > │ }
> │ > │ details.dni-treeview {
> │ > │     padding-left: 1em;
> │ > │ }
> │ > │ table td {
> │ > │     text-align: start;
> │ > │ }
> │ > │ table tr { 
> │ > │     vertical-align: top; 
> │ > │     margin: 0em 0px;
> │ > │ }
> │ > │ table tr td pre 
> │ > │ { 
> │ > │     vertical-align: top !important; 
> │ > │     margin: 0em 0px !important;
> │ > │ } 
> │ > │ table th {
> │ > │     text-align: start;
> │ > │ }
> │ > │ </style>
> │ > 
> │ > ── [ 39.27ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ JNumber 123.0
> │ > │ JNumber 123.0
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > run jNumber_ "-123"
> │ > |> parserEqual (Success (JNumber -123.0))
> │ > 
> │ > ── [ 35.82ms - return value ] 
> ──────────────────────────────────────────────────
> │ > │ <details open="open" 
> class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>Success (JNumber -123.0, { 
> lines = 
> │ > [|&quot;-123&quot;|]<br />                           
> position = { line = 1<br />
> │ > column = 0 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>(JNumber -123.0, { lines = 
> [|&quot;-123&quot;|]<br 
> │ > />  position = { line = 1<br />               column = 0 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m1</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>JNumber 
> │ > 
> -123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td
> │ > >Item</td><td><div class="dni-plaintext"><pre>-123.0
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> │ > d><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{
> │ > lines = [|&quot;-123&quot;|]<br />  position = { line = 
> 1<br />               
> │ > column = 0 } 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > s</td><td><div class="dni-plaintext"><pre>[ -123 
> │ > ]</pre></div></td></tr><tr><td>position</td><td><details 
> │ > class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ line = 1<br />
> │ > column = 0 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > </td><td><div class="dni-plaintext"><pre>1
> │ > │ 
> </pre></div></td></tr><tr><td>column</td><td><div 
> │ > class="dni-plaintext"><pre>0
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> │ > 
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> │ > ble></div></details><style>
> │ > │ .dni-code-hint {
> │ > │     font-style: italic;
> │ > │     overflow: hidden;
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview {
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview td {
> │ > │     vertical-align: top;
> │ > │     text-align: start;
> │ > │ }
> │ > │ details.dni-treeview {
> │ > │     padding-left: 1em;
> │ > │ }
> │ > │ table td {
> │ > │     text-align: start;
> │ > │ }
> │ > │ table tr { 
> │ > │     vertical-align: top; 
> │ > │     margin: 0em 0px;
> │ > │ }
> │ > │ table tr td pre 
> │ > │ { 
> │ > │     vertical-align: top !important; 
> │ > │     margin: 0em 0px !important;
> │ > │ } 
> │ > │ table th {
> │ > │     text-align: start;
> │ > │ }
> │ > │ </style>
> │ > 
> │ > ── [ 37.35ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ JNumber -123.0
> │ > │ JNumber -123.0
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > run jNumber_ "-123."
> │ > |> parserEqual (
> │ >     Failure (
> │ >         "number andThen many1 whitespace",
> │ >         "Unexpected '.'",
> │ >         { currentLine = "-123."; line = 0; column = 4 }
> │ >     )
> │ > )
> │ > 
> │ > ── [ 32.63ms - return value ] 
> ──────────────────────────────────────────────────
> │ > │ <details open="open" 
> class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>Failure<br />  (&quot;number 
> andThen many1 
> │ > whitespace&quot;, &quot;Unexpected &#39;.&#39;&quot;, { 
> currentLine = 
> │ > &quot;-123.&quot;<br />
> │ > line = 0<br />
> column =
> │ > 4 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m1</td><td><div class="dni-plaintext"><pre>&quot;number 
> andThen many1 
> │ > whitespace&quot;
> │ > │ 
> </pre></div></td></tr><tr><td>Item2</td><td><div 
> │ > class="dni-plaintext"><pre>&quot;Unexpected 
> &#39;.&#39;&quot;
> │ > │ 
> </pre></div></td></tr><tr><td>Item3</td><td><details 
> │ > class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ currentLine = 
> │ > &quot;-123.&quot;<br />  line = 0<br />  column = 4 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr
> │ > entLine</td><td><div 
> class="dni-plaintext"><pre>&quot;-123.&quot;
> │ > │ 
> </pre></div></td></tr><tr><td>line</td><td><div 
> │ > class="dni-plaintext"><pre>0
> │ > │ 
> </pre></div></td></tr><tr><td>column</td><td><div 
> │ > class="dni-plaintext"><pre>4
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> │ > </div></details><style>
> │ > │ .dni-code-hint {
> │ > │     font-style: italic;
> │ > │     overflow: hidden;
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview {
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview td {
> │ > │     vertical-align: top;
> │ > │     text-align: start;
> │ > │ }
> │ > │ details.dni-treeview {
> │ > │     padding-left: 1em;
> │ > │ }
> │ > │ table td {
> │ > │     text-align: start;
> │ > │ }
> │ > │ table tr { 
> │ > │     vertical-align: top; 
> │ > │     margin: 0em 0px;
> │ > │ }
> │ > │ table tr td pre 
> │ > │ { 
> │ > │     vertical-align: top !important; 
> │ > │     margin: 0em 0px !important;
> │ > │ } 
> │ > │ table th {
> │ > │     text-align: start;
> │ > │ }
> │ > │ </style>
> │ > 
> │ > ── [ 33.93ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ Line:0 Col:4 Error parsing number 
> andThen many1 whitespace
> │ > │ -123.
> │ > │     ^Unexpected '.'
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > run jNumber_ "123.4"
> │ > |> parserEqual (Success (JNumber 123.4))
> │ > 
> │ > ── [ 38.80ms - return value ] 
> ──────────────────────────────────────────────────
> │ > │ <details open="open" 
> class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>Success (JNumber 123.4, { lines
> = 
> │ > [|&quot;123.4&quot;|]<br />                          
> position = { line = 1<br />
> │ > column = 0 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>(JNumber 123.4, { lines = 
> [|&quot;123.4&quot;|]<br 
> │ > />  position = { line = 1<br />               column = 0 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m1</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>JNumber 
> │ > 
> 123.4</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>
> │ > Item</td><td><div class="dni-plaintext"><pre>123.4
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> │ > d><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{
> │ > lines = [|&quot;123.4&quot;|]<br />  position = { line = 
> 1<br />               
> │ > column = 0 } 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > s</td><td><div class="dni-plaintext"><pre>[ 123.4 
> │ > ]</pre></div></td></tr><tr><td>position</td><td><details 
> │ > class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ line = 1<br />
> │ > column = 0 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > </td><td><div class="dni-plaintext"><pre>1
> │ > │ 
> </pre></div></td></tr><tr><td>column</td><td><div 
> │ > class="dni-plaintext"><pre>0
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> │ > 
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> │ > ble></div></details><style>
> │ > │ .dni-code-hint {
> │ > │     font-style: italic;
> │ > │     overflow: hidden;
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview {
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview td {
> │ > │     vertical-align: top;
> │ > │     text-align: start;
> │ > │ }
> │ > │ details.dni-treeview {
> │ > │     padding-left: 1em;
> │ > │ }
> │ > │ table td {
> │ > │     text-align: start;
> │ > │ }
> │ > │ table tr { 
> │ > │     vertical-align: top; 
> │ > │     margin: 0em 0px;
> │ > │ }
> │ > │ table tr td pre 
> │ > │ { 
> │ > │     vertical-align: top !important; 
> │ > │     margin: 0em 0px !important;
> │ > │ } 
> │ > │ table th {
> │ > │     text-align: start;
> │ > │ }
> │ > │ </style>
> │ > 
> │ > ── [ 40.26ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ JNumber 123.4
> │ > │ JNumber 123.4
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > run jNumber_ "00.4"
> │ > |> parserEqual (
> │ >     Failure (
> │ >         "number andThen many1 whitespace",
> │ >         "Unexpected '0'",
> │ >         { currentLine = "00.4"; line = 0; column = 1 }
> │ >     )
> │ > )
> │ > 
> │ > ── [ 32.35ms - return value ] 
> ──────────────────────────────────────────────────
> │ > │ <details open="open" 
> class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>Failure<br />  (&quot;number 
> andThen many1 
> │ > whitespace&quot;, &quot;Unexpected &#39;0&#39;&quot;, { 
> currentLine = 
> │ > &quot;00.4&quot;<br />│ > line = 0<br />
> column =
> │ > 1 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m1</td><td><div class="dni-plaintext"><pre>&quot;number 
> andThen many1 
> │ > whitespace&quot;
> │ > │ 
> </pre></div></td></tr><tr><td>Item2</td><td><div 
> │ > class="dni-plaintext"><pre>&quot;Unexpected 
> &#39;0&#39;&quot;
> │ > │ 
> </pre></div></td></tr><tr><td>Item3</td><td><details 
> │ > class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ currentLine = 
> │ > &quot;00.4&quot;<br />  line = 0<br />  column = 1 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr
> │ > entLine</td><td><div 
> class="dni-plaintext"><pre>&quot;00.4&quot;
> │ > │ 
> </pre></div></td></tr><tr><td>line</td><td><div 
> │ > class="dni-plaintext"><pre>0
> │ > │ 
> </pre></div></td></tr><tr><td>column</td><td><div 
> │ > class="dni-plaintext"><pre>1
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> │ > </div></details><style>
> │ > │ .dni-code-hint {
> │ > │     font-style: italic;
> │ > │     overflow: hidden;
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview {
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview td {
> │ > │     vertical-align: top;
> │ > │     text-align: start;
> │ > │ }
> │ > │ details.dni-treeview {
> │ > │     padding-left: 1em;
> │ > │ }
> │ > │ table td {
> │ > │     text-align: start;
> │ > │ }
> │ > │ table tr { 
> │ > │     vertical-align: top; 
> │ > │     margin: 0em 0px;
> │ > │ }
> │ > │ table tr td pre 
> │ > │ { 
> │ > │     vertical-align: top !important; 
> │ > │     margin: 0em 0px !important;
> │ > │ } 
> │ > │ table th {
> │ > │     text-align: start;
> │ > │ }
> │ > │ </style>
> │ > 
> │ > ── [ 33.50ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ Line:0 Col:1 Error parsing number 
> andThen many1 whitespace
> │ > │ 00.4
> │ > │  ^Unexpected '0'
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > run jNumber_ "123e4"
> │ > |> parserEqual (Success (JNumber 1230000.0))
> │ > 
> │ > ── [ 40.18ms - return value ] 
> ──────────────────────────────────────────────────
> │ > │ <details open="open" 
> class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>Success (JNumber 1230000.0, { 
> lines = 
> │ > [|&quot;123e4&quot;|]<br />                              
> position = { line = 
> │ > 1<br />                                           column = 
> 0 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>(JNumber 1230000.0, { lines = 
> │ > [|&quot;123e4&quot;|]<br />  position = { line = 1<br />
> column = 
> │ > 0 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m1</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>JNumber 
> │ > 
> 1230000.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr>
> │ > <td>Item</td><td><div class="dni-plaintext"><pre>1230000.0
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> │ > d><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{
> │ > lines = [|&quot;123e4&quot;|]<br />  position = { line = 
> 1<br />               
> │ > column = 0 } 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > s</td><td><div class="dni-plaintext"><pre>[ 123e4 
> │ > ]</pre></div></td></tr><tr><td>position</td><td><details 
> │ > class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ line = 1<br />
> │ > column = 0 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > </td><td><div class="dni-plaintext"><pre>1
> │ > │ 
> </pre></div></td></tr><tr><td>column</td><td><div 
> │ > class="dni-plaintext"><pre>0
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> │ > 
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> │ > ble></div></details><style>
> │ > │ .dni-code-hint {
> │ > │     font-style: italic;
> │ > │     overflow: hidden;
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview {
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview td {
> │ > │     vertical-align: top;
> │ > │     text-align: start;
> │ > │ }
> │ > │ details.dni-treeview {
> │ > │     padding-left: 1em;
> │ > │ }
> │ > │ table td {
> │ > │     text-align: start;
> │ > │ }
> │ > │ table tr { 
> │ > │     vertical-align: top; 
> │ > │     margin: 0em 0px;
> │ > │ }
> │ > │ table tr td pre 
> │ > │ { 
> │ > │     vertical-align: top !important; 
> │ > │     margin: 0em 0px !important;
> │ > │ } 
> │ > │ table th {
> │ > │     text-align: start;
> │ > │ }
> │ > │ </style>
> │ > 
> │ > ── [ 42.48ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ JNumber 1230000.0
> │ > │ JNumber 1230000.0
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > run jNumber_ "123.4e5"
> │ > |> parserEqual (Success (JNumber 12340000.0))
> │ > 
> │ > ── [ 38.91ms - return value ] 
> ──────────────────────────────────────────────────
> │ > │ <details open="open" 
> class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>Success (JNumber 12340000.0, { 
> lines = 
> │ > [|&quot;123.4e5&quot;|]<br />
> position = { line = 
> │ > 1<br />                                            column =
> 0 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>(JNumber 12340000.0, { lines = 
> │ > [|&quot;123.4e5&quot;|]<br />  position = { line = 1<br />
> column 
> │ > = 0 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m1</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>JNumber 
> │ > 
> 12340000.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr
> │ > ><td>Item</td><td><div 
> class="dni-plaintext"><pre>12340000.0
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> │ > d><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{
> │ > lines = [|&quot;123.4e5&quot;|]<br />  position = { line = 
> 1<br />
> │ > column = 0 } 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > s</td><td><div class="dni-plaintext"><pre>[ 123.4e5 
> │ > ]</pre></div></td></tr><tr><td>position</td><td><details 
> │ > class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ line = 1<br />
> │ > column = 0 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > </td><td><div class="dni-plaintext"><pre>1
> │ > │ 
> </pre></div></td></tr><tr><td>column</td><td><div 
> │ > class="dni-plaintext"><pre>0
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> │ > 
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> │ > ble></div></details><style>
> │ > │ .dni-code-hint {
> │ > │     font-style: italic;
> │ > │     overflow: hidden;
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview {
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview td {
> │ > │     vertical-align: top;
> │ > │     text-align: start;
> │ > │ }
> │ > │ details.dni-treeview {
> │ > │     padding-left: 1em;
> │ > │ }
> │ > │ table td {
> │ > │     text-align: start;
> │ > │ }
> │ > │ table tr { 
> │ > │     vertical-align: top; 
> │ > │     margin: 0em 0px;
> │ > │ }
> │ > │ table tr td pre 
> │ > │ { 
> │ > │     vertical-align: top !important; 
> │ > │     margin: 0em 0px !important;
> │ > │ } 
> │ > │ table th {
> │ > │     text-align: start;
> │ > │ }
> │ > │ </style>
> │ > 
> │ > ── [ 40.40ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ JNumber 12340000.0
> │ > │ JNumber 12340000.0
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > run jNumber_ "123.4e-5"
> │ > |> parserEqual (Success (JNumber 0.001234))
> │ > 
> │ > ── [ 39.01ms - return value ] 
> ──────────────────────────────────────────────────
> │ > │ <details open="open" 
> class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>Success (JNumber 0.001234, { 
> lines = 
> │ > [|&quot;123.4e-5&quot;|]<br />                             
> position = { line = 
> │ > 1<br />                                          column = 0
> } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>(JNumber 0.001234, { lines = 
> │ > [|&quot;123.4e-5&quot;|]<br />  position = { line = 1<br />
> column
> │ > = 0 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m1</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>JNumber 
> │ > 
> 0.001234</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><
> │ > td>Item</td><td><div class="dni-plaintext"><pre>0.001234
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> │ > d><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{
> │ > lines = [|&quot;123.4e-5&quot;|]<br />  position = { line =
> 1<br />
> │ > column = 0 } 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > s</td><td><div class="dni-plaintext"><pre>[ 123.4e-5 
> │ > ]</pre></div></td></tr><tr><td>position</td><td><details 
> │ > class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ line = 1<br />
> │ > column = 0 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > </td><td><div class="dni-plaintext"><pre>1
> │ > │ 
> </pre></div></td></tr><tr><td>column</td><td><div 
> │ > class="dni-plaintext"><pre>0
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> │ > 
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> │ > ble></div></details><style>
> │ > │ .dni-code-hint {
> │ > │     font-style: italic;
> │ > │     overflow: hidden;
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview {
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview td {
> │ > │     vertical-align: top;
> │ > │     text-align: start;
> │ > │ }
> │ > │ details.dni-treeview {
> │ > │     padding-left: 1em;
> │ > │ }
> │ > │ table td {
> │ > │     text-align: start;
> │ > │ }
> │ > │ table tr { 
> │ > │     vertical-align: top; 
> │ > │     margin: 0em 0px;
> │ > │ }
> │ > │ table tr td pre 
> │ > │ { 
> │ > │     vertical-align: top !important; 
> │ > │     margin: 0em 0px !important;
> │ > │ } 
> │ > │ table th {
> │ > │     text-align: start;
> │ > │ }
> │ > │ </style>
> │ > 
> │ > ── [ 40.51ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ JNumber 0.001234
> │ > │ JNumber 0.001234
> │ > │ 
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### jArray
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let jArray =
> │ >     let left = pchar '[[' .>> spaces
> │ >     let right = pchar ']]' .>> spaces
> │ >     let comma = pchar ',' .>> spaces
> │ >     let value = jValue .>> spaces
> │ > 
> │ >     let values = sepBy value comma
> │ > 
> │ >     between left values right
> │ >     |>> JArray
> │ >     <?> "array"
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > jValueRef <|
> │ >     choice
> │ >         [[
> │ >             jNull
> │ >             jBool
> │ >             jString
> │ >             jNumber
> │ >             jArray
> │ >         ]]
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > run jArray "[[ 1, 2 ]]"
> │ > |> parserEqual (Success (JArray [[ JNumber 1.0; JNumber 2.0
> ]]))
> │ > 
> │ > ── [ 80.46ms - return value ] 
> ──────────────────────────────────────────────────
> │ > │ <details open="open" 
> class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>Success (JArray [JNumber 1.0; 
> JNumber 2.0], { lines 
> │ > = [|&quot;[ 1, 2 ]&quot;|]<br />│ > position = { line = 1<br />
> │ > column = 0 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>(JArray [JNumber 1.0; JNumber 
> 2.0], { lines = 
> │ > [|&quot;[ 1, 2 ]&quot;|]<br />  position = { line = 1<br />
> column
> │ > = 0 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m1</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>JArray [JNumber 1.0; JNumber 
> │ > 
> 2.0]</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>I
> │ > 
> tem</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><t
> │ > body><tr><td>0</td><td><details 
> class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>JNumber 
> │ > 
> 1.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>It
> │ > em</td><td><div class="dni-plaintext"><pre>1.0
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><t
> │ > d><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>JNumber 
> │ > 
> 2.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>It
> │ > em</td><td><div class="dni-plaintext"><pre>2.0
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> │ > 
> </td></tr></tbody></table></div></details></td></tr><tr><td>Item2</td><td><detai
> │ > ls class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ lines = 
> │ > [|&quot;[ 1, 2 ]&quot;|]<br />  position = { line = 1<br />
> column
> │ > = 0 } 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > s</td><td><div class="dni-plaintext"><pre>[ [ 1, 2 ] 
> │ > ]</pre></div></td></tr><tr><td>position</td><td><details 
> │ > class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ line = 1<br />
> │ > column = 0 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > </td><td><div class="dni-plaintext"><pre>1
> │ > │ 
> </pre></div></td></tr><tr><td>column</td><td><div 
> │ > class="dni-plaintext"><pre>0
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> │ > 
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> │ > ble></div></details><style>
> │ > │ .dni-code-hint {
> │ > │     font-style: italic;
> │ > │     overflow: hidden;
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview {
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview td {
> │ > │     vertical-align: top;
> │ > │     text-align: start;
> │ > │ }
> │ > │ details.dni-treeview {
> │ > │     padding-left: 1em;
> │ > │ }
> │ > │ table td {
> │ > │     text-align: start;
> │ > │ }
> │ > │ table tr { 
> │ > │     vertical-align: top; 
> │ > │     margin: 0em 0px;
> │ > │ }
> │ > │ table tr td pre 
> │ > │ { 
> │ > │     vertical-align: top !important; 
> │ > │     margin: 0em 0px !important;
> │ > │ } 
> │ > │ table th {
> │ > │     text-align: start;
> │ > │ }
> │ > │ </style>
> │ > 
> │ > ── [ 82.35ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ JArray [JNumber 1.0; JNumber 2.0]
> │ > │ JArray [JNumber 1.0; JNumber 2.0]
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > run jArray "[[ 1, 2, ]]"
> │ > |> parserEqual (
> │ >     Failure (
> │ >         "array",
> │ >         "Unexpected ','",
> │ >         { currentLine = "[[ 1, 2, ]]"; line = 0; column = 6
> }
> │ >     )
> │ > )
> │ > 
> │ > ── [ 38.37ms - return value ] 
> ──────────────────────────────────────────────────
> │ > │ <details open="open" 
> class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>Failure (&quot;array&quot;, 
> &quot;Unexpected 
> │ > &#39;,&#39;&quot;, { currentLine = &quot;[ 1, 2, ]&quot;<br
> />
> │ > line = 0<br />                                      column 
> = 6 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m1</td><td><div 
> class="dni-plaintext"><pre>&quot;array&quot;
> │ > │ 
> </pre></div></td></tr><tr><td>Item2</td><td><div 
> │ > class="dni-plaintext"><pre>&quot;Unexpected 
> &#39;,&#39;&quot;
> │ > │ 
> </pre></div></td></tr><tr><td>Item3</td><td><details 
> │ > class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ currentLine = 
> │ > &quot;[ 1, 2, ]&quot;<br />  line = 0<br />  column = 6 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr
> │ > entLine</td><td><div class="dni-plaintext"><pre>&quot;[ 1, 
> 2, ]&quot;
> │ > │ 
> </pre></div></td></tr><tr><td>line</td><td><div 
> │ > class="dni-plaintext"><pre>0
> │ > │ 
> </pre></div></td></tr><tr><td>column</td><td><div 
> │ > class="dni-plaintext"><pre>6
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> │ > </div></details><style>
> │ > │ .dni-code-hint {
> │ > │     font-style: italic;
> │ > │     overflow: hidden;
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview {
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview td {
> │ > │     vertical-align: top;
> │ > │     text-align: start;
> │ > │ }
> │ > │ details.dni-treeview {
> │ > │     padding-left: 1em;
> │ > │ }
> │ > │ table td {
> │ > │     text-align: start;
> │ > │ }
> │ > │ table tr { 
> │ > │     vertical-align: top; 
> │ > │     margin: 0em 0px;
> │ > │ }
> │ > │ table tr td pre 
> │ > │ { 
> │ > │     vertical-align: top !important; 
> │ > │     margin: 0em 0px !important;
> │ > │ } 
> │ > │ table th {
> │ > │     text-align: start;
> │ > │ }
> │ > │ </style>
> │ > 
> │ > ── [ 39.54ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ Line:0 Col:6 Error parsing array
> │ > │ [ 1, 2, ]
> │ > │       ^Unexpected ','
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### jObject
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let jObject =
> │ >     let left = spaces >>. pchar '{' .>> spaces
> │ >     let right = pchar '}' .>> spaces
> │ >     let colon = pchar ':' .>> spaces
> │ >     let comma = pchar ',' .>> spaces
> │ >     let key = quotedString .>> spaces
> │ >     let value = jValue .>> spaces
> │ > 
> │ >     let keyValue = (key .>> colon) .>>. value
> │ >     let keyValues = sepBy keyValue comma
> │ > 
> │ >     between left keyValues right
> │ >     |>> Map.ofList
> │ >     |>> JObject
> │ >     <?> "object"
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > jValueRef <|
> │ >     choice
> │ >         [[
> │ >             jNull
> │ >             jBool
> │ >             jString
> │ >             jNumber
> │ >             jArray
> │ >             jObject
> │ >         ]]
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > run jObject """{ "a":1, "b"  :  2 }"""
> │ > |> parserEqual (
> │ >     Success (
> │ >         JObject (
> │ >             Map.ofList [[
> │ >                 "a", JNumber 1.0
> │ >                 "b", JNumber 2.0
> │ >             ]]
> │ >         )
> │ >     )
> │ > )
> │ > 
> │ > ── [ 84.02ms - return value ] 
> ──────────────────────────────────────────────────
> │ > │ <details open="open" 
> class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>Success<br />  (JObject (map 
> [(&quot;a&quot;, 
> │ > JNumber 1.0); (&quot;b&quot;, JNumber 2.0)]),<br />   { 
> lines = [|&quot;{ 
> │ > &quot;a&quot;:1, &quot;b&quot;  :  2 }&quot;|]<br />     
> position = { line = 
> │ > 1<br />                  column = 0 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>(JObject (map [(&quot;a&quot;, 
> JNumber 1.0); 
> │ > (&quot;b&quot;, JNumber 2.0)]), { lines = [|&quot;{ 
> &quot;a&quot;:1, 
> │ > &quot;b&quot;  :  2 }&quot;|]<br />  position = { line = 
> 1<br />               
> │ > column = 0 } 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m1</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>JObject (map [(&quot;a&quot;, 
> JNumber 1.0); 
> │ > (&quot;b&quot;, JNumber 
> │ > 
> 2.0)])</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td
> │ > 
> >Item</td><td><table><thead><tr><th><i>key</i></th><th>value</th></tr></thead><t
> │ > body><tr><td><div class="dni-plaintext"><pre>&quot;a&quot;
> │ > │ </pre></div></td><td><details 
> │ > class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JNumber 
> │ > 
> 1.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>It
> │ > em</td><td><div class="dni-plaintext"><pre>1.0
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td><div 
> │ > class="dni-plaintext"><pre>&quot;b&quot;
> │ > │ 
> │ > 
> </pre></d...le></td></tr></tbody></table></div></details></td></tr><tr><td>Item2
> │ > </td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>{ lines = [|&quot;{ 
> &quot;a&quot;:1, &quot;b&quot;  
> │ > :  2 }&quot;|]<br />  position = { line = 1<br />
> column = 0 } 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > s</td><td><div class="dni-plaintext"><pre>[ { 
> &quot;a&quot;:1, &quot;b&quot;  :
> │ > 2 } 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> │ > class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ line = 1<br />
> │ > column = 0 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > </td><td><div class="dni-plaintext"><pre>1
> │ > │ 
> </pre></div></td></tr><tr><td>column</td><td><div 
> │ > class="dni-plaintext"><pre>0
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> │ > 
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> │ > ble></div></details><style>
> │ > │ .dni-code-hint {
> │ > │     font-style: italic;
> │ > │     overflow: hidden;
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview {
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview td {
> │ > │     vertical-align: top;
> │ > │     text-align: start;
> │ > │ }
> │ > │ details.dni-treeview {
> │ > │     padding-left: 1em;
> │ > │ }
> │ > │ table td {
> │ > │     text-align: start;
> │ > │ }
> │ > │ table tr { 
> │ > │     vertical-align: top; 
> │ > │     margin: 0em 0px;
> │ > │ }
> │ > │ table tr td pre 
> │ > │ { 
> │ > │     vertical-align: top !important; 
> │ > │     margin: 0em 0px !important;
> │ > │ } 
> │ > │ table th {
> │ > │     text-align: start;
> │ > │ }
> │ > │ </style>
> │ > 
> │ > ── [ 85.91ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ JObject (map [("a", JNumber 1.0); ("b", 
> JNumber 2.0)])
> │ > │ JObject (map [("a", JNumber 1.0); ("b", 
> JNumber 2.0)])
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > run jObject """{ "a":1, "b"  :  2, }"""
> │ > |> parserEqual (
> │ >     Failure (
> │ >         "object",
> │ >         "Unexpected ','",
> │ >         { currentLine = """{ "a":1, "b"  :  2, }"""; line =
> 0; column = 18 }
> │ >     )
> │ > )
> │ > 
> │ > ── [ 43.61ms - return value ] 
> ──────────────────────────────────────────────────
> │ > │ <details open="open" 
> class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>Failure (&quot;object&quot;, 
> &quot;Unexpected 
> │ > &#39;,&#39;&quot;, { currentLine = &quot;{ &quot;a&quot;:1,
> &quot;b&quot;  :  2,
> │ > }&quot;<br />                                       line = 
> 0<br />
> │ > column = 18 
> │ > 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> │ > m1</td><td><div 
> class="dni-plaintext"><pre>&quot;object&quot;
> │ > │ 
> </pre></div></td></tr><tr><td>Item2</td><td><div 
> │ > class="dni-plaintext"><pre>&quot;Unexpected 
> &#39;,&#39;&quot;
> │ > │ 
> </pre></div></td></tr><tr><td>Item3</td><td><details 
> │ > class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ currentLine = 
> │ > &quot;{ &quot;a&quot;:1, &quot;b&quot;  :  2, }&quot;<br />
> line = 0<br />  
> │ > column = 18 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr
> │ > entLine</td><td><div class="dni-plaintext"><pre>&quot;{ 
> &quot;a&quot;:1, 
> │ > &quot;b&quot;  :  2, }&quot;
> │ > │ 
> </pre></div></td></tr><tr><td>line</td><td><div 
> │ > class="dni-plaintext"><pre>0
> │ > │ 
> </pre></div></td></tr><tr><td>column</td><td><div 
> │ > class="dni-plaintext"><pre>18
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> │ > </div></details><style>
> │ > │ .dni-code-hint {
> │ > │     font-style: italic;
> │ > │     overflow: hidden;
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview {
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview td {
> │ > │     vertical-align: top;
> │ > │     text-align: start;
> │ > │ }
> │ > │ details.dni-treeview {
> │ > │     padding-left: 1em;
> │ > │ }
> │ > │ table td {
> │ > │     text-align: start;
> │ > │ }
> │ > │ table tr { 
> │ > │     vertical-align: top; 
> │ > │     margin: 0em 0px;
> │ > │ }
> │ > │ table tr td pre 
> │ > │ { 
> │ > │     vertical-align: top !important; 
> │ > │     margin: 0em 0px !important;
> │ > │ } 
> │ > │ table th {
> │ > │     text-align: start;
> │ > │ }
> │ > │ </style>
> │ > 
> │ > ── [ 44.75ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ Line:0 Col:18 Error parsing object
> │ > │ { "a":1, "b"  :  2, }
> │ > │                   ^Unexpected ','
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### jValue
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > let example1 = """{
> │ >     "name" : "Scott",
> │ >     "isMale" : true,
> │ >     "bday" : {"year":2001, "month":12, "day":25 },
> │ >     "favouriteColors" : [["blue", "green"]],
> │ >     "emptyArray" : [[]],
> │ >     "emptyObject" : {}
> │ > }"""
> │ > run jValue example1
> │ > |> parserEqual (
> │ >     Success (
> │ >         JObject (
> │ >             Map.ofList [[
> │ >                 "name", JString "Scott"
> │ >                 "isMale", JBool true
> │ >                 "bday", JObject (
> │ >                     Map.ofList [[
> │ >                         "year", JNumber 2001.0
> │ >                         "month", JNumber 12.0
> │ >                         "day", JNumber 25.0
> │ >                     ]]
> │ >                 )
> │ >                 "favouriteColors", JArray [[ JString 
> "blue"; JString "green" ]]
> │ >                 "emptyArray", JArray [[]]
> │ >                 "emptyObject", JObject Map.empty
> │ >             ]]
> │ >         )
> │ >     )
> │ > )
> │ > 
> │ > ── [ 162.12ms - return value ] 
> ─────────────────────────────────────────────────
> │ > │ <details open="open" 
> class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>Success<br />  (JObject<br />
> (map<br />        
> │ > [(&quot;bday&quot;,<br />          JObject<br />
> (map<br />
> │ > [(&quot;day&quot;, JNumber 25.0); (&quot;month&quot;, 
> JNumber 12.0);<br />
> │ > (&quot;year&quot;, JNumber 2001.0)])); 
> (&quot;emptyArray&quot;, JArray []);<br 
> │ > />         (&quot;emptyObject&quot;, JObject (map []));<br 
> />         
> │ > (&quot;favouriteColors&quot;, 
> │ > 
> ...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>It
> │ > em</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>(JObject<br />  (map<br />     
> │ > [(&quot;bday&quot;,<br />       JObject<br />         
> (map<br />            
> │ > [(&quot;day&quot;, JNumber 25.0); (&quot;month&quot;, 
> JNumber 12.0);<br />
> │ > (&quot;year&quot;, JNumber 2001.0)])); 
> (&quot;emptyArray&quot;, JArray []);<br 
> │ > />      (&quot;emptyObject&quot;, JObject (map []));<br />│ > (&quot;favouriteColors&quot;, JArray [JString 
> &quot;blue&quot;; JString 
> │ > 
> &quot;gr...</code></span></summary><div><table><thead><tr></tr></thead><tbody><t
> │ > r><td>Item1</td><td><details 
> class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>JObject<br />  (map<br />     
> [(&quot;bday&quot;,<br
> │ > />       JObject<br />         (map<br />            
> [(&quot;day&quot;, JNumber 
> │ > 25.0); (&quot;month&quot;, JNumber 12.0);<br />
> (&quot;year&quot;, 
> │ > JNumber 2001.0)])); (&quot;emptyArray&quot;, JArra...0 } 
> │ > 
> ...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>li
> │ > nes</td><td><div class="dni-plaintext"><pre>[ {,     
> &quot;name&quot; : 
> │ > &quot;Scott&quot;,,     &quot;isMale&quot; : true,,     
> &quot;bday&quot; : 
> │ > {&quot;year&quot;:2001, &quot;month&quot;:12, 
> &quot;day&quot;:25 },,     
> │ > &quot;favouriteColors&quot; : [&quot;blue&quot;, 
> &quot;green&quot;],,     
> │ > &quot;emptyArray&quot; : [],,     &quot;emptyObject&quot; :
> {}, } 
> │ > ]</pre></div></td></tr><tr><td>position</td><td><details 
> │ > class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ line = 8<br />
> │ > column = 0 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > </td><td><div class="dni-plaintext"><pre>8
> │ > │ 
> </pre></div></td></tr><tr><td>column</td><td><div 
> │ > class="dni-plaintext"><pre>0
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> │ > 
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> │ > ble></div></details><style>
> │ > │ .dni-code-hint {
> │ > │     font-style: italic;
> │ > │     overflow: hidden;
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview {
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview td {
> │ > │     vertical-align: top;
> │ > │     text-align: start;
> │ > │ }
> │ > │ details.dni-treeview {
> │ > │     padding-left: 1em;
> │ > │ }
> │ > │ table td {
> │ > │     text-align: start;
> │ > │ }
> │ > │ table tr { 
> │ > │     vertical-align: top; 
> │ > │     margin: 0em 0px;
> │ > │ }
> │ > │ table tr td pre 
> │ > │ { 
> │ > │     vertical-align: top !important; 
> │ > │     margin: 0em 0px !important;
> │ > │ } 
> │ > │ table th {
> │ > │     text-align: start;
> │ > │ }
> │ > │ </style>
> │ > 
> │ > ── [ 163.91ms - stdout ] 
> ───────────────────────────────────────────────────────
> │ > │ JObject
> │ > │   (map
> │ > │      [("bday",
> │ > │        JObject
> │ > │          (map
> │ > │             [("day", JNumber 25.0); 
> ("month", JNumber 12.0);
> │ > │              ("year", JNumber 
> 2001.0)])); ("emptyArray", 
> │ > JArray []);
> │ > │       ("emptyObject", JObject (map []));
> │ > │       ("favouriteColors", JArray 
> [JString "blue"; JString 
> │ > "green"]);
> │ > │       ("isMale", JBool true); ("name", 
> JString "Scott")])
> │ > │ JObject
> │ > │   (map
> │ > │      [("bday", JObject (map [("day", 
> JNumber 25.0); ("month",
> │ > JNumber 12.0); ("year", JNumber 2001.0)]));
> │ > │       ("emptyArray", JArray []); 
> ("emptyObject", JObject (map
> │ > []));
> │ > │       ("favouriteColors", JArray 
> [JString "blue"; JString 
> │ > "green"]); ("isMale", JBool true); ("name", JString 
> "Scott")])
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > let example2 = """{"widget": {
> │ >     "debug": "on",
> │ >     "window": {
> │ >         "title": "Sample Konfabulator Widget",
> │ >         "name": "main_window",
> │ >         "width": 500,
> │ >         "height": 500
> │ >     },
> │ >     "image": {
> │ >         "src": "Images/Sun.png",
> │ >         "name": "sun1",
> │ >         "hOffset": 250,
> │ >         "vOffset": 250,
> │ >         "alignment": "center"
> │ >     },
> │ >     "text": {
> │ >         "data": "Click Here",
> │ >         "size": 36,
> │ >         "style": "bold",
> │ >         "name": "text1",
> │ >         "hOffset": 250,
> │ >         "vOffset": 100,
> │ >         "alignment": "center",
> │ >         "onMouseUp": "sun1.opacity = (sun1.opacity / 100) *
> 90;"
> │ >     }
> │ > }}"""
> │ > 
> │ > run jValue example2
> │ > |> parserEqual (
> │ >     Success (
> │ >         JObject (
> │ >             Map.ofList [[
> │ >                 "widget", JObject (
> │ >                     Map.ofList [[
> │ >                         "debug", JString "on"
> │ >                         "window", JObject (
> │ >                             Map.ofList [[
> │ >                                 "title", JString "Sample 
> Konfabulator Widget"
> │ >                                 "name", JString 
> "main_window"
> │ >                                 "width", JNumber 500.0
> │ >                                 "height", JNumber 500.0
> │ >                             ]]
> │ >                         )
> │ >                         "image", JObject (
> │ >                             Map.ofList [[
> │ >                                 "src", JString 
> "Images/Sun.png"
> │ >                                 "name", JString "sun1"
> │ >                                 "hOffset", JNumber 250.0
> │ >                                 "vOffset", JNumber 250.0
> │ >                                 "alignment", JString 
> "center"
> │ >                             ]]
> │ >                         )
> │ >                         "text", JObject (
> │ >                             Map.ofList [[
> │ >                                 "data", JString "Click 
> Here"
> │ >                                 "size", JNumber 36.0
> │ >                                 "style", JString "bold"
> │ >                                 "name", JString "text1"
> │ >                                 "hOffset", JNumber 250.0
> │ >                                 "vOffset", JNumber 100.0
> │ >                                 "alignment", JString 
> "center"
> │ >                                 "onMouseUp", JString 
> "sun1.opacity = 
> │ > (sun1.opacity / 100) * 90;"
> │ >                             ]]
> │ >                         )
> │ >                     ]]
> │ >                 )
> │ >             ]]
> │ >         )
> │ >     )
> │ > )
> │ > 
> │ > ── [ 318.75ms - return value ] 
> ─────────────────────────────────────────────────
> │ > │ <details open="open" 
> class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>Success<br />  (JObject<br />
> (map<br />        
> │ > [(&quot;widget&quot;,<br />          JObject<br />
> (map<br />
> │ > [(&quot;debug&quot;, JString &quot;on&quot;);<br />│ > (&quot;image&quot;,<br />                 JObject<br />│ > (map<br />                      [(&quot;alignment&quot;, 
> JString 
> │ > &quot;center&quot;);<br />                       
> │ > 
> (&quot;hOffset&quot;...</code></span></summary><div><table><thead><tr></tr></the
> │ > ad><tbody><tr><td>Item</td><td><details 
> class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>(JObject<br />  (map<br />     
> │ > [(&quot;widget&quot;,<br />       JObject<br />         
> (map<br />            
> │ > [(&quot;debug&quot;, JString &quot;on&quot;);<br />│ > (&quot;image&quot;,<br />              JObject<br />
> (map<br />
> │ > [(&quot;alignment&quot;, JString &quot;center&quot;); 
> (&quot;hOffset&quot;, 
> │ > JNumber 250.0);<br />                    (&quot;name&quot;,
> JString 
> │ > 
> &quot;sun1&quot;...</code></span></summary><div><table><thead><tr></tr></thead><
> │ > tbody><tr><td>Item1</td><td><details 
> class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>JObject<br />  (map<br />     
> │ > [(&quot;widget&quot;,<br />       JObject<br />         
> (map<br />            
> │ > [(&quot;debug&quot;, JString &quot;on&quot;);<br />│ > (&quot;image&quot;,<br />              JObject<br />│ > (...ot;center&quot;,     },,     &quot;text&quot;: {,
> &quot;data&quot;: 
> │ > &quot;Click Here&quot;,,         &quot;size&quot;: 36,,│ > &quot;style&quot;: &quot;bold&quot;,,         
> &quot;name&quot;: 
> │ > &quot;text1&quot;,,         &quot;hOffset&quot;: 250,,│ > &quot;vOffset&quot;: 100,,         &quot;alignment&quot;: 
> &quot;center&quot;,,
> │ > &quot;onMouseUp&quot;: &quot;sun1.opacity = (sun1.opacity /
> 100) * 90;&quot;,
> │ > }, }} 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> │ > class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ line = 26<br 
> │ > />  column = 0 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > </td><td><div class="dni-plaintext"><pre>26
> │ > │ 
> </pre></div></td></tr><tr><td>column</td><td><div 
> │ > class="dni-plaintext"><pre>0
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> │ > 
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> │ > ble></div></details><style>
> │ > │ .dni-code-hint {
> │ > │     font-style: italic;
> │ > │     overflow: hidden;
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview {
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview td {
> │ > │     vertical-align: top;
> │ > │     text-align: start;
> │ > │ }
> │ > │ details.dni-treeview {
> │ > │     padding-left: 1em;
> │ > │ }
> │ > │ table td {
> │ > │     text-align: start;
> │ > │ }
> │ > │ table tr { 
> │ > │     vertical-align: top; 
> │ > │     margin: 0em 0px;
> │ > │ }
> │ > │ table tr td pre 
> │ > │ { 
> │ > │     vertical-align: top !important; 
> │ > │     margin: 0em 0px !important;
> │ > │ } 
> │ > │ table th {
> │ > │     text-align: start;
> │ > │ }
> │ > │ </style>
> │ > 
> │ > ── [ 320.47ms - stdout ] 
> ───────────────────────────────────────────────────────
> │ > │ JObject
> │ > │   (map
> │ > │      [("widget",
> │ > │        JObject
> │ > │          (map
> │ > │             [("debug", JString "on");
> │ > │              ("image",
> │ > │               JObject
> │ > │                 (map
> │ > │                    [("alignment", 
> JString "center"); 
> │ > ("hOffset", JNumber 250.0);
> │ > │                     ("name", JString 
> "sun1"); ("src", JString
> │ > "Images/Sun.png");
> │ > │                     ("vOffset", JNumber 
> 250.0)]));
> │ > │              ("text",
> │ > │               JObject
> │ > │                 (map
> │ > │                    [("alignment", 
> JString "center");
> │ > │                     ("data", JString 
> "Click Here"); 
> │ > ("hOffset", JNumber 250.0);
> │ > │                     ("name", JString 
> "text1");
> │ > │                     ("onMouseUp",
> │ > │                      JString 
> "sun1.opacity = (sun1.opacity / 
> │ > 100) * 90;");
> │ > │                     ("size", JNumber 
> 36.0); ("style", JString
> │ > "bold");
> │ > │                     ("vOffset", JNumber 
> 100.0)]));
> │ > │              ("window",
> │ > │               JObject
> │ > │                 (map
> │ > │                    [("height", JNumber 
> 500.0); ("name", 
> │ > JString "main_window");
> │ > │                     ("title", JString 
> "Sample Konfabulator 
> │ > Widget");
> │ > │                     ("width", JNumber 
> 500.0)]))]))])
> │ > │ JObject
> │ > │   (map
> │ > │      [("widget",
> │ > │        JObject
> │ > │          (map
> │ > │             [("debug", JString "on");
> │ > │              ("image",
> │ > │               JObject
> │ > │                 (map
> │ > │                    [("alignment", 
> JString "center"); 
> │ > ("hOffset", JNumber 250.0); ("name", JString "sun1");
> │ > │                     ("src", JString 
> "Images/Sun.png"); 
> │ > ("vOffset", JNumber 250.0)]));
> │ > │              ("text",
> │ > │               JObject
> │ > │                 (map
> │ > │                    [("alignment", 
> JString "center"); ("data",
> │ > JString "Click Here"); ("hOffset", JNumber 250.0);
> │ > │                     ("name", JString 
> "text1"); ("onMouseUp", 
> │ > JString "sun1.opacity = (sun1.opacity / 100) * 90;");
> │ > │                     ("size", JNumber 
> 36.0); ("style", JString
> │ > "bold"); ("vOffset", JNumber 100.0)]));
> │ > │              ("window",
> │ > │               JObject
> │ > │                 (map
> │ > │                    [("height", JNumber 
> 500.0); ("name", 
> │ > JString "main_window");
> │ > │                     ("title", JString 
> "Sample Konfabulator 
> │ > Widget"); ("width", JNumber 500.0)]))]))])
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > let example3 = """{
> │ >   "string": "Hello, \"World\"!",
> │ >   "escapedString": "This string contains 
> \\/\\\\\\b\\f\\n\\r\\t\\\"\\'",
> │ >   "number": 42,
> │ >   "scientificNumber": 3.14e-10,
> │ >   "boolean": true,
> │ >   "nullValue": null,
> │ >   "array": [[1, 2, 3, 4, 5]],
> │ >   "unicodeString1": "프리마",
> │ >   "unicodeString2": "\u0048\u0065\u006C\u006C\u006F, 
> │ > \u0022\u0057\u006F\u0072\u006C\u0064\u0022!",
> │ >   "specialCharacters": "!@#$%^&*()",
> │ >   "emptyArray": [[]],
> │ >   "emptyObject": {},
> │ >   "nestedArrays": [[[[1, 2, 3]], [[4, 5, 6]]]],
> │ >   "object": {
> │ >     "nestedString": "Nested Value",
> │ >     "nestedNumber": 3.14,
> │ >     "nestedBoolean": false,
> │ >     "nestedNull": null,
> │ >     "nestedArray": [["a", "b", "c"]],
> │ >     "nestedObject": {
> │ >       "nestedProperty": "Nested Object Value"
> │ >     }
> │ >   },
> │ >   "nestedObjects": [[
> │ >     {"name": "Alice", "age": 25},
> │ >     {"name": "Bob", "age": 30}
> │ >   ]]
> │ > }"""
> │ > run jValue example3
> │ > |> parserEqual (
> │ >     Success (
> │ >         JObject (
> │ >             Map.ofList [[
> │ >                 "string", JString @"Hello, ""World""!"
> │ >                 "escapedString", JString @"This string 
> contains 
> │ > \/\\\b\f\n\r\t\""\'"
> │ >                 "number", JNumber 42.0
> │ >                 "scientificNumber", JNumber 3.14e-10
> │ >                 "boolean", JBool true
> │ >                 "nullValue", JNull
> │ >                 "array", JArray [[
> │ >                     JNumber 1.0; JNumber 2.0; JNumber 3.0; 
> JNumber 4.0; JNumber 
> │ > 5.0
> │ >                 ]]
> │ >                 "unicodeString1", JString "프리마"
> │ >                 "unicodeString2", JString @"Hello, 
> ""World""!"
> │ >                 "specialCharacters", JString "!@#$%^&*()"
> │ >                 "emptyArray", JArray [[]]
> │ >                 "emptyObject", JObject Map.empty
> │ >                 "nestedArrays", JArray [[
> │ >                     JArray [[ JNumber 1.0; JNumber 2.0; 
> JNumber 3.0 ]]
> │ >                     JArray [[ JNumber 4.0; JNumber 5.0; 
> JNumber 6.0 ]]
> │ >                 ]]
> │ >                 "object", JObject (
> │ >                     Map.ofList [[
> │ >                         "nestedString", JString "Nested 
> Value"
> │ >                         "nestedNumber", JNumber 3.14
> │ >                         "nestedBoolean", JBool false
> │ >                         "nestedNull", JNull
> │ >                         "nestedArray", JArray [[JString 
> "a"; JString "b"; 
> │ > JString "c"]]
> │ >                         "nestedObject", JObject (
> │ >                             Map.ofList [[
> │ >                                 "nestedProperty", JString 
> "Nested Object Value"
> │ >                             ]]
> │ >                         )
> │ >                     ]]
> │ >                 )
> │ >                 "nestedObjects", JArray [[
> │ >                   JObject (Map.ofList [[ "name", JString 
> "Alice"; "age", JNumber
> │ > 25.0 ]])
> │ >                   JObject (Map.ofList [[ "name", JString 
> "Bob"; "age", JNumber 
> │ > 30.0 ]])
> │ >                 ]]
> │ >             ]]
> │ >         )
> │ >     )
> │ > )
> │ > 
> │ > ── [ 442.73ms - return value ] 
> ─────────────────────────────────────────────────
> │ > │ <details open="open" 
> class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>Success<br />  (JObject<br />
> (map<br />        
> │ > [(&quot;array&quot;,<br />          JArray<br />
> [JNumber 1.0; 
> │ > JNumber 2.0; JNumber 3.0; JNumber 4.0; JNumber 5.0]);<br />│ > (&quot;boolean&quot;, JBool true); (&quot;emptyArray&quot;,
> JArray []);<br />
> │ > (&quot;emptyObject&quot;, JObject (map []));<br />         
> │ > (&quot;escapedString&quot;, JString &quot;This 
> │ > 
> s...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>I
> │ > tem</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>(JObject<br />  (map<br />     
> │ > [(&quot;array&quot;,<br />       JArray [JNumber 1.0; 
> JNumber 2.0; JNumber 3.0; 
> │ > JNumber 4.0; JNumber 5.0]);<br />      
> (&quot;boolean&quot;, JBool true); 
> │ > (&quot;emptyArray&quot;, JArray []);<br />      
> (&quot;emptyObject&quot;, 
> │ > JObject (map []));<br />      (&quot;escapedString&quot;, 
> JString &quot;This 
> │ > string contains \/\\\b\f<br />\r\t\&quot;\&#39;&quot;);<br 
> />    
> │ > 
> ...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>It
> │ > em1</td><td><details class="dni-treeview"><summary><span 
> │ > class="dni-code-hint"><code>JObject<br />  (map<br />     
> │ > [(&quot;array&quot;,<br />       JArray [JNumber 1.0; 
> JNumber 2.0; JNumber 3.0; 
> │ > JNumber 4.0; JNumber 5.0]);<br />      
> (&quot;boolean&quot;, JBool true); 
> │ > (&quot;emptyArray&quot;, JArray []);<br />      
> (&quot;emptyObject&quot;, 
> │ > JObject (map []));<br />      (&quot;es...ot;: 3.14,,     
> │ > &quot;nestedBoolean&quot;: false,,     
> &quot;nestedNull&quot;: null,,     
> │ > &quot;nestedArray&quot;: [&quot;a&quot;, &quot;b&quot;, 
> &quot;c&quot;],,     
> │ > &quot;nestedObject&quot;: {,       
> &quot;nestedProperty&quot;: &quot;Nested 
> │ > Object Value&quot;,     },   },,   
> &quot;nestedObjects&quot;: [,     
> │ > {&quot;name&quot;: &quot;Alice&quot;, &quot;age&quot;: 
> 25},,     
> │ > {&quot;name&quot;: &quot;Bob&quot;, &quot;age&quot;: 30},
> ], } 
> │ > ]</pre></div></td></tr><tr><td>position</td><td><details 
> │ > class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>{ line = 29<br 
> │ > />  column = 0 
> │ > 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> │ > </td><td><div class="dni-plaintext"><pre>29
> │ > │ 
> </pre></div></td></tr><tr><td>column</td><td><div 
> │ > class="dni-plaintext"><pre>0
> │ > │ 
> │ > 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> │ > 
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> │ > ble></div></details><style>
> │ > │ .dni-code-hint {
> │ > │     font-style: italic;
> │ > │     overflow: hidden;
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview {
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview td {
> │ > │     vertical-align: top;
> │ > │     text-align: start;
> │ > │ }
> │ > │ details.dni-treeview {
> │ > │     padding-left: 1em;
> │ > │ }
> │ > │ table td {
> │ > │     text-align: start;
> │ > │ }
> │ > │ table tr { 
> │ > │     vertical-align: top; 
> │ > │     margin: 0em 0px;
> │ > │ }
> │ > │ table tr td pre 
> │ > │ { 
> │ > │     vertical-align: top !important; 
> │ > │     margin: 0em 0px !important;
> │ > │ } 
> │ > │ table th {
> │ > │     text-align: start;
> │ > │ }
> │ > │ </style>
> │ > 
> │ > ── [ 444.45ms - stdout ] 
> ───────────────────────────────────────────────────────
> │ > │ JObject
> │ > │   (map
> │ > │      [("array",
> │ > │        JArray [JNumber 1.0; JNumber 2.0;
> JNumber 3.0; JNumber
> │ > 4.0; JNumber 5.0]);
> │ > │       ("boolean", JBool true); 
> ("emptyArray", JArray []);
> │ > │       ("emptyObject", JObject (map []));
> │ > │       ("escapedString", JString "This 
> string contains 
> │ > \/\\\b\f\n\r\t\"\'");
> │ > │       ("nestedArrays",
> │ > │        JArray
> │ > │          [JArray [JNumber 1.0; JNumber 
> 2.0; JNumber 3.0];
> │ > │           JArray [JNumber 4.0; JNumber 
> 5.0; JNumber 6.0]]);
> │ > │       ("nestedObjects",
> │ > │        JArray
> │ > │          [JObject (map [("age", JNumber 
> 25.0); ("name", 
> │ > JString "Alice")]);
> │ > │           JObject (map [("age", JNumber 
> 30.0); ("name", 
> │ > JString "Bob")])]);
> │ > │       ("nullValue", JNull); ("number", 
> JNumber 42.0); ...])
> │ > │ JObject
> │ > │   (map
> │ > │      [("array", JArray [JNumber 1.0; 
> JNumber 2.0; JNumber 
> │ > 3.0; JNumber 4.0; JNumber 5.0]); ("boolean", JBool true);
> │ > │       ("emptyArray", JArray []); 
> ("emptyObject", JObject (map
> │ > []));
> │ > │       ("escapedString", JString "This 
> string contains 
> │ > \/\\\b\f\n\r\t\"\'");
> │ > │       ("nestedArrays",
> │ > │        JArray [JArray [JNumber 1.0; 
> JNumber 2.0; JNumber 
> │ > 3.0]; JArray [JNumber 4.0; JNumber 5.0; JNumber 6.0]]);
> │ > │       ("nestedObjects",
> │ > │        JArray
> │ > │          [JObject (map [("age", JNumber 
> 25.0); ("name", 
> │ > JString "Alice")]);
> │ > │           JObject (map [("age", JNumber 
> 30.0); ("name", 
> │ > JString "Bob")])]); ("nullValue", JNull);
> │ > │       ("number", JNumber 42.0); ...])
> │ > │ 
> │ > │ 
> │ 00:00:23 v #3 runtime.execute_with_options / result / {
> exit_code = 0; std_trace_length = 152736 }
> │ 00:00:23 d #4 runtime.execute_with_options / { 
> file_name = jupyter; arguments = ["nbconvert", 
> "c:/home/git/polyglot/apps/parser/JsonParser.dib.ipynb", "--to", "html", 
> "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert 
> "c:/home/git/polyglot/apps/parser/JsonParser.dib.ipynb" --to html 
> --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = 
> Array(MutCell([])); on_line = None; stdin = None; trace = true; 
> working_directory = None } }
> │ 00:00:24 v #5 ! [NbConvertApp] Converting notebook 
> c:/home/git/polyglot/apps/parser/JsonParser.dib.ipynb to html
> │ 00:00:24 v #6 ! 
> C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.
> py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a 
> hard error in future nbformat versions. You may want to use `normalize()` on 
> your notebooks before validations (available since nbformat 5.1.4). Previous 
> versions of nbformat are fixing this issue transparently, and will stop doing so
> in the future.
> │ 00:00:24 v #7 !   validate(nb)
> │ 00:00:25 v #8 ! 
> C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\
> highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python
> 3
> │ 00:00:25 v #9 !   return _pygments_highlight(
> │ 00:00:26 v #10 ! [NbConvertApp] Writing 501905 bytes to
> c:\home\git\polyglot\apps\parser\JsonParser.dib.html
> │ 00:00:26 v #11 runtime.execute_with_options / result / 
> { exit_code = 0; std_trace_length = 864 }
> │ 00:00:26 d #12 spiral.run / dib / jupyter nbconvert / {
> exit_code = 0; jupyter_result_length = 864 }
> │ 00:00:26 d #13 runtime.execute_with_options / { 
> file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 
> 'c:/home/git/polyglot/apps/parser/JsonParser.dib.html'; (Get-Content $path -Raw)
> -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } 
> | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 
> 'c:/home/git/polyglot/apps/parser/JsonParser.dib.html'; (Get-Content $path -Raw)
> -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | 
> Set-Content $path"; cancellation_token = None; environment_variables = 
> Array(MutCell([])); on_line = None; stdin = None; trace = true; 
> working_directory = None } }
> │ 00:00:26 v #14 runtime.execute_with_options / result / 
> { exit_code = 0; std_trace_length = 0 }
> │ 00:00:26 d #15 spiral.run / dib / html cell ids / { 
> exit_code = 0; pwsh_replace_html_result_length = 0 }
> │ 00:00:26 d #16 spiral.run / dib / { exit_code = 0; 
> result_length = 153659 }
> │ 00:00:00 d #1 spiral.main / { args = 
> Array(MutCell(["dib", "--path", "Parser.dib"])) }
> │ 00:00:00 d #2 runtime.execute_with_options / { 
> file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", 
> "c:/home/git/polyglot/apps/parser/Parser.dib", "--output-path", 
> "c:/home/git/polyglot/apps/parser/Parser.dib.ipynb"]; options = { command = 
> dotnet repl --exit-after-run --run "c:/home/git/polyglot/apps/parser/Parser.dib"
> --output-path "c:/home/git/polyglot/apps/parser/Parser.dib.ipynb"; 
> cancellation_token = None; environment_variables = 
> Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = 
> None; stdin = None; trace = false; working_directory = None } }
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ # Parser (Polyglot)
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > open Common
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### TextInput
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > type Position =
> │ >     {
> │ >         line : int
> │ >         column : int
> │ >     }
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let initialPos = { line = 0; column = 0 }
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline incrCol (pos : Position) =
> │ >     { pos with column = pos.column + 1 }
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline incrLine pos =
> │ >     { line = pos.line + 1; column = 0 }
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > type InputState =
> │ >     {
> │ >         lines : string[[]]
> │ >         position : Position
> │ >     }
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline fromStr str =
> │ >     {
> │ >         lines =
> │ >             if str |> String.IsNullOrEmpty
> │ >             then [[||]]
> │ >             else str |> SpiralSm.split_string [[| "\r\n"; 
> "\n" |]]
> │ >         position = initialPos
> │ >     }
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > fromStr "" |> _assertEqual {
> │ >     lines = [[||]]
> │ >     position = { line = 0; column = 0 }
> │ > }
> │ > 
> │ > ── [ 51.71ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ { lines = [||]
> │ > │   position = { line = 0
> │ > │                column = 0 } }
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > fromStr "Hello \n World" |> _assertEqual {
> │ >     lines = [[| "Hello "; " World" |]]
> │ >     position = { line = 0; column = 0 }
> │ > }
> │ > 
> │ > ── [ 22.90ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ { lines = [|"Hello "; " World"|]
> │ > │   position = { line = 0
> │ > │                column = 0 } }
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline currentLine inputState =
> │ >     let linePos = inputState.position.line
> │ >     if linePos < inputState.lines.Length
> │ >     then inputState.lines.[[linePos]]
> │ >     else "end of file"
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline nextChar input =
> │ >     let linePos = input.position.line
> │ >     let colPos = input.position.column
> │ > 
> │ >     if linePos >= input.lines.Length
> │ >     then input, None
> │ >     else
> │ >         let currentLine = currentLine input
> │ >         if colPos < currentLine.Length then
> │ >             let char = currentLine.[[colPos]]
> │ >             let newPos = incrCol input.position
> │ >             let newState = { input with position = newPos }
> │ >             newState, Some char
> │ >         else
> │ >             let char = '\n'
> │ >             let newPos = incrLine input.position
> │ >             let newState = { input with position = newPos }
> │ >             newState, Some char
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > let newInput, charOpt = fromStr "Hello World" |> nextChar
> │ > 
> │ > newInput |> _assertEqual {
> │ >     lines = [[| "Hello World" |]]
> │ >     position = { line = 0; column = 1 }
> │ > }
> │ > charOpt |> _assertEqual (Some 'H')
> │ > 
> │ > ── [ 46.78ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ { lines = [|"Hello World"|]
> │ > │   position = { line = 0
> │ > │                column = 1 } }
> │ > │ 
> │ > │ Some 'H'
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > let newInput, charOpt = fromStr "Hello\n\nWorld" |> 
> nextChar
> │ > 
> │ > newInput |> _assertEqual {
> │ >     lines = [[| "Hello"; ""; "World" |]]
> │ >     position = { line = 0; column = 1 }
> │ > }
> │ > charOpt |> _assertEqual (Some 'H')
> │ > 
> │ > ── [ 33.70ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ { lines = [|"Hello"; ""; "World"|]
> │ > │   position = { line = 0
> │ > │                column = 1 } }
> │ > │ 
> │ > │ Some 'H'
> │ > │ 
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### Parser
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > type Input = InputState
> │ > type ParserLabel = string
> │ > type ParserError = string
> │ > 
> │ > type ParserPosition =
> │ >     {
> │ >         currentLine : string
> │ >         line : int
> │ >         column : int
> │ >     }
> │ > 
> │ > type ParseResult<'a> =
> │ >     | Success of 'a
> │ >     | Failure of ParserLabel * ParserError * ParserPosition
> │ > 
> │ > type Parser<'a> =
> │ >     {
> │ >         label : ParserLabel
> │ >         parseFn : Input -> ParseResult<'a * Input>
> │ >     }
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline printResult result =
> │ >     match result with
> │ >     | Success (value, input) ->
> │ >         printfn $"%A{value}"
> │ >     | Failure (label, error, parserPos) ->
> │ >         let errorLine = parserPos.currentLine
> │ >         let colPos = parserPos.column
> │ >         let linePos = parserPos.line
> │ >         let failureCaret = $"{' ' |> string |> 
> String.replicate colPos}^{error}"
> │ >         printfn $"Line:%i{linePos} Col:%i{colPos} Error 
> parsing 
> │ > %s{label}\n%s{errorLine}\n%s{failureCaret}"
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline runOnInput parser input =
> │ >     parser.parseFn input
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline run parser inputStr =
> │ >     runOnInput parser (fromStr inputStr)
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline parserPositionFromInputState (inputState : 
> Input) =
> │ >     {
> │ >         currentLine = currentLine inputState
> │ >         line = inputState.position.line
> │ >         column = inputState.position.column
> │ >     }
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline getLabel parser =
> │ >     parser.label
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline setLabel parser newLabel =
> │ >     {
> │ >         label = newLabel
> │ >         parseFn = fun input ->
> │ >             match parser.parseFn input with
> │ >             | Success s -> Success s
> │ >             | Failure (oldLabel, err, pos) -> Failure 
> (newLabel, err, pos)
> │ >     }
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let (<?>) = setLabel
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline satisfy predicate label =
> │ >     {
> │ >         label = label
> │ >         parseFn = fun input ->
> │ >             let remainingInput, charOpt = nextChar input
> │ >             match charOpt with
> │ >             | None ->
> │ >                 let err = "No more input"
> │ >                 let pos = parserPositionFromInputState 
> input
> │ >                 Failure (label, err, pos)
> │ >             | Some first ->
> │ >                 if predicate first
> │ >                 then Success (first, remainingInput)
> │ >                 else
> │ >                     let err = $"Unexpected '%c{first}'"
> │ >                     let pos = parserPositionFromInputState 
> input
> │ >                     Failure (label, err, pos)
> │ >     }
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > let input = fromStr "Hello"
> │ > let parser = satisfy (fun c -> c = 'H') "H"
> │ > runOnInput parser input |> _assertEqual (
> │ >     Success (
> │ >         'H',
> │ >         {
> │ >             lines = [[| "Hello" |]]
> │ >             position = { line = 0; column = 1 }
> │ >         }
> │ >     )
> │ > )
> │ > 
> │ > ── [ 39.65ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ Success ('H', { lines = [|"Hello"|]
> │ > │                 position = { line = 0
> │ > │                              column = 1 
> } })
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > let input = fromStr "World"
> │ > let parser = satisfy (fun c -> c = 'H') "H"
> │ > runOnInput parser input |> _assertEqual (
> │ >     Failure (
> │ >         "H",
> │ >         "Unexpected 'W'",
> │ >         {
> │ >             currentLine = "World"
> │ >             line = 0
> │ >             column = 0
> │ >         }
> │ >     )
> │ > )
> │ > 
> │ > ── [ 31.95ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ Failure ("H", "Unexpected 'W'", { 
> currentLine = "World"
> │ > │                                   line =
> 0
> │ > │                                   column
> = 0 })
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline bindP f p =
> │ >     {
> │ >         label = "unknown"
> │ >         parseFn = fun input ->
> │ >             match runOnInput p input with
> │ >             | Failure (label, err, pos) -> Failure (label, 
> err, pos)
> │ >             | Success (value1, remainingInput) -> 
> runOnInput (f value1) 
> │ > remainingInput
> │ >     }
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline (>>=) p f = bindP f p
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > let input = fromStr "Hello"
> │ > let parser = satisfy (fun c -> c = 'H') "H"
> │ > let parser2 = parser >>= fun c -> satisfy (fun c -> c = 
> 'e') "e"
> │ > runOnInput parser2 input |> _assertEqual (
> │ >     Success (
> │ >         'e',
> │ >         {
> │ >             lines = [[| "Hello" |]]
> │ >             position = { line = 0; column = 2 }
> │ >         }
> │ >     )
> │ > )
> │ > 
> │ > ── [ 47.75ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ Success ('e', { lines = [|"Hello"|]
> │ > │                 position = { line = 0
> │ > │                              column = 2 
> } })
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > let input = fromStr "World"
> │ > let parser = satisfy (fun c -> c = 'W') "W"
> │ > let parser2 = parser >>= fun c -> satisfy (fun c -> c = 
> 'e') "e"
> │ > runOnInput parser2 input |> _assertEqual (
> │ >     Failure (
> │ >         "e",
> │ >         "Unexpected 'o'",
> │ >         {
> │ >             currentLine = "World"
> │ >             line = 0
> │ >             column = 1
> │ >         }
> │ >     )
> │ > )
> │ > 
> │ > ── [ 44.71ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ Failure ("e", "Unexpected 'o'", { 
> currentLine = "World"
> │ > │                                   line =
> 0
> │ > │                                   column
> = 1 })
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline returnP x =
> │ >     {
> │ >         label = $"%A{x}"
> │ >         parseFn = fun input -> Success (x, input)
> │ >     }
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > let input = fromStr "Hello"
> │ > let parser = returnP "Hello"
> │ > runOnInput parser input |> _assertEqual (
> │ >     Success (
> │ >         "Hello",
> │ >         {
> │ >             lines = [[| "Hello" |]]
> │ >             position = { line = 0; column = 0 }
> │ >         }
> │ >     )
> │ > )
> │ > 
> │ > ── [ 28.38ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ Success ("Hello", { lines = [|"Hello"|]
> │ > │                     position = { line = 
> 0
> │ > │                                  column 
> = 0 } })
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline mapP f =
> │ >     bindP (f >> returnP)
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let (<!>) = mapP
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline (|>>) x f = f <!> x
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > let input = fromStr "Hello"
> │ > let parser = satisfy (fun c -> c = 'H') "H"
> │ > let parser2 = parser |>> string
> │ > runOnInput parser2 input |> _assertEqual (
> │ >     Success (
> │ >         "H",
> │ >         {
> │ >             lines = [[| "Hello" |]]
> │ >             position = { line = 0; column = 1 }
> │ >         }
> │ >     )
> │ > )
> │ > 
> │ > ── [ 37.18ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ Success ("H", { lines = [|"Hello"|]
> │ > │                 position = { line = 0
> │ > │                              column = 1 
> } })
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline applyP fP xP =
> │ >     fP >>=
> │ >         fun f ->
> │ >             xP >>=
> │ >                 fun x ->
> │ >                     returnP (f x)
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let (<*>) = applyP
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline lift2 f xP yP =
> │ >     returnP f <*> xP <*> yP
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > let input = fromStr "Hello"
> │ > let parser = satisfy (fun c -> c = 'H') "H"
> │ > let parser2 = satisfy (fun c -> c = 'e') "e"
> │ > let parser3 = lift2 (fun c1 c2 -> string c1 + string c2) 
> parser parser2
> │ > runOnInput parser3 input |> _assertEqual (
> │ >     Success (
> │ >         "He",
> │ >         {
> │ >             lines = [[| "Hello" |]]
> │ >             position = { line = 0; column = 2 }
> │ >         }
> │ >     )
> │ > )
> │ > 
> │ > ── [ 55.22ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ Success ("He", { lines = [|"Hello"|]
> │ > │                  position = { line = 0
> │ > │                               column = 2
> } })
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline andThen p1 p2 =
> │ >     p1 >>=
> │ >         fun p1Result ->
> │ >             p2 >>=
> │ >                 fun p2Result ->
> │ >                     returnP (p1Result, p2Result)
> │ >     <?> $"{getLabel p1} andThen {getLabel p2}"
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let (.>>.) = andThen
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > let input = fromStr "Hello"
> │ > let parser = satisfy (fun c -> c = 'H') "H"
> │ > let parser2 = satisfy (fun c -> c = 'e') "e"
> │ > let parser3 = parser .>>. parser2
> │ > runOnInput parser3 input |> _assertEqual (
> │ >     Success (
> │ >         ('H', 'e'),
> │ >         {
> │ >             lines = [[| "Hello" |]]
> │ >             position = { line = 0; column = 2 }
> │ >         }
> │ >     )
> │ > )
> │ > 
> │ > ── [ 87.77ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ Success (('H', 'e'), { lines = 
> [|"Hello"|]
> │ > │                        position = { line
> = 0
> │ > │                                     
> column = 2 } })
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline orElse p1 p2 =
> │ >     {
> │ >         label = $"{getLabel p1} orElse {getLabel p2}"
> │ >         parseFn = fun input ->
> │ >             match runOnInput p1 input with
> │ >             | Success _ as result -> result
> │ >             | Failure _ -> runOnInput p2 input
> │ >     }
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let (<|>) = orElse
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > let input = fromStr "hello"
> │ > let parser = satisfy (fun c -> c = 'H') "H"
> │ > let parser2 = satisfy (fun c -> c = 'h') "h"
> │ > let parser3 = parser <|> parser2
> │ > runOnInput parser3 input |> _assertEqual (
> │ >     Success (
> │ >         'h',
> │ >         {
> │ >             lines = [[| "hello" |]]
> │ >             position = { line = 0; column = 1 }
> │ >         }
> │ >     )
> │ > )
> │ > 
> │ > ── [ 41.72ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ Success ('h', { lines = [|"hello"|]
> │ > │                 position = { line = 0
> │ > │                              column = 1 
> } })
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline choice listOfParsers =
> │ >     listOfParsers |> List.reduce (<|>)
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > let input = fromStr "hello"
> │ > let parser = satisfy (fun c -> c = 'H') "H"
> │ > let parser2 = satisfy (fun c -> c = 'h') "h"
> │ > let parser3 = choice [[ parser; parser2 ]]
> │ > runOnInput parser3 input |> _assertEqual (
> │ >     Success (
> │ >         'h',
> │ >         {
> │ >             lines = [[| "hello" |]]
> │ >             position = { line = 0; column = 1 }
> │ >         }
> │ >     )
> │ > )
> │ > 
> │ > ── [ 39.98ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ Success ('h', { lines = [|"hello"|]
> │ > │                 position = { line = 0
> │ > │                              column = 1 
> } })
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let rec sequence parserList =
> │ >     match parserList with
> │ >     | [[]] -> returnP [[]]
> │ >     | head :: tail -> (lift2 cons) head (sequence tail)
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > let input = fromStr "Hello"
> │ > let parser = satisfy (fun c -> c = 'H') "H"
> │ > let parser2 = satisfy (fun c -> c = 'e') "e"
> │ > let parser3 = sequence [[ parser; parser2 ]]
> │ > runOnInput parser3 input |> _assertEqual (
> │ >     Success (
> │ >         [[ 'H'; 'e' ]],
> │ >         {
> │ >             lines = [[| "Hello" |]]
> │ >             position = { line = 0; column = 2 }
> │ >         }
> │ >     )
> │ > )
> │ > 
> │ > ── [ 50.34ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ Success (['H'; 'e'], { lines = 
> [|"Hello"|]
> │ > │                        position = { line
> = 0
> │ > │                                     
> column = 2 } })
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let rec parseZeroOrMore parser input =
> │ >     match runOnInput parser input with
> │ >     | Failure (_, _, _) ->
> │ >         [[]], input
> │ >     | Success (firstValue, inputAfterFirstParse) ->
> │ >         let subsequentValues, remainingInput = 
> parseZeroOrMore parser 
> │ > inputAfterFirstParse
> │ >         firstValue :: subsequentValues, remainingInput
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline many parser =
> │ >     {
> │ >         label = $"many {getLabel parser}"
> │ >         parseFn = fun input -> Success (parseZeroOrMore 
> parser input)
> │ >     }
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > let input = fromStr "hello"
> │ > let parser = satisfy (fun c -> c = 'H') "H"
> │ > let parser2 = many parser
> │ > runOnInput parser2 input |> _assertEqual (
> │ >     Success (
> │ >         [[]],
> │ >         {
> │ >             lines = [[| "hello" |]]
> │ >             position = { line = 0; column = 0 }
> │ >         }
> │ >     )
> │ > )
> │ > 
> │ > ── [ 35.45ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ Success ([], { lines = [|"hello"|]
> │ > │                position = { line = 0
> │ > │                             column = 0 }
> })
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline many1 p =
> │ >     p >>=
> │ >         fun head ->
> │ >             many p >>=
> │ >                 fun tail ->
> │ >                     returnP (head :: tail)
> │ >     <?> $"many1 {getLabel p}"
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > let input = fromStr "hello"
> │ > let parser = satisfy (fun c -> c = 'H') "H"
> │ > let parser2 = many1 parser
> │ > runOnInput parser2 input |> _assertEqual (
> │ >     Failure (
> │ >         "many1 H",
> │ >         "Unexpected 'h'",
> │ >         {
> │ >             currentLine = "hello"
> │ >             line = 0
> │ >             column = 0
> │ >         }
> │ >     )
> │ > )
> │ > 
> │ > ── [ 51.31ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ Failure ("many1 H", "Unexpected 'h'", { 
> currentLine = "hello"
> │ > │                                         
> line = 0
> │ > │                                         
> column = 0 })
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline opt p =
> │ >     let some = p |>> Some
> │ >     let none = returnP None
> │ >     (some <|> none)
> │ >     <?> $"opt {getLabel p}"
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > let input = fromStr "hello"
> │ > let parser = satisfy (fun c -> c = 'H') "H"
> │ > let parser2 = opt parser
> │ > runOnInput parser2 input |> _assertEqual (
> │ >     Success (
> │ >         None,
> │ >         {
> │ >             lines = [[| "hello" |]]
> │ >             position = { line = 0; column = 0 }
> │ >         }
> │ >     )
> │ > )
> │ > 
> │ > ── [ 42.23ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ Success (None, { lines = [|"hello"|]
> │ > │                  position = { line = 0
> │ > │                               column = 0
> } })
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline (.>>) p1 p2 =
> │ >     p1 .>>. p2
> │ >     |> mapP fst
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline (>>.) p1 p2 =
> │ >     p1 .>>. p2
> │ >     |> mapP snd
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline between p1 p2 p3 =
> │ >     p1 >>. p2 .>> p3
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > let input = fromStr "[[Hello]]"
> │ > let parser =
> │ >     between
> │ >         (satisfy (fun c -> c = '[[') "[[")
> │ >         (many (satisfy (fun c -> [[ 'a' .. 'z' ]] @ [[ 'A' 
> .. 'Z' ]] |> 
> │ > List.contains c) "letter"))
> │ >         (satisfy (fun c -> c = ']]') "]]")
> │ > runOnInput parser input |> _assertEqual (
> │ >     Success (
> │ >         [[ 'H'; 'e'; 'l'; 'l'; 'o' ]],
> │ >         {
> │ >             lines = [[| "[[Hello]]" |]]
> │ >             position = { line = 0; column = 7 }
> │ >         }
> │ >     )
> │ > )
> │ > 
> │ > ── [ 157.46ms - stdout ] 
> ───────────────────────────────────────────────────────
> │ > │ Success (['H'; 'e'; 'l'; 'l'; 'o'], { 
> lines = [|"[Hello]"|]
> │ > │                                       
> position = { line = 0
> │ > │
> column = 7
> │ > } })
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline sepBy1 p sep =
> │ >     let sepThenP = sep >>. p
> │ >     p .>>. many sepThenP
> │ >     |>> fun (p, pList) -> p :: pList
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline sepBy p sep =
> │ >     sepBy1 p sep <|> returnP [[]]
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > let input = fromStr "Hello,World"
> │ > let parser = sepBy (many (satisfy (fun c -> c <> ',') "not 
> comma")) (satisfy 
> │ > (fun c -> c = ',') "comma")
> │ > runOnInput parser input |> _assertEqual (
> │ >     Success (
> │ >         [[ [[ 'H'; 'e'; 'l'; 'l'; 'o' ]]; [[ 'W'; 'o'; 'r';
> 'l'; 'd'; '\n' ]] 
> │ > ]],
> │ >         {
> │ >             lines = [[| "Hello,World" |]]
> │ >             position = { line = 1; column = 0 }
> │ >         }
> │ >     )
> │ > )
> │ > 
> │ > ── [ 83.97ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ Success ([['H'; 'e'; 'l'; 'l'; 'o']; 
> ['W'; 'o'; 'r'; 'l'; 
> │ > 'd'; '\010']], { lines = [|"Hello,World"|]
> │ > │
> │ > position = { line = 1
> │ > │
> │ >
>                                                                                 │ > column = 0 } })
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline pchar charToMatch =
> │ >     satisfy ((=) charToMatch) $"%c{charToMatch}"
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline anyOf listOfChars =
> │ >     listOfChars
> │ >     |> List.map pchar
> │ >     |> choice
> │ >     <?> $"anyOf %A{listOfChars}"
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > let input = fromStr "Hello"
> │ > let parser = anyOf [[ 'H'; 'e'; 'l'; 'o' ]] |> many
> │ > runOnInput parser input |> _assertEqual (
> │ >     Success (
> │ >         [[ 'H'; 'e'; 'l'; 'l'; 'o' ]],
> │ >         {
> │ >             lines = [[| "Hello" |]]
> │ >             position = { line = 0; column = 5 }
> │ >         }
> │ >     )
> │ > )
> │ > 
> │ > ── [ 44.38ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ Success (['H'; 'e'; 'l'; 'l'; 'o'], { 
> lines = [|"Hello"|]
> │ > │                                       
> position = { line = 0
> │ > │
> column = 5
> │ > } })
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline charListToStr charList =
> │ >     charList |> List.toArray |> String
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline manyChars cp =
> │ >     many cp
> │ >     |>> charListToStr
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline manyChars1 cp =
> │ >     many1 cp
> │ >     |>> charListToStr
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > let input = fromStr "Hello"
> │ > let parser = manyChars1 (anyOf [[ 'H'; 'e'; 'l'; 'o' ]])
> │ > runOnInput parser input |> _assertEqual (
> │ >     Success (
> │ >         "Hello",
> │ >         {
> │ >             lines = [[| "Hello" |]]
> │ >             position = { line = 0; column = 5 }
> │ >         }
> │ >     )
> │ > )
> │ > 
> │ > ── [ 63.47ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ Success ("Hello", { lines = [|"Hello"|]
> │ > │                     position = { line = 
> 0
> │ > │                                  column 
> = 5 } })
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline pstring str =
> │ >     str
> │ >     |> List.ofSeq
> │ >     |> List.map pchar
> │ >     |> sequence
> │ >     |> mapP charListToStr
> │ >     <?> str
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > let input = fromStr "Hello"
> │ > let parser = pstring "Hello"
> │ > runOnInput parser input |> _assertEqual (
> │ >     Success (
> │ >         "Hello",
> │ >         {
> │ >             lines = [[| "Hello" |]]
> │ >             position = { line = 0; column = 5 }
> │ >         }
> │ >     )
> │ > )
> │ > 
> │ > ── [ 64.14ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ Success ("Hello", { lines = [|"Hello"|]
> │ > │                     position = { line = 
> 0
> │ > │                                  column 
> = 5 } })
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let whitespaceChar =
> │ >     satisfy Char.IsWhiteSpace "whitespace"
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let spaces = many whitespaceChar
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let spaces1 = many1 whitespaceChar
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > let input = fromStr "  Hello"
> │ > let parser = spaces1 .>>. pstring "Hello"
> │ > runOnInput parser input |> _assertEqual (
> │ >     Success (
> │ >         ([[ ' '; ' ' ]], "Hello"),
> │ >         {
> │ >             lines = [[| "  Hello" |]]
> │ >             position = { line = 0; column = 7 }
> │ >         }
> │ >     )
> │ > )
> │ > 
> │ > ── [ 60.17ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ Success (([' '; ' '], "Hello"), { lines 
> = [|"  Hello"|]
> │ > │                                   
> position = { line = 0
> │ > │
> column = 7 } 
> │ > })
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let digitChar =
> │ >     satisfy Char.IsDigit "digit"
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > let input = fromStr "Hello"
> │ > let parser = digitChar
> │ > runOnInput parser input |> _assertEqual (
> │ >     Failure (
> │ >         "digit",
> │ >         "Unexpected 'H'",
> │ >         {
> │ >             currentLine = "Hello"
> │ >             line = 0
> │ >             column = 0
> │ >         }
> │ >     )
> │ > )
> │ > 
> │ > ── [ 26.73ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ Failure ("digit", "Unexpected 'H'", { 
> currentLine = "Hello"
> │ > │                                       
> line = 0
> │ > │                                       
> column = 0 })
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let pint =
> │ >     let inline resultToInt (sign, digits) =
> │ >         let i = int digits
> │ >         match sign with
> │ >         | Some ch -> -i
> │ >         | None -> i
> │ > 
> │ >     let digits = manyChars1 digitChar
> │ > 
> │ >     opt (pchar '-') .>>. digits
> │ >     |> mapP resultToInt
> │ >     <?> "integer"
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > run pint "-123"
> │ > |> _assertEqual (
> │ >     Success (
> │ >         -123,
> │ >         {
> │ >             lines = [[| "-123" |]]
> │ >             position = { line = 0; column = 4 }
> │ >         }
> │ >     )
> │ > )
> │ > 
> │ > ── [ 30.62ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ Success (-123, { lines = [|"-123"|]
> │ > │                  position = { line = 0
> │ > │                               column = 4
> } })
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let pfloat =
> │ >     let inline resultToFloat (((sign, digits1), point), 
> digits2) =
> │ >         let fl = float $"{digits1}.{digits2}"
> │ >         match sign with
> │ >         | Some ch -> -fl
> │ >         | None -> fl
> │ > 
> │ >     let digits = manyChars1 digitChar
> │ > 
> │ >     opt (pchar '-') .>>. digits .>>. pchar '.' .>>. digits
> │ >     |> mapP resultToFloat
> │ >     <?> "float"
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > run pfloat "-123.45"
> │ > |> _assertEqual (
> │ >     Success (
> │ >         -123.45,
> │ >         {
> │ >             lines = [[| "-123.45" |]]
> │ >             position = { line = 0; column = 7 }
> │ >         }
> │ >     )
> │ > )
> │ > 
> │ > ── [ 37.47ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ Success (-123.45, { lines = 
> [|"-123.45"|]
> │ > │                     position = { line = 
> 0
> │ > │                                  column 
> = 7 } })
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline createParserForwardedToRef<'a> () =
> │ >     let mutable parserRef : Parser<'a> =
> │ >         {
> │ >             label = "unknown"
> │ >             parseFn = fun _ -> failwith "unfixed forwarded 
> parser"
> │ >         }
> │ > 
> │ >     let wrapperParser =
> │ >         { parserRef with
> │ >             parseFn = fun input -> runOnInput parserRef 
> input
> │ >         }
> │ > 
> │ >     wrapperParser, (fun v -> parserRef <- v)
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline (>>%) p x =
> │ >     p
> │ >     |>> fun _ -> x
> │ 00:00:20 v #3 runtime.execute_with_options / result / {
> exit_code = 0; std_trace_length = 31883 }
> │ 00:00:20 d #4 runtime.execute_with_options / { 
> file_name = jupyter; arguments = ["nbconvert", 
> "c:/home/git/polyglot/apps/parser/Parser.dib.ipynb", "--to", "html", 
> "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert 
> "c:/home/git/polyglot/apps/parser/Parser.dib.ipynb" --to html 
> --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = 
> Array(MutCell([])); on_line = None; stdin = None; trace = true; 
> working_directory = None } }
> │ 00:00:22 v #5 ! [NbConvertApp] Converting notebook 
> c:/home/git/polyglot/apps/parser/Parser.dib.ipynb to html
> │ 00:00:22 v #6 ! 
> C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.
> py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a 
> hard error in future nbformat versions. You may want to use `normalize()` on 
> your notebooks before validations (available since nbformat 5.1.4). Previous 
> versions of nbformat are fixing this issue transparently, and will stop doing so
> in the future.
> │ 00:00:22 v #7 !   validate(nb)
> │ 00:00:22 v #8 ! 
> C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\
> highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python
> 3
> │ 00:00:22 v #9 !   return _pygments_highlight(
> │ 00:00:23 v #10 ! [NbConvertApp] Writing 413747 bytes to
> c:\home\git\polyglot\apps\parser\Parser.dib.html
> │ 00:00:23 v #11 runtime.execute_with_options / result / 
> { exit_code = 0; std_trace_length = 856 }
> │ 00:00:23 d #12 spiral.run / dib / jupyter nbconvert / {
> exit_code = 0; jupyter_result_length = 856 }
> │ 00:00:23 d #13 runtime.execute_with_options / { 
> file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 
> 'c:/home/git/polyglot/apps/parser/Parser.dib.html'; (Get-Content $path -Raw) 
> -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } 
> | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 
> 'c:/home/git/polyglot/apps/parser/Parser.dib.html'; (Get-Content $path -Raw) 
> -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | 
> Set-Content $path"; cancellation_token = None; environment_variables = 
> Array(MutCell([])); on_line = None; stdin = None; trace = true; 
> working_directory = None } }
> │ 00:00:24 v #14 runtime.execute_with_options / result / 
> { exit_code = 0; std_trace_length = 0 }
> │ 00:00:24 d #15 spiral.run / dib / html cell ids / { 
> exit_code = 0; pwsh_replace_html_result_length = 0 }
> │ 00:00:24 d #16 spiral.run / dib / { exit_code = 0; 
> result_length = 32798 }
> │ 00:00:00 d #1 writeDibCode / output: Fs / path: 
> Parser.dib
> │ 00:00:00 d #1 writeDibCode / output: Fs / path: 
> JsonParser.dib
> │ 00:00:00 d #2 parseDibCode / output: Fs / file: 
> Parser.dib
> │ 00:00:00 d #2 parseDibCode / output: Fs / file: 
> JsonParser.dib
> │ polyglot/apps/parser/build.ps1 / $env:CI:''
> │ 
> 
> ── pwsh ────────────────────────────────────────────────────────────────────────
> { pwsh ../apps/spiral/build.ps1 } | Invoke-Block
> 
> ── [ 7.45m - stdout ] ──────────────────────────────────────────────────────────
> │ 00:00:00 d #1 writeDibCode / output: Fs / path: 
> spiral_compiler.dib
> │ 00:00:00 d #2 parseDibCode / output: Fs / file: 
> spiral_compiler.dib
> │ 00:00:00 d #1 persistCodeProject / packages: 
> [Fable.Core; FSharp.Control.AsyncSeq; FSharpx.Collections; ... ] / modules: 
> [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; 
> deps/spiral/lib/spiral/crypto.fsx; ... ] / name: spiral_compiler / hash:  / 
> code.Length: 815239
> │ 00:00:00 d #2 buildProject / fullPath: 
> c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fsproj
> │ 00:00:00 d #1 runtime.execute_with_options_async / { 
> file_name = dotnet; arguments = US5_0
> │   "publish 
> "c:/home/git\polyglot\target/Builder\spiral_compiler\spiral_compiler.fsproj" 
> --configuration Release --output 
> "C:\home\git\polyglot\deps\spiral\apps\compiler\dist" --runtime win-x64"; 
> options = { command = dotnet publish 
> "c:/home/git\polyglot\target/Builder\spiral_compiler\spiral_compiler.fsproj" 
> --configuration Release --output 
> "C:\home\git\polyglot\deps\spiral\apps\compiler\dist" --runtime win-x64; 
> cancellation_token = None; environment_variables = [||]; on_line = None; stdin =
> None; trace = true; working_directory = Some 
> "c:\home\git\polyglot\target\Builder\spiral_compiler" } }
> │ 00:00:01 v #2 >   Determining projects to restore...
> │ 00:00:01 v #3 >   Paket version 
> 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
> │ 00:00:01 v #4 >   The last full restore is still up to 
> date. Nothing left to do.
> │ 00:00:01 v #5 >   Total time taken: 0 milliseconds
> │ 00:00:02 v #6 >   All projects are up-to-date for 
> restore.
> │ 00:00:14 v #7 > 
> c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fs(10087,85)
> : warning FS0040: This and other recursive references to the object(s) being 
> defined will be checked for initialization-soundness at runtime through the use 
> of a delayed reference. This is because you are defining one or more recursive 
> objects, rather than recursive functions. This warning may be suppressed by 
> using '#nowarn "40"' or '--nowarn:40'. 
> [c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fsproj]
> │ 00:00:14 v #8 > 
> c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fs(10610,85)
> : warning FS0040: This and other recursive references to the object(s) being 
> defined will be checked for initialization-soundness at runtime through the use 
> of a delayed reference. This is because you are defining one or more recursive 
> objects, rather than recursive functions. This warning may be suppressed by 
> using '#nowarn "40"' or '--nowarn:40'. 
> [c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fsproj]
> │ 00:00:15 v #9 > 
> c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fs(11434,43)
> : warning FS0040: This and other recursive references to the object(s) being 
> defined will be checked for initialization-soundness at runtime through the use 
> of a delayed reference. This is because you are defining one or more recursive 
> objects, rather than recursive functions. This warning may be suppressed by 
> using '#nowarn "40"' or '--nowarn:40'. 
> [c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fsproj]
> │ 00:00:15 v #10 > 
> c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fs(12364,43)
> : warning FS0040: This and other recursive references to the object(s) being 
> defined will be checked for initialization-soundness at runtime through the use 
> of a delayed reference. This is because you are defining one or more recursive 
> objects, rather than recursive functions. This warning may be suppressed by 
> using '#nowarn "40"' or '--nowarn:40'. 
> [c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fsproj]
> │ 00:00:15 v #11 > 
> c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fs(13030,71)
> : warning FS0040: This and other recursive references to the object(s) being 
> defined will be checked for initialization-soundness at runtime through the use 
> of a delayed reference. This is because you are defining one or more recursive 
> objects, rather than recursive functions. This warning may be suppressed by 
> using '#nowarn "40"' or '--nowarn:40'. 
> [c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fsproj]
> │ 00:00:35 v #12 >   spiral_compiler -> 
> c:\home\git\polyglot\target\Builder\spiral_compiler\bin\Release\net9.0\win-x64\s
> piral_compiler.dll
> │ 00:00:37 v #13 >   spiral_compiler -> 
> C:\home\git\polyglot\deps\spiral\apps\compiler\dist\
> │ 00:00:37 d #14 runtime.execute_with_options_async / { 
> exit_code = 0; output_length = 2976; options = { command = dotnet publish 
> "c:/home/git\polyglot\target/Builder\spiral_compiler\spiral_compiler.fsproj" 
> --configuration Release --output 
> "C:\home\git\polyglot\deps\spiral\apps\compiler\dist" --runtime win-x64; 
> cancellation_token = None; environment_variables = [||]; on_line = None; stdin =
> None; trace = true; working_directory = Some 
> "c:\home\git\polyglot\target\Builder\spiral_compiler" } }
> │ spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: 
> C:\home\git\polyglot\target\Builder\spiral_compiler
> │ spiral/apps/compiler/build.ps1 / $targetDir = 
> C:\home\git\polyglot\target\Builder\spiral_compiler / $projectName: 
> spiral_compiler / $env:CI:''
> │ 00:00:00 d #1 spiral.main / { args = 
> Array(MutCell(["dib", "--path", "Supervisor.dib", "--retries", "3"])) }
> │ 00:00:00 d #2 runtime.execute_with_options / { 
> file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", 
> "c:/home/git/polyglot/apps/spiral/Supervisor.dib", "--output-path", 
> "c:/home/git/polyglot/apps/spiral/Supervisor.dib.ipynb"]; options = { command = 
> dotnet repl --exit-after-run --run 
> "c:/home/git/polyglot/apps/spiral/Supervisor.dib" --output-path 
> "c:/home/git/polyglot/apps/spiral/Supervisor.dib.ipynb"; cancellation_token = 
> None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), 
> ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; 
> working_directory = None } }
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ # Supervisor (Polyglot)
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
> │ > dard2.1/FSharp.Control.AsyncSeq.dll"
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
> │ > 0/System.Reactive.dll"
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/
> │ > netstandard2.0/System.Reactive.Linq.dll"
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll"
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.com
> │ > 
> mon/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Common.dll"
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.cli
> │ > 
> ent/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Client.dll"
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.common/7.0.0
> │ > /lib/net7.0/Microsoft.AspNetCore.SignalR.Common.dll"
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client/7.0.0
> │ > /lib/net7.0/Microsoft.AspNetCore.SignalR.Client.dll"
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client.core/
> │ > 
> 7.0.0/lib/net7.0/Microsoft.AspNetCore.SignalR.Client.Core.dll"
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/fsharp.json/0.4.1/lib/netstandard2.0/FSha
> │ > rp.Json.dll"
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > #if !INTERACTIVE
> │ > open Lib
> │ > #endif
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > open Common
> │ > open SpiralFileSystem.Operators
> │ > open Microsoft.AspNetCore.SignalR.Client
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### sendJson
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let sendJson (port : int) (json : string) = async {
> │ >     let host = "127.0.0.1"
> │ >     let! portOpen = SpiralNetworking.test_port_open host 
> port
> │ >     if portOpen then
> │ >         try
> │ >             let connection = 
> │ > 
> HubConnectionBuilder().WithUrl($"http://{host}:{port}").Build()
> │ >             do! connection.StartAsync () |> Async.AwaitTask
> │ >             let! result = connection.InvokeAsync<string> 
> ("ClientToServerMsg", 
> │ > json) |> Async.AwaitTask
> │ >             do! connection.StopAsync () |> Async.AwaitTask
> │ >             trace Verbose (fun () -> $"Supervisor.sendJson 
> / port: {port} / 
> │ > json: {json |> SpiralSm.ellipsis_end 200} / result: {result
> |> Option.ofObj |> 
> │ > Option.map (SpiralSm.ellipsis_end 200)}") _locals
> │ >             return Some result
> │ >         with ex ->
> │ >             trace Critical (fun () -> $"Supervisor.sendJson
> / port: {port} / 
> │ > json: {json |> SpiralSm.ellipsis_end 200} / ex: {ex |> 
> │ > SpiralSm.format_exception}") _locals
> │ >             return None
> │ >     else
> │ >         trace Debug (fun () -> $"Supervisor.sendJson / 
> port: {port} / error: 
> │ > port not open") _locals
> │ >         return None
> │ > }
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### sendObj
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let sendObj port obj =
> │ >     obj
> │ >     |> System.Text.Json.JsonSerializer.Serialize
> │ >     |> sendJson port
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### workspaceRoot
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let workspaceRoot = SpiralFileSystem.get_workspace_root ()
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### getFilePathFromUri
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let getFilePathFromUri uri =
> │ >     match System.Uri.TryCreate (uri, 
> System.UriKind.Absolute) with
> │ >     | true, uri -> uri.AbsolutePath |> 
> System.IO.Path.GetFullPath
> │ >     | _ -> failwith "invalid uri"
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### getCompilerPort
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let getCompilerPort () =
> │ >     13805
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### serialize_obj
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ >     let serializeObj obj =
> │ >         try
> │ >             obj
> │ >             |> FSharp.Json.Json.serialize
> │ >             |> SpiralSm.replace "\\\\" "\\"
> │ >             |> SpiralSm.replace "\\r\\n" "\n"
> │ >             |> SpiralSm.replace "\\n" "\n"
> │ >         with ex ->
> │ >             trace Critical (fun () -> 
> "Supervisor.serialize_obj / obj: %A{obj}")
> │ > _locals
> │ >             ""
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### Backend
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > type Backend =
> │ >     | Fsharp
> │ >     | Cuda
> │ >     | Gleam
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/fsharpx.collections/3.1.0/lib/netstandard
> │ > 2.0/FSharpx.Collections.dll"
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/hopac/0.5.1/lib/netstandard2.0/Hopac.dll"
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/hopac/0.5.1/lib/netstandard2.0/Hopac.Core
> │ > .dll"
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP
> │ > arsec.dll"
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP
> │ > arsecCS.dll"
> │ > 
> │ > 
> │ > 
> │ > #if _LINUX
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6
> │ > 
> 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.dll"
> │ > #else
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/
> │ > 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.dll"
> │ > #endif
> │ > 
> │ > #if _LINUX
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6
> │ > 
> 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.dll"
> │ > #else
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/
> │ > 
> 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.dll"
> │ > #endif
> │ > 
> │ > #if _LINUX
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6
> │ > 
> 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.Core.dll"
> │ > #else
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/
> │ > 
> 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.Core.dll"
> │ > #endif
> │ > 
> │ > #if _LINUX
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6
> │ > 
> 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Cors.dll"
> │ > #else
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/
> │ > 
> 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Cors.dll"
> │ > #endif
> │ > 
> │ > #if _LINUX
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6
> │ > 
> 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll
> │ > "
> │ > #else
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/
> │ > 
> 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll"
> │ > #endif
> │ > 
> │ > #if _LINUX
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6
> │ > 
> 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Connections.Abstracti
> │ > ons.dll"
> │ > #else
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/
> │ > 
> 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Connections.Abstractions.
> │ > dll"
> │ > #endif
> │ > 
> │ > #if _LINUX
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6
> │ > 
> 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Hosting.Abstractions.
> │ > dll"
> │ > #else
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/
> │ > 
> 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Hosting.Abstractions.dll"
> │ > #endif
> │ > 
> │ > #if _LINUX
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6
> │ > 
> 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Http.Connections.dll"
> │ > #else
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/
> │ > 
> 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Http.Connections.dll"
> │ > #endif
> │ > 
> │ > #if _LINUX
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6
> │ > 
> 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Routing.dll"
> │ > #else
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/
> │ > 
> 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Routing.dll"
> │ > #endif
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.extensions.logging/9.0.0/lib/ne
> │ > t9.0/Microsoft.Extensions.Logging.dll"
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.extensions.logging.abstractions
> │ > 
> /9.0.0/lib/net9.0/Microsoft.Extensions.Logging.Abstractions.dll"
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.extensions.dependencyinjection.
> │ > 
> abstractions/9.0.0/lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstracti
> │ > ons.dll"
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/system.management/9.0.0/lib/netstandard2.
> │ > 0/System.Management.dll"
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > ── [ 1.82m - diagnostics ] 
> ─────────────────────────────────────────────────────
> │ > │ input.fsx (10087,85)-(10087,88) 
> typecheck warning This and 
> │ > other recursive references to the object(s) being defined 
> will be checked for 
> │ > initialization-soundness at runtime through the use of a 
> delayed reference. This
> │ > is because you are defining one or more recursive objects, 
> rather than recursive
> │ > functions. This warning may be suppressed by using '#nowarn
> "40"' or 
> │ > '--nowarn:40'.
> │ > │ input.fsx (10610,85)-(10610,88) 
> typecheck warning This and 
> │ > other recursive references to the object(s) being defined 
> will be checked for 
> │ > initialization-soundness at runtime through the use of a 
> delayed reference. This
> │ > is because you are defining one or more recursive objects, 
> rather than recursive
> │ > functions. This warning may be suppressed by using '#nowarn
> "40"' or 
> │ > '--nowarn:40'.
> │ > │ input.fsx (11434,43)-(11434,49) 
> typecheck warning This and 
> │ > other recursive references to the object(s) being defined 
> will be checked for 
> │ > initialization-soundness at runtime through the use of a 
> delayed reference. This
> │ > is because you are defining one or more recursive objects, 
> rather than recursive
> │ > functions. This warning may be suppressed by using '#nowarn
> "40"' or 
> │ > '--nowarn:40'.
> │ > │ input.fsx (12364,43)-(12364,49) 
> typecheck warning This and 
> │ > other recursive references to the object(s) being defined 
> will be checked for 
> │ > initialization-soundness at runtime through the use of a 
> delayed reference. This
> │ > is because you are defining one or more recursive objects, 
> rather than recursive
> │ > functions. This warning may be suppressed by using '#nowarn
> "40"' or 
> │ > '--nowarn:40'.
> │ > │ input.fsx (13030,71)-(13030,74) 
> typecheck warning This and 
> │ > other recursive references to the object(s) being defined 
> will be checked for 
> │ > initialization-soundness at runtime through the use of a 
> delayed reference. This
> │ > is because you are defining one or more recursive objects, 
> rather than recursive
> │ > functions. This warning may be suppressed by using '#nowarn
> "40"' or 
> │ > '--nowarn:40'.
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > open spiral_compiler
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### awaitCompiler
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let awaitCompiler port cancellationToken = async {
> │ >     let host = "127.0.0.1"
> │ >     let struct (ct, disposable) = cancellationToken |> 
> │ > SpiralThreading.new_disposable_token
> │ >     let! ct = ct |> 
> SpiralAsync.merge_cancellation_token_with_default_async
> │ > 
> │ >     let compiler = MailboxProcessor.Start (fun inbox -> 
> async {
> │ >         let! availablePort = 
> SpiralNetworking.get_available_port (Some 180) host
> │ > port
> │ >         if availablePort <> port then
> │ >             inbox.Post (port, false)
> │ >         else
> │ >             let compilerDir =
> │ >                 workspaceRoot </> 
> "deps/spiral/apps/compiler/dist"
> │ >                 |> System.IO.Path.GetFullPath
> │ > 
> │ >             let compilerPath = compilerDir </> 
> │ > $"spiral_compiler{SpiralPlatform.get_executable_suffix ()}"
> │ > 
> │ >             let! exitCode, result =
> │ >                 SpiralRuntime.execution_options (fun x ->
> │ >                     { x with
> │ >                         l0 = $"\"{compilerPath}\" --port 
> {availablePort} 
> │ > --default-int i32 --default-float f64"
> │ >                         l1 = Some ct
> │ >                         l3 = Some (fun struct (_, line, _) 
> -> async {
> │ >                             if line |> SpiralSm.contains 
> │ > $"System.IO.IOException: Failed to bind to address 
> http://{host}:{port}: address
> │ > already in use." then
> │ >                                 inbox.Post (port, false)
> │ > 
> │ >                             if line |> SpiralSm.contains 
> $"Server bound to: 
> │ > http://localhost:{availablePort}" then
> │ >                                 let rec loop retry = async 
> {
> │ >                                     do!
> │ >                                         
> SpiralNetworking.wait_for_port_access 
> │ > (Some 100) true host availablePort
> │ >                                         |> 
> Async.runWithTimeoutAsync 500
> │ >                                         |> Async.Ignore
> │ > 
> │ >                                     let _locals () = 
> $"port: {availablePort} / 
> │ > retry: {retry} / {_locals ()}"
> │ >                                     try
> │ >                                         let pingObj = {| 
> Ping = true |}
> │ >                                         let! pingResult = 
> pingObj |> sendObj 
> │ > availablePort
> │ >                                         trace Verbose (fun 
> () -> 
> │ > $"Supervisor.awaitCompiler / Ping / result: 
> '%A{pingResult}'") _locals
> │ > 
> │ >                                         match pingResult 
> with
> │ >                                         | Some _ -> 
> inbox.Post (availablePort, 
> │ > true)
> │ >                                         | None -> do! loop 
> (retry + 1)
> │ >                                     with ex ->
> │ >                                         trace Verbose (fun 
> () -> 
> │ > $"Supervisor.awaitCompiler / Ping / ex: {ex |> 
> SpiralSm.format_exception}") 
> │ > _locals
> │ >                                         do! loop (retry + 
> 1)
> │ >                                 }
> │ >                                 do! loop 1
> │ >                         })
> │ >                         l6 = Some workspaceRoot
> │ >                     }
> │ >                 )
> │ >                 |> SpiralRuntime.execute_with_options_async
> │ > 
> │ >             trace Debug (fun () -> 
> $"Supervisor.awaitCompiler / exitCode: 
> │ > {exitCode} / result: {result}") _locals
> │ >             disposable.Dispose ()
> │ >     }, ct)
> │ > 
> │ >     let! serverPort, managed = compiler.Receive ()
> │ > 
> │ >     let connection = 
> │ > 
> HubConnectionBuilder().WithUrl($"http://{host}:{serverPort}").Build ()
> │ >     do! connection.StartAsync () |> Async.AwaitTask
> │ > 
> │ >     let event = Event<_> ()
> │ >     let disposable' = connection.On<string> 
> ("ServerToClientMsg", event.Trigger)
> │ >     let stream =
> │ >         FSharp.Control.AsyncSeq.unfoldAsync
> │ >             (fun () -> async {
> │ >                 let! msg = event.Publish |> 
> Async.AwaitEvent
> │ >                 return Some (msg |> 
> │ > FSharp.Json.Json.deserialize<ClientErrorsRes>, ())
> │ >             })
> │ >             ()
> │ > 
> │ >     let disposable' =
> │ >         new_disposable (fun () ->
> │ >             async {
> │ >                 disposable'.Dispose ()
> │ >                 do! connection.StopAsync () |> 
> Async.AwaitTask
> │ >                 disposable.Dispose ()
> │ >                 if managed
> │ >                 then do!
> │ >                     SpiralNetworking.wait_for_port_access 
> (Some 100) false host 
> │ > serverPort
> │ >                     |> Async.runWithTimeoutAsync 1500
> │ >                     |> Async.Ignore
> │ >             }
> │ >             |> Async.RunSynchronously
> │ >         )
> │ > 
> │ >     return
> │ >         serverPort,
> │ >         stream,
> │ >         ct,
> │ >         disposable'
> │ > }
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > open Hopac
> │ > open Hopac.Infixes
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### server
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let server1 = new_server<Job<unit>, obj, string option, 
> Job<unit>, unit> ()
> │ > let server2 = new_server<Job<unit>, obj, int array, 
> Job<unit>, unit> ()
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > ── [ 220.33ms - diagnostics ] 
> ──────────────────────────────────────────────────
> │ > │ input.fsx (1,15)-(1,25) typecheck 
> warning The method or 
> │ > function 'new_server' should not be given explicit type 
> argument(s) because it 
> │ > does not declare its type parameters explicitly
> │ > │ input.fsx (2,15)-(2,25) typecheck 
> warning The method or 
> │ > function 'new_server' should not be given explicit type 
> argument(s) because it 
> │ > does not declare its type parameters explicitly
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### buildFile
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let buildFile backend timeout port cancellationToken path =
> │ >     let rec loop retry = async {
> │ >         let fullPath = path |> System.IO.Path.GetFullPath 
> |> 
> │ > SpiralFileSystem.normalize_path
> │ >         let fileDir = fullPath |> 
> System.IO.Path.GetDirectoryName
> │ >         let fileName = fullPath |> 
> System.IO.Path.GetFileNameWithoutExtension
> │ >         let! code = fullPath |> 
> SpiralFileSystem.read_all_text_async
> │ > 
> │ >         // let stream, disposable = fileDir |> 
> FileSystem.watchDirectory (fun _ 
> │ > -> true)
> │ >         // use _ = disposable
> │ > 
> │ >         let struct (token, disposable) = 
> SpiralThreading.new_disposable_token 
> │ > cancellationToken
> │ >         use _ = disposable
> │ > 
> │ >         let outputFileName =
> │ >             match backend with
> │ >             | Fsharp -> $"{fileName}.fsx"
> │ >             | Cuda -> $"{fileName}.py"
> │ >             | Gleam -> $"{fileName}.gleam"
> │ > 
> │ >         // let outputContentSeq =
> │ >         //     stream
> │ >         //     |> FSharp.Control.AsyncSeq.chooseAsync 
> (function
> │ >         //         | _, 
> (FileSystem.FileSystemChange.Changed (path, Some text))
> │ >         //             when (path |> 
> System.IO.Path.GetFileName) = 
> │ > outputFileName
> │ >         //             ->
> │ >         //                 // fileDir </> path |> 
> │ > SpiralFileSystem.read_all_text_retry_async
> │ >         //                 text |> Some |> Async.init
> │ >         //         | _ -> None |> Async.init
> │ >         //     )
> │ >         //     |> FSharp.Control.AsyncSeq.map (fun content 
> ->
> │ >         //         Some (content |> SpiralSm.replace "\r\n"
> "\n"), None
> │ >         //     )
> │ > 
> │ >         let printErrorData (data : {| uri : string; errors 
> : RString list |}) =
> │ >             let fileName = data.uri |> 
> System.IO.Path.GetFileName
> │ >             let errors =
> │ >                 data.errors
> │ >                 |> List.map snd
> │ >                 |> SpiralSm.concat "\n"
> │ >             $"{fileName}:\n{errors}"
> │ > 
> │ > 
> │ >         let port = port |> Option.defaultWith 
> getCompilerPort
> │ >         // let! serverPort, errors, ct, disposable = 
> awaitCompiler port (Some 
> │ > token)
> │ >         let serverPort = port
> │ >         // use _ = disposable
> │ > 
> │ >         let errorsSeq =
> │ >             server1.errors
> │ >             |> FSharp.Control.AsyncSeq.choose (fun error ->
> │ >                 match error with
> │ >                 | FatalError message ->
> │ >                     Some (message, error)
> │ >                 | TracedError data ->
> │ >                     Some (data.message, error)
> │ >                 | PackageErrors data when data.errors |> 
> List.isEmpty |> not ->
> │ >                     Some (data |> printErrorData, error)
> │ >                 | TokenizerErrors data when data.errors |> 
> List.isEmpty |> not 
> │ > ->
> │ >                     Some (data |> printErrorData, error)
> │ >                 | ParserErrors data when data.errors |> 
> List.isEmpty |> not ->
> │ >                     Some (data |> printErrorData, error)
> │ >                 | TypeErrors data when data.errors |> 
> List.isEmpty |> not ->
> │ >                     Some (data |> printErrorData, error)
> │ >                 | _ -> None
> │ >             )
> │ >             |> FSharp.Control.AsyncSeq.map (fun (message, 
> error) ->
> │ >                 None, Some (message, error)
> │ >             )
> │ > 
> │ >         let timerSeq =
> │ >             500
> │ >             |> FSharp.Control.AsyncSeq.intervalMs
> │ >             |> FSharp.Control.AsyncSeq.map (fun _ -> None, 
> None)
> │ > 
> │ >         let compilerEvent = Event<option<string> * 
> option<string * 
> │ > ClientErrorsRes>> ()
> │ >         // let disposable' = connection.On<string> 
> ("ServerToClientMsg", 
> │ > event.Trigger)
> │ >         let outputContentSeq =
> │ >             FSharp.Control.AsyncSeq.unfoldAsync
> │ >                 (fun () -> async {
> │ >                     let! msg = compilerEvent.Publish |> 
> Async.AwaitEvent
> │ >                     trace Verbose (fun () -> 
> $"Supervisor.buildFile / 
> │ > outputContentSeq unfoldAsync / msg: %A{msg}") _locals
> │ >                     return Some (msg, ())
> │ >                 })
> │ >                 ()
> │ > 
> │ >         let compilerEvent2 = Event<option<string> * (string
> * ClientErrorsRes) 
> │ > list * int> ()
> │ >         // let disposable' = connection.On<string> 
> ("ServerToClientMsg", 
> │ > event.Trigger)
> │ >         let outputContentSeq2 =
> │ >             FSharp.Control.AsyncSeq.unfoldAsync
> │ >                 (fun () -> async {
> │ >                     let! msg = compilerEvent2.Publish |> 
> Async.AwaitEvent
> │ >                     trace Verbose (fun () -> 
> $"Supervisor.buildFile / 
> │ > outputContentSeq2 unfoldAsync / msg: %A{msg}") _locals
> │ >                     return Some (msg, ())
> │ >                 })
> │ >                 ()
> │ > 
> │ >         let outputSeq =
> │ >             [[ outputContentSeq; errorsSeq; timerSeq ]]
> │ >             // [[ errorsSeq; timerSeq ]]
> │ >             |> FSharp.Control.AsyncSeq.mergeAll
> │ > 
> │ >         let! outputChild =
> │ >             ((None, [[]], 0), outputSeq)
> │ >             ||> FSharp.Control.AsyncSeq.scan (
> │ >                 fun (outputContentResult, errors, 
> typeErrorCount) 
> │ > (outputContent, error) ->
> │ >                     trace Verbose (fun () -> 
> $"Supervisor.buildFile / 
> │ > AsyncSeq.scan / outputContent:\n'{outputContent |> 
> Option.map 
> │ > (SpiralSm.ellipsis_end 1500)} / errors: {errors |> 
> serializeObj} / 
> │ > outputContentResult: {outputContentResult} / 
> typeErrorCount: {typeErrorCount} / 
> │ > retry: {retry} / error: {error} / path: {path}'") _locals
> │ >                     match outputContent, error with
> │ >                     | Some outputContent, None -> Some 
> outputContent, errors, 
> │ > typeErrorCount
> │ >                     | None, Some (
> │ >                         _,
> │ >                         FatalError "File main has a type 
> error somewhere in its 
> │ > path."
> │ >                         ) ->
> │ >                         outputContentResult, errors, 
> typeErrorCount + 1
> │ >                     | None, Some error -> 
> outputContentResult, error :: errors, 
> │ > typeErrorCount
> │ >                     | None, None when typeErrorCount >= 1 
> ->
> │ >                         outputContentResult, errors, 
> typeErrorCount + 1
> │ >                     | _ -> outputContentResult, errors, 
> typeErrorCount
> │ >             )
> │ >             |> FSharp.Control.AsyncSeq.takeWhileInclusive 
> (fun (outputContent, 
> │ > errors, typeErrorCount) ->
> │ >                 trace
> │ >                     Verbose
> │ >                     (fun () -> $"Supervisor.buildFile / 
> takeWhileInclusive / 
> │ > outputContent:\n'{outputContent |> Option.map 
> (SpiralSm.ellipsis_end 1500)}' / 
> │ > errors: {errors |> serializeObj} / typeErrorCount: 
> {typeErrorCount} / retry: 
> │ > {retry} / path: {path}")
> │ >                     _locals
> │ >     #if INTERACTIVE
> │ >                 let errorWait = 1
> │ >     #else
> │ >                 let errorWait = 1
> │ >     #endif
> │ >                 match outputContent, errors with
> │ >                 | None, [[]] when typeErrorCount > 
> errorWait -> false
> │ >                 | _, [[ message, TypeErrors errors ]] ->
> │ >                     compilerEvent.Trigger (None, Some 
> (message, TypeErrors 
> │ > errors))
> │ >                     trace Verbose (fun () -> 
> $"Supervisor.buildFile / 
> │ > takeWhileInclusive / TypeErrors trigger") _locals
> │ >                     false
> │ >                 | None, [[]] -> true
> │ >                 | _ -> false
> │ >             )
> │ >             |> FSharp.Control.AsyncSeq.tryLast
> │ >             // |> Async.withCancellationToken ct
> │ >             |> Async.catch
> │ >             |> Async.runWithTimeoutAsync timeout
> │ >             |> Async.StartChild
> │ > 
> │ >         // do! Async.Sleep 60
> │ > 
> │ >         let fullPathUri = fullPath |> 
> SpiralFileSystem.normalize_path |> 
> │ > SpiralFileSystem.new_file_uri
> │ > 
> │ >         trace Verbose (fun () -> $"Supervisor.buildFile / 
> fullPathUri: 
> │ > %A{fullPathUri}") (fun () -> "")
> │ > 
> │ >         // let fileOpenObj = {| FileOpen = {| uri = 
> fullPathUri; spiText = code 
> │ > |} |}
> │ > 
> │ >         // let! _fileOpenResult = fileOpenObj |> sendObj 
> serverPort
> │ >         let fileOpenArgs = {| uri = fullPathUri; spiText = 
> code |}
> │ >         let! _fileOpenResult =
> │ >             server1.job_null (server1.supervisor *<+ 
> SupervisorReq.FileOpen 
> │ > fileOpenArgs)
> │ >             |> Async.AwaitTask
> │ >             |> Async.runWithTimeoutAsync 60000
> │ >             |> Async.map Option.get
> │ >         trace Verbose (fun () -> $"Supervisor.buildFile / 
> _fileOpenResult: 
> │ > %A{_fileOpenResult}") (fun () -> "")
> │ > 
> │ >         // let! _fileOpenResult = fileOpenObj |> sendObj 
> serverPort
> │ > 
> │ >         // do! Async.Sleep 60
> │ > 
> │ >         let backendId =
> │ >             match backend with
> │ >             | Fsharp -> "Fsharp"
> │ >             | Cuda -> "Python + Cuda"
> │ >             | Gleam -> "Gleam"
> │ >         // let buildFileObj = {| BuildFile = {| uri = 
> fullPathUri; backend = 
> │ > backendId |} |}
> │ >         
> │ >         // let backend = Supervisor.Fsharp
> │ >         let buildFileArgs = {| uri = fullPathUri; backend =
> backendId |}
> │ >         let buildFileResultAsync =
> │ >             server1.job_val (fun res -> server1.supervisor 
> *<+ 
> │ > SupervisorReq.BuildFile(buildFileArgs,res))
> │ >             |> Async.AwaitTask
> │ >             |> Async.runWithTimeoutAsync timeout
> │ >             |> Async.map Option.get
> │ > 
> │ >         let buildFileResultAsync = async {
> │ >             let! buildFileResult = buildFileResultAsync
> │ >             let buildFileResult =
> │ >                 if buildFileResult = "" || buildFileResult 
> = null
> │ >                 then None
> │ >                 else buildFileResult |> SpiralSm.replace 
> "\r\n" "\n" |> Some
> │ >             trace Verbose (fun () -> $"Supervisor.buildFile
> / buildFileResult: 
> │ > %A{buildFileResult}") (fun () -> "")
> │ >             if buildFileResult.IsSome then
> │ >                 compilerEvent2.Trigger (buildFileResult, 
> [[]], 0)
> │ >             return buildFileResult, [[]], 0
> │ >         }
> │ > 
> │ >         let resultAsync =
> │ >             outputChild
> │ >             |> Async.map (fun x ->
> │ >                 trace Verbose (fun () -> 
> $"Supervisor.buildFile / outputChild / 
> │ > x: %A{x}") _locals
> │ >                 match x with
> │ >                 | Some (Ok (Some (outputCode, errors, 
> typeErrorCount))) ->
> │ >                     let x =
> │ >                         match errors with
> │ >                         | [[ message, TypeErrors errors ]] 
> ->
> │ >                             trace Verbose (fun () -> 
> $"Supervisor.buildFile / 
> │ > outputChild |> Async.map") _locals
> │ >                             compilerEvent2.Trigger (None, 
> [[ message, TypeErrors
> │ > errors ]], 0)
> │ >                             trace Verbose (fun () -> 
> $"Supervisor.buildFile / 
> │ > outputChild |> Async.map") _locals
> │ >                         | _ -> ()
> │ >                     outputCode, errors |> List.distinct |> 
> List.rev, 
> │ > typeErrorCount
> │ >                 | Some (Error ex) ->
> │ >                     trace Critical (fun () -> 
> $"Supervisor.buildFile / error: 
> │ > {ex |> SpiralSm.format_exception} / retry: {retry}") 
> _locals
> │ >                     None, [[]], 0
> │ >                 | _ -> None, [[]], 0
> │ >             )
> │ > 
> │ >         trace Verbose (fun () -> $"Supervisor.buildFile / 
> before result: 
> │ > %A{()}") (fun () -> "")
> │ >         
> │ >         // let resultSeq =
> │ >         //     [[| buildFileResultAsync; resultAsync |]]
> │ >         //     |> FSharp.Control.AsyncSeq.ofSeqAsync
> │ >         
> │ >         
> │ >         let buildFileResultSeq = [[| buildFileResultAsync 
> |]] |> 
> │ > FSharp.Control.AsyncSeq.ofSeqAsync
> │ >         let resultSeq = [[| resultAsync |]] |> 
> │ > FSharp.Control.AsyncSeq.ofSeqAsync
> │ > 
> │ >         let resultSeq =
> │ >             [[ outputContentSeq2; buildFileResultSeq; 
> resultSeq ]]
> │ >             |> FSharp.Control.AsyncSeq.mergeAll
> │ > 
> │ >         let! buildFileResult, result, typeErrorCount =
> │ >             resultSeq
> │ >             // |> FSharp.Control.AsyncSeq.collect 
> (Array.singleton >> 
> │ > FSharp.Control.AsyncSeq.ofSeq)
> │ >             |> FSharp.Control.AsyncSeq.collect (fun x ->
> │ >                 trace Verbose (fun () -> 
> $"Supervisor.buildFile / ofSeqAsync / 
> │ > x: %A{x}") _locals
> │ >                 match x with
> │ >                 | Some _, _, _ as x -> [[| x |]]
> │ >                 | _, _ :: _, _ as x -> [[| x |]]
> │ >                 | _ -> [[||]]
> │ >                 |> FSharp.Control.AsyncSeq.ofSeq
> │ >             )
> │ >             |> FSharp.Control.AsyncSeq.tryFirst
> │ >             |> Async.map Option.get
> │ > 
> │ >         trace Verbose (fun () -> $"Supervisor.buildFile / 
> result: %A{result} / 
> │ > buildFileResult: %A{buildFileResult} / typeErrorCount: 
> {typeErrorCount}") (fun 
> │ > () -> "")
> │ > 
> │ >         match buildFileResult with
> │ >         // | None when typeErrorCount > 0 && retry = 0 ->
> │ >         //     trace Verbose (fun () -> 
> $"Supervisor.buildFile / result: 
> │ > {result} / retry: {retry} / typeErrorCount: 
> {typeErrorCount} / fileDir: 
> │ > {fileDir} / targetDir: {targetDir}") _locals
> │ >         //     return! loop (retry + 1)
> │ >         | _ ->
> │ >             let targetDir = workspaceRoot </> "target"
> │ >             trace Verbose (fun () -> $"Supervisor.buildFile
> / retry: {retry} / 
> │ > typeErrorCount: {typeErrorCount} / fileDir: {fileDir} / 
> targetDir: {targetDir}")
> │ > _locals
> │ >             if fileDir |> SpiralSm.starts_with targetDir 
> then
> │ >                 let fileDirUri = fileDir |> 
> SpiralFileSystem.normalize_path |> 
> │ > SpiralFileSystem.new_file_uri
> │ > 
> │ >                 // let fileDeleteObj = {| FileDelete = {| 
> uris = [[| fileDirUri 
> │ > |]] |} |}
> │ >                 // let! _fileDeleteResult = fileDeleteObj 
> |> sendObj serverPort
> │ >                 let fileDeleteArgs = {| uris = [[| 
> fileDirUri |]] |}
> │ >                 let! _fileDeleteResult =
> │ >                     server1.job_null (server1.supervisor 
> *<+ 
> │ > SupervisorReq.FileDelete fileDeleteArgs)
> │ >                     |> Async.AwaitTask
> │ >                 ()
> │ > 
> │ >             let outputPath = fileDir </> outputFileName
> │ >             return outputPath, buildFileResult, result
> │ >     }
> │ >     loop 0
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### SpiralInput
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > type SpiralInput =
> │ >     | Spi of string * string option
> │ >     | Spir of string
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### persistCode
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let persistCode (input: {| backend : Backend option; input:
> SpiralInput; 
> │ > packages: string [[]] |}) = async {
> │ >     let targetDir = workspaceRoot </> "target/spiral_Eval"
> │ > 
> │ >     let packagesDir = targetDir </> "packages"
> │ > 
> │ >     let hashHex = $"%A{input.backend}%A{input.input}" |> 
> SpiralCrypto.hash_text
> │ > 
> │ >     let packageDir = packagesDir </> hashHex
> │ > 
> │ >     let packageDir =
> │ >         if input.backend = Some Gleam
> │ >         then packageDir </> "src"
> │ >         else packageDir
> │ > 
> │ >     packageDir |> System.IO.Directory.CreateDirectory |> 
> ignore
> │ > 
> │ >     let moduleName = "main"
> │ > 
> │ >     let spirModule, spiModule =
> │ >         match input.input with
> │ >         | Spi (_spi, Some _spir) -> true, true
> │ >         | Spi (_spi, None) -> false, true
> │ >         | Spir _spir -> true, false
> │ >         |> fun (spir, spi) ->
> │ >             (if spir then $"{moduleName}_real*-" else ""),
> │ >             if spi then moduleName else ""
> │ > 
> │ >     let libLinkTargetPath = workspaceRoot </> 
> "../spiral/lib/spiral"
> │ >     let libLinkPath = packageDir </> "spiral"
> │ > 
> │ >     let packagesModule =
> │ >         input.packages
> │ >         |> Array.map (fun package ->
> │ >             let path = workspaceRoot </> package
> │ >             let packageName = path |> 
> System.IO.Path.GetFileName
> │ >             let libLinkPath = packageDir </> packageName
> │ >             libLinkPath |> SpiralFileSystem.link_directory 
> path
> │ >             $"{packageName}-"
> │ >         )
> │ >         |> String.concat "\n    "
> │ > 
> │ >     let packageDir' =
> │ >         if input.packages |> Array.isEmpty
> │ >         then workspaceRoot </> "../spiral/lib"
> │ >         else
> │ >             libLinkPath |> SpiralFileSystem.link_directory 
> libLinkTargetPath
> │ >             packageDir
> │ > 
> │ >     let spiprojPath = packageDir </> "package.spiproj"
> │ >     let spiprojCode =
> │ >         $"""packageDir: {packageDir'}
> │ > packages:
> │ >     |core-
> │ >     spiral-
> │ >     {packagesModule}
> │ > modules:
> │ >     {spirModule}
> │ >     {spiModule}
> │ > """
> │ >     do! spiprojCode |> 
> SpiralFileSystem.write_all_text_exists spiprojPath
> │ > 
> │ >     let spirPath = packageDir </> $"{moduleName}_real.spir"
> │ >     let spiPath = packageDir </> $"{moduleName}.spi"
> │ > 
> │ >     let spirCode, spiCode =
> │ >         match input.input with
> │ >         | Spi (spi, Some spir) -> Some spir, Some spi
> │ >         | Spi (spi, None) -> None, Some spi
> │ >         | Spir spir -> Some spir, None
> │ > 
> │ >     match spirCode with
> │ >     | Some spir -> do! spir |> 
> SpiralFileSystem.write_all_text_exists spirPath
> │ >     | None -> ()
> │ >     match spiCode with
> │ >     | Some spi -> do! spi |> 
> SpiralFileSystem.write_all_text_exists spiPath
> │ >     | None -> ()
> │ > 
> │ >     let spiralPath =
> │ >         match input.input with
> │ >         | Spi _ -> spiPath
> │ >         | Spir _ -> spirPath
> │ >     match input.backend with
> │ >     | None -> return spiralPath, None
> │ >     | Some backend ->
> │ >         let outputFileName =
> │ >             let fileName =
> │ >                 match input.input with
> │ >                 | Spi _ -> moduleName
> │ >                 | Spir _ -> $"{moduleName}_real"
> │ >             match backend with
> │ >             | Fsharp -> $"{fileName}.fsx"
> │ >             | Cuda -> $"{fileName}.py"
> │ >             | Gleam -> $"{fileName}.gleam"
> │ >         let outputPath = packageDir </> outputFileName
> │ >         if outputPath |> System.IO.File.Exists |> not
> │ >         then return spiralPath, None
> │ >         else
> │ >             let! oldCode = spiralPath |> 
> SpiralFileSystem.read_all_text_async
> │ >             if oldCode <> (spiCode |> Option.defaultValue 
> (spirCode |> 
> │ > Option.defaultValue ""))
> │ >             then return spiralPath, None
> │ >             else
> │ >                 let! outputCode = outputPath |> 
> │ > SpiralFileSystem.read_all_text_async
> │ >                 return spiralPath, Some (outputPath, 
> outputCode |> 
> │ > SpiralSm.replace "\r\n" "\n")
> │ >     }
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### buildCode
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let buildCode backend packages isCache timeout 
> cancellationToken input = async {
> │ >     let! mainPath, outputCache =
> │ >         persistCode {| input = input; backend = Some 
> backend; packages = 
> │ > packages |}
> │ >     match outputCache with
> │ >     | Some (outputPath, outputCode) when isCache -> return 
> mainPath, 
> │ > (outputPath, Some outputCode), [[]]
> │ >     | _ ->
> │ >         let! outputPath, outputCode, errors = mainPath |> 
> buildFile backend 
> │ > timeout None cancellationToken
> │ >         return mainPath, (outputPath, outputCode), errors
> │ > }
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > SpiralTrace.TraceLevel.US0_0 |> set_trace_level
> │ > """inl app () =
> │ >     console.write_line "text"
> │ >     1i32
> │ > 
> │ > inl main () =
> │ >     app
> │ >     |> dyn
> │ >     |> ignore
> │ > """
> │ > |> fun code -> Spi (code, None)
> │ > |> buildCode Fsharp [[||]] false 20000 None
> │ > |> Async.runWithTimeout 21000
> │ > |> Option.map (fun (_, (_, outputContent), errors) -> 
> outputContent, errors |> 
> │ > List.map fst)
> │ > |> _assertEqual (
> │ >     Some (
> │ >         Some """let rec closure1 () () : unit =
> │ >     let v0 : (string -> unit) = System.Console.WriteLine
> │ >     let v1 : string = "text"
> │ >     v0 v1
> │ > and closure0 () () : int32 =
> │ >     let v1 : unit = ()
> │ >     let v2 : (unit -> unit) = closure1()
> │ >     let v3 : unit = (fun () -> v2 (); v1) ()
> │ >     1
> │ > let v0 : (unit -> int32) = closure0()
> │ > ()
> │ > """,
> │ >         [[]]
> │ >     )
> │ > )
> │ > 
> │ > ── [ 3.52s - stdout ] 
> ──────────────────────────────────────────────────────────
> │ > │ 00:01:58 v #1 Supervisor.buildFile 
> / fullPathUri: 
> │ > 
> "file:///c:/home/git/polyglot/target/spiral_Eval/packages/22ccd04317d5605c65f81c
> │ > 7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi"
> │ > │ 00:01:58 v #2 Supervisor.buildFile 
> / _fileOpenResult: 
> │ > <null>
> │ > │ 00:01:58 v #3 Supervisor.buildFile 
> / before result: ()
> │ > │ 00:01:58 v #4 Supervisor.buildFile 
> / takeWhileInclusive 
> │ > / outputContent:
> │ > │ '' / errors: [] / typeErrorCount: 0 / 
> retry: 0 / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777766f
> │ > 357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi
> │ > │ 00:01:58 v #5 Supervisor.buildFile 
> / AsyncSeq.scan / 
> │ > outputContent:
> │ > │ ' / errors: [] / outputContentResult:  /
> typeErrorCount: 0 / 
> │ > retry: 0 / error:  / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777766f
> │ > 357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi'
> │ > │ 00:01:58 v #6 Supervisor.buildFile 
> / takeWhileInclusive 
> │ > / outputContent:
> │ > │ '' / errors: [] / typeErrorCount: 0 / 
> retry: 0 / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777766f
> │ > 357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi
> │ > │ 00:01:58 v #526 
> Supervisor.buildFile / AsyncSeq.scan / 
> │ > outputContent:
> │ > │ ' / errors: [] / outputContentResult:  /
> typeErrorCount: 0 / 
> │ > retry: 0 / error:  / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777766f
> │ > 357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi'
> │ > │ 00:01:58 v #527 
> Supervisor.buildFile / 
> │ > takeWhileInclusive / outputContent:
> │ > │ '' / errors: [] / typeErrorCount: 0 / 
> retry: 0 / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777766f
> │ > 357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi
> │ > │ 00:01:59 v #777 
> Supervisor.buildFile / AsyncSeq.scan / 
> │ > outputContent:
> │ > │ ' / errors: [] / outputContentResult:  /
> typeErrorCount: 0 / 
> │ > retry: 0 / error:  / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777766f
> │ > 357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi'
> │ > │ 00:01:59 v #778 
> Supervisor.buildFile / 
> │ > takeWhileInclusive / outputContent:
> │ > │ '' / errors: [] / typeErrorCount: 0 / 
> retry: 0 / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777766f
> │ > 357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi
> │ > │ 00:01:59 v #1036 
> Supervisor.buildFile / AsyncSeq.scan / 
> │ > outputContent:
> │ > │ ' / errors: [] / outputContentResult:  /
> typeErrorCount: 0 / 
> │ > retry: 0 / error:  / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777766f
> │ > 357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi'
> │ > │ 00:01:59 v #1037 
> Supervisor.buildFile / 
> │ > takeWhileInclusive / outputContent:
> │ > │ '' / errors: [] / typeErrorCount: 0 / 
> retry: 0 / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777766f
> │ > 357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi
> │ > │ 00:02:00 v #1150 
> Supervisor.buildFile / AsyncSeq.scan / 
> │ > outputContent:
> │ > │ ' / errors: [] / outputContentResult:  /
> typeErrorCount: 0 / 
> │ > retry: 0 / error:  / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777766f
> │ > 357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi'
> │ > │ 00:02:00 v #1151 
> Supervisor.buildFile / 
> │ > takeWhileInclusive / outputContent:
> │ > │ '' / errors: [] / typeErrorCount: 0 / 
> retry: 0 / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777766f
> │ > 357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi
> │ > │ 00:02:00 v #1307 
> Supervisor.buildFile / AsyncSeq.scan / 
> │ > outputContent:
> │ > │ ' / errors: [] / outputContentResult:  /
> typeErrorCount: 0 / 
> │ > retry: 0 / error:  / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777766f
> │ > 357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi'
> │ > │ 00:02:00 v #1308 
> Supervisor.buildFile / 
> │ > takeWhileInclusive / outputContent:
> │ > │ '' / errors: [] / typeErrorCount: 0 / 
> retry: 0 / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777766f
> │ > 357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi
> │ > │ 00:02:01 v #1309 
> Supervisor.buildFile / buildFileResult:
> │ > Some
> │ > │   "let rec closure1 () () : unit =
> │ > │     let v0 : (string -> unit) = 
> System.Console.WriteLine
> │ > │     let v1 : string = "text"
> │ > │     v0 v1
> │ > │ and closure0 () () : int32 =
> │ > │     let v1 : unit = ()
> │ > │     let v2 : (unit -> unit) = closure1()
> │ > │     let v3 : unit = (fun () -> v2 (); 
> v1) ()
> │ > │     1
> │ > │ let v0 : (unit -> int32) = closure0()
> │ > │ ()
> │ > │ "
> │ > │ 00:02:01 v #1310 
> Supervisor.buildFile / 
> │ > outputContentSeq2 unfoldAsync / msg: (Some
> │ > │    "let rec closure1 () () : unit =
> │ > │     let v0 : (string -> unit) = 
> System.Console.WriteLine
> │ > │     let v1 : string = "text"
> │ > │     v0 v1
> │ > │ and closure0 () () : int32 =
> │ > │     let v1 : unit = ()
> │ > │     let v2 : (unit -> unit) = closure1()
> │ > │     let v3 : unit = (fun () -> v2 (); 
> v1) ()
> │ > │     1
> │ > │ let v0 : (unit -> int32) = closure0()
> │ > │ ()
> │ > │ ",
> │ > │  [], 0)
> │ > │ 00:02:01 v #1311 
> Supervisor.buildFile / ofSeqAsync / x: 
> │ > (Some
> │ > │    "let rec closure1 () () : unit =
> │ > │     let v0 : (string -> unit) = 
> System.Console.WriteLine
> │ > │     let v1 : string = "text"
> │ > │     v0 v1
> │ > │ and closure0 () () : int32 =
> │ > │     let v1 : unit = ()
> │ > │     let v2 : (unit -> unit) = closure1()
> │ > │     let v3 : unit = (fun () -> v2 (); 
> v1) ()
> │ > │     1
> │ > │ let v0 : (unit -> int32) = closure0()
> │ > │ ()
> │ > │ ",
> │ > │  [], 0)
> │ > │ 00:02:01 v #1312 
> Supervisor.buildFile / result: [] / 
> │ > buildFileResult: Some
> │ > │   "let rec closure1 () () : unit =
> │ > │     let v0 : (string -> unit) = 
> System.Console.WriteLine
> │ > │     let v1 : string = "text"
> │ > │     v0 v1
> │ > │ and closure0 () () : int32 =
> │ > │     let v1 : unit = ()
> │ > │     let v2 : (unit -> unit) = closure1()
> │ > │     let v3 : unit = (fun () -> v2 (); 
> v1) ()
> │ > │     1
> │ > │ let v0 : (unit -> int32) = closure0()
> │ > │ ()
> │ > │ " / typeErrorCount: 0
> │ > │ 00:02:01 v #1313 
> Supervisor.buildFile / retry: 0 / 
> │ > typeErrorCount: 0 / fileDir: 
> │ > 
> c:\home\git\polyglot\target\spiral_Eval\packages\22ccd04317d5605c65f81c7f777766f
> │ > 357e85dc69f2d6d04b9dc60aebd08a0d6 / targetDir: 
> c:/home/git\polyglot\target
> │ > │ Some
> │ > │   (Some
> │ > │      "let rec closure1 () () : unit =
> │ > │     let v0 : (string -> unit) = 
> System.Console.WriteLine
> │ > │     let v1 : string = "text"
> │ > │     v0 v1
> │ > │ and closure0 () () : int32 =
> │ > │     let v1 : unit = ()
> │ > │     let v2 : (unit -> unit) = closure1()
> │ > │     let v3 : unit = (fun () -> v2 (); 
> v1) ()
> │ > │     1
> │ > │ let v0 : (unit -> int32) = closure0()
> │ > │ ()
> │ > │ ",
> │ > │    [])
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > """
> │ > inl init_series start end inc =
> │ >     inl total : f64 = conv ((end - start) / inc) + 1
> │ >     listm.init total (conv >> (*) inc >> (+) start) : list 
> f64
> │ > 
> │ > type integration = (f64 -> f64) -> f64 -> f64 -> f64
> │ > 
> │ > inl integral dt : integration =
> │ >     fun f a b =>
> │ >         init_series (a + dt / 2) (b - dt / 2) dt
> │ >         |> listm.map (f >> (*) dt)
> │ >         |> listm.fold (+) 0
> │ > 
> │ > inl main () =
> │ >     integral 0.1 (fun x => x ** 2) 0 1
> │ > """
> │ > |> fun code -> Spi (code, None)
> │ > |> buildCode Fsharp [[||]] false 10000 None
> │ > |> Async.runWithTimeout 11000
> │ > |> Option.map (fun (_, (_, outputContent), errors) -> 
> outputContent, errors |> 
> │ > List.map fst)
> │ > |> _assertEqual (
> │ >     Some (
> │ >         Some "0.3325000000000001\n",
> │ >         [[]]
> │ >     )
> │ > )
> │ > 
> │ > ── [ 745.93ms - stdout ] 
> ───────────────────────────────────────────────────────
> │ > │ 00:02:01 v #1316 
> Supervisor.buildFile / 
> │ > takeWhileInclusive / outputContent:
> │ > │ '' / errors: [] / typeErrorCount: 0 / 
> retry: 0 / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\c127414de2a2a92d9fd93ea5a8e9312
> │ > a6aad9129ffd3cbd56ac7f0327106f1db\main.spi
> │ > │ 00:02:01 v #1317 
> Supervisor.buildFile / AsyncSeq.scan / 
> │ > outputContent:
> │ > │ ' / errors: [] / outputContentResult:  /
> typeErrorCount: 0 / 
> │ > retry: 0 / error:  / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\c127414de2a2a92d9fd93ea5a8e9312
> │ > a6aad9129ffd3cbd56ac7f0327106f1db\main.spi'
> │ > │ 00:02:01 v #1318 
> Supervisor.buildFile / fullPathUri: 
> │ > 
> "file:///c:/home/git/polyglot/target/spiral_Eval/packages/c127414de2a2a92d9fd93e
> │ > a5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi"
> │ > │ 00:02:01 v #1319 
> Supervisor.buildFile / 
> │ > takeWhileInclusive / outputContent:
> │ > │ '' / errors: [] / typeErrorCount: 0 / 
> retry: 0 / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\c127414de2a2a92d9fd93ea5a8e9312
> │ > a6aad9129ffd3cbd56ac7f0327106f1db\main.spi
> │ > │ 00:02:01 v #1320 
> Supervisor.buildFile / _fileOpenResult:
> │ > <null>
> │ > │ 00:02:01 v #1321 
> Supervisor.buildFile / before result: 
> │ > ()
> │ > │ 00:02:02 v #1557 
> Supervisor.buildFile / buildFileResult:
> │ > Some "0.3325000000000001
> │ > │ "
> │ > │ 00:02:02 v #1558 
> Supervisor.buildFile / 
> │ > outputContentSeq2 unfoldAsync / msg: (Some 
> "0.3325000000000001
> │ > │ ", [], 0)
> │ > │ 00:02:02 v #1559 
> Supervisor.buildFile / ofSeqAsync / x: 
> │ > (Some "0.3325000000000001
> │ > │ ", [], 0)
> │ > │ 00:02:02 v #1560 
> Supervisor.buildFile / result: [] / 
> │ > buildFileResult: Some "0.3325000000000001
> │ > │ " / typeErrorCount: 0
> │ > │ 00:02:02 v #1561 
> Supervisor.buildFile / retry: 0 / 
> │ > typeErrorCount: 0 / fileDir: 
> │ > 
> c:\home\git\polyglot\target\spiral_Eval\packages\c127414de2a2a92d9fd93ea5a8e9312
> │ > a6aad9129ffd3cbd56ac7f0327106f1db / targetDir: 
> c:/home/git\polyglot\target
> │ > │ Some (Some "0.3325000000000001
> │ > │ ", [])
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > """
> │ > inl init_series start end inc =
> │ >     inl total : f64 = conv ((end - start) / inc) + 1
> │ >     listm.init total (conv >> (*) inc >> (+) start) : list 
> f64
> │ > 
> │ > type integration = (f64 -> f64) -> f64 -> f64 -> f64
> │ > 
> │ > inl integral dt : integration =
> │ >     fun f a b =>
> │ >         init_series (a + dt / 2) (b - dt / 2) dt
> │ >         |> listm.map (f >> (*) dt)
> │ >         |> listm.fold (+) 0
> │ > 
> │ > inl main () =
> │ >     integral 0.1 (fun x => x ** 2) 0 1
> │ > """
> │ > |> fun code -> Spi (code, None)
> │ > |> buildCode Cuda [[||]] false 10000 None
> │ > |> Async.runWithTimeout 11000
> │ > |> Option.map (fun (_, (_, outputContent), errors) -> 
> outputContent, errors |> 
> │ > List.map fst)
> │ > |> _assertEqual (
> │ >     Some (
> │ >         Some @"kernel = r""""""
> │ > """"""
> │ > class static_array():
> │ >     def __init__(self, length):
> │ >         self.ptr = [[]]
> │ >         for _ in range(length):
> │ >             self.ptr.append(None)
> │ > 
> │ >     def __getitem__(self, index):
> │ >         assert 0 <= index < len(self.ptr), ""The get index 
> needs to be in 
> │ > range.""
> │ >         return self.ptr[[index]]
> │ >     
> │ >     def __setitem__(self, index, value):
> │ >         assert 0 <= index < len(self.ptr), ""The set index 
> needs to be in 
> │ > range.""
> │ >         self.ptr[[index]] = value
> │ > 
> │ > class static_array_list(static_array):
> │ >     def __init__(self, length):
> │ >         super().__init__(length)
> │ >         self.length = 0
> │ > 
> │ >     def __getitem__(self, index):
> │ >         assert 0 <= index < self.length, ""The get index 
> needs to be in range.""
> │ >         return self.ptr[[index]]
> │ >     
> │ >     def __setitem__(self, index, value):
> │ >         assert 0 <= index < self.length, ""The set index 
> needs to be in range.""
> │ >         self.ptr[[index]] = value
> │ > 
> │ >     def push(self,value):
> │ >         assert (self.length < len(self.ptr)), ""The length 
> before pushing has to
> │ > be less than the maximum length of the array.""
> │ >         self.ptr[[self.length]] = value
> │ >         self.length += 1
> │ > 
> │ >     def pop(self):
> │ >         assert (0 < self.length), ""The length before 
> popping has to be greater 
> │ > than 0.""
> │ >         self.length -= 1
> │ >         return self.ptr[[self.length]]
> │ > 
> │ >     def unsafe_set_length(self,i):
> │ >         assert 0 <= i <= len(self.ptr), ""The new length 
> has to be in range.""
> │ >         self.length = i
> │ > 
> │ > class dynamic_array(static_array): 
> │ >     pass
> │ > 
> │ > class dynamic_array_list(static_array_list):
> │ >     def length_(self): return self.length
> │ > 
> │ > import cupy as cp
> │ > import numpy as np
> │ > from dataclasses import dataclass
> │ > from typing import NamedTuple, Union, Callable, Tuple
> │ > i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 = 
> int; u32 = int; u64 =
> │ > int; f32 = float; f64 = float; char = str; string = str
> │ > cuda = False
> │ > 
> │ > def main_body():
> │ >     return 0.3325000000000001
> │ > 
> │ > def main():
> │ >     r = main_body()
> │ >     if cuda: cp.cuda.get_current_stream().synchronize() # 
> This line is here so 
> │ > the `__trap()` calls on the kernel aren't missed.
> │ >     return r
> │ > 
> │ > if __name__ == '__main__': result = main(); None if result 
> is None else 
> │ > print(result)
> │ > ",
> │ >         [[]]
> │ >     )
> │ > )
> │ > 
> │ > ── [ 695.98ms - stdout ] 
> ───────────────────────────────────────────────────────
> │ > │ 00:02:02 v #1566 
> Supervisor.buildFile / 
> │ > takeWhileInclusive / outputContent:
> │ > │ '' / errors: [] / typeErrorCount: 0 / 
> retry: 0 / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\ca288d6928a8e761855210f25f97fdc
> │ > 056ee1f21be4a24b26e8533ec368831c8\main.spi
> │ > │ 00:02:02 v #1567 
> Supervisor.buildFile / AsyncSeq.scan / 
> │ > outputContent:
> │ > │ ' / errors: [] / outputContentResult:  /
> typeErrorCount: 0 / 
> │ > retry: 0 / error:  / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\ca288d6928a8e761855210f25f97fdc
> │ > 056ee1f21be4a24b26e8533ec368831c8\main.spi'
> │ > │ 00:02:02 v #1568 
> Supervisor.buildFile / 
> │ > takeWhileInclusive / outputContent:
> │ > │ '' / errors: [] / typeErrorCount: 0 / 
> retry: 0 / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\ca288d6928a8e761855210f25f97fdc
> │ > 056ee1f21be4a24b26e8533ec368831c8\main.spi
> │ > │ 00:02:02 v #1569 
> Supervisor.buildFile / fullPathUri: 
> │ > 
> "file:///c:/home/git/polyglot/target/spiral_Eval/packages/ca288d6928a8e761855210
> │ > f25f97fdc056ee1f21be4a24b26e8533ec368831c8/main.spi"
> │ > │ 00:02:02 v #1570 
> Supervisor.buildFile / _fileOpenResult:
> │ > <null>
> │ > │ 00:02:02 v #1571 
> Supervisor.buildFile / before result: 
> │ > ()
> │ > │ 00:02:02 v #1805 
> Supervisor.buildFile / buildFileResult:
> │ > Some
> │ > │   "kernel = r"""
> │ > │ """
> │ > │ class static_array():
> │ > │     def __init__(self, length):
> │ > │         self.ptr = []
> │ > │         for _ in range(length):
> │ > │             self.ptr.append(None)
> │ > │ 
> │ > │     def __getitem__(self, index):
> │ > │         assert 0 <= index < 
> len(self.ptr), "The get index 
> │ > needs to be in range."
> │ > │         return self.ptr[index]
> │ > │     
> │ > │     def __setitem__(self, index, value):
> │ > │         assert 0 <= index < 
> len(self.ptr), "The set index 
> │ > needs to be in range."
> │ > │         self.ptr[index] = value
> │ > │ 
> │ > │ class static_array_list(static_array):
> │ > │     def __init__(self, length):
> │ > │         super().__init__(length)
> │ > │         self.length = 0
> │ > │ 
> │ > │     def __getitem__(self, index):
> │ > │         assert 0 <= index < self.length,
> "The get index needs
> │ > to be in range."
> │ > │         return self.ptr[index]
> │ > │     
> │ > │     def __setitem__(self, index, value):
> │ > │         assert 0 <= index < self.length,
> "The set index needs
> │ > to be in range."
> │ > │         self.ptr[index] = value
> │ > │ 
> │ > │     def push(self,value):
> │ > │         assert (self.length < 
> len(self.ptr)), "The length 
> │ > before pushing has to be less than the maximum length of 
> the array."
> │ > │         self.ptr[self.length] = value
> │ > │         self.length += 1
> │ > │ 
> │ > │     def pop(self):
> │ > │         assert (0 < self.length), "The 
> length before popping 
> │ > has to be greater than 0."
> │ > │         self.length -= 1
> │ > │         return self.ptr[self.length]
> │ > │ 
> │ > │     def unsafe_set_length(self,i):
> │ > │         assert 0 <= i <= len(self.ptr), 
> "The new length has 
> │ > to be in range."
> │ > │         self.length = i
> │ > │ 
> │ > │ class dynamic_array(static_array): 
> │ > │     pass
> │ > │ 
> │ > │ class 
> dynamic_array_list(static_array_list):
> │ > │     def length_(self): return 
> self.length
> │ > │ 
> │ > │ import cupy as cp
> │ > │ import numpy as np
> │ > │ from dataclasses import dataclass
> │ > │ from typing import NamedTuple, Union, 
> Callable, Tuple
> │ > │ i8 = int; i16 = int; i32 = int; i64 = 
> int; u8 = int; u16 = 
> │ > int; u32 = int; u64 = int; f32 = float; f64 = float; char =
> str; string = str
> │ > │ cuda = False
> │ > │ 
> │ > │ def main_body():
> │ > │     return 0.3325000000000001
> │ > │ 
> │ > │ def main():
> │ > │     r = main_body()
> │ > │     if cuda: 
> cp.cuda.get_current_stream().synchronize() # 
> │ > This line is here so the `__trap()` calls on the kernel 
> aren't missed.
> │ > │     return r
> │ > │ 
> │ > │ if __name__ == '__main__': result = 
> main(); None if result is
> │ > None else print(result)
> │ > │ "
> │ > │ 00:02:02 v #1806 
> Supervisor.buildFile / 
> │ > outputContentSeq2 unfoldAsync / msg: (Some
> │ > │    "kernel = r"""
> │ > │ """
> │ > │ class static_array():
> │ > │     def __init__(self, length):
> │ > │         self.ptr = []
> │ > │         for _ in range(length):
> │ > │             self.ptr.append(None)
> │ > │ 
> │ > │     def __getitem__(self, index):
> │ > │         assert 0 <= index < 
> len(self.ptr), "The get index 
> │ > needs to be in range."
> │ > │         return self.ptr[index]
> │ > │     
> │ > │     def __setitem__(self, index, value):
> │ > │         assert 0 <= index < 
> len(self.ptr), "The set index 
> │ > needs to be in range."
> │ > │         self.ptr[index] = value
> │ > │ 
> │ > │ class static_array_list(static_array):
> │ > │     def __init__(self, length):
> │ > │         super().__init__(length)
> │ > │         self.length = 0
> │ > │ 
> │ > │     def __getitem__(self, index):
> │ > │         assert 0 <= index < self.length,
> "The get index needs
> │ > to be in range."
> │ > │         return self.ptr[index]
> │ > │     
> │ > │     def __setitem__(self, index, value):
> │ > │         assert 0 <= index < self.length,
> "The set index needs
> │ > to be in range."
> │ > │         self.ptr[index] = value
> │ > │ 
> │ > │     def push(self,value):
> │ > │         assert (self.length < 
> len(self.ptr)), "The length 
> │ > before pushing has to be less than the maximum length of 
> the array."
> │ > │         self.ptr[self.length] = value
> │ > │         self.length += 1
> │ > │ 
> │ > │     def pop(self):
> │ > │         assert (0 < self.length), "The 
> length before popping 
> │ > has to be greater than 0."
> │ > │         self.length -= 1
> │ > │         return self.ptr[self.length]
> │ > │ 
> │ > │     def unsafe_set_length(self,i):
> │ > │         assert 0 <= i <= len(self.ptr), 
> "The new length has 
> │ > to be in range."
> │ > │         self.length = i
> │ > │ 
> │ > │ class dynamic_array(static_array): 
> │ > │     pass
> │ > │ 
> │ > │ class 
> dynamic_array_list(static_array_list):
> │ > │     def length_(self): return 
> self.length
> │ > │ 
> │ > │ import cupy as cp
> │ > │ import numpy as np
> │ > │ from dataclasses import dataclass
> │ > │ from typing import NamedTuple, Union, 
> Callable, Tuple
> │ > │ i8 = int; i16 = int; i32 = int; i64 = 
> int; u8 = int; u16 = 
> │ > int; u32 = int; u64 = int; f32 = float; f64 = float; char =
> str; string = str
> │ > │ cuda = False
> │ > │ 
> │ > │ def main_body():
> │ > │     return 0.3325000000000001
> │ > │ 
> │ > │ def main():
> │ > │     r = main_body()
> │ > │     if cuda: 
> cp.cuda.get_current_stream().synchronize() # 
> │ > This line is here so the `__trap()` calls on the kernel 
> aren't missed.
> │ > │     return r
> │ > │ 
> │ > │ if __name__ == '__main__': result = 
> main(); None if result is
> │ > None else print(result)
> │ > │ ",
> │ > │  [], 0)
> │ > │ 00:02:02 v #1807 
> Supervisor.buildFile / ofSeqAsync / x: 
> │ > (Some
> │ > │    "kernel = r"""
> │ > │ """
> │ > │ class static_array():
> │ > │     def __init__(self, length):
> │ > │         self.ptr = []
> │ > │         for _ in range(length):
> │ > │             self.ptr.append(None)
> │ > │ 
> │ > │     def __getitem__(self, index):
> │ > │         assert 0 <= index < 
> len(self.ptr), "The get index 
> │ > needs to be in range."
> │ > │         return self.ptr[index]
> │ > │     
> │ > │     def __setitem__(self, index, value):
> │ > │         assert 0 <= index < 
> len(self.ptr), "The set index 
> │ > needs to be in range."
> │ > │         self.ptr[index] = value
> │ > │ 
> │ > │ class static_array_list(static_array):
> │ > │     def __init__(self, length):
> │ > │         super().__init__(length)
> │ > │         self.length = 0
> │ > │ 
> │ > │     def __getitem__(self, index):
> │ > │         assert 0 <= index < self.length,
> "The get index needs
> │ > to be in range."
> │ > │         return self.ptr[index]
> │ > │     
> │ > │     def __setitem__(self, index, value):
> │ > │         assert 0 <= index < self.length,
> "The set index needs
> │ > to be in range."
> │ > │         self.ptr[index] = value
> │ > │ 
> │ > │     def push(self,value):
> │ > │         assert (self.length < 
> len(self.ptr)), "The length 
> │ > before pushing has to be less than the maximum length of 
> the array."
> │ > │         self.ptr[self.length] = value
> │ > │         self.length += 1
> │ > │ 
> │ > │     def pop(self):
> │ > │         assert (0 < self.length), "The 
> length before popping 
> │ > has to be greater than 0."
> │ > │         self.length -= 1
> │ > │         return self.ptr[self.length]
> │ > │ 
> │ > │     def unsafe_set_length(self,i):
> │ > │         assert 0 <= i <= len(self.ptr), 
> "The new length has 
> │ > to be in range."
> │ > │         self.length = i
> │ > │ 
> │ > │ class dynamic_array(static_array): 
> │ > │     pass
> │ > │ 
> │ > │ class 
> dynamic_array_list(static_array_list):
> │ > │     def length_(self): return 
> self.length
> │ > │ 
> │ > │ import cupy as cp
> │ > │ import numpy as np
> │ > │ from dataclasses import dataclass
> │ > │ from typing import NamedTuple, Union, 
> Callable, Tuple
> │ > │ i8 = int; i16 = int; i32 = int; i64 = 
> int; u8 = int; u16 = 
> │ > int; u32 = int; u64 = int; f32 = float; f64 = float; char =
> str; string = str
> │ > │ cuda = False
> │ > │ 
> │ > │ def main_body():
> │ > │     return 0.3325000000000001
> │ > │ 
> │ > │ def main():
> │ > │     r = main_body()
> │ > │     if cuda: 
> cp.cuda.get_current_stream().synchronize() # 
> │ > This line is here so the `__trap()` calls on the kernel 
> aren't missed.
> │ > │     return r
> │ > │ 
> │ > │ if __name__ == '__main__': result = 
> main(); None if result is
> │ > None else print(result)
> │ > │ ",
> │ > │  [], 0)
> │ > │ 00:02:02 v #1808 
> Supervisor.buildFile / result: [] / 
> │ > buildFileResult: Some
> │ > │   "kernel = r"""
> │ > │ """
> │ > │ class static_array():
> │ > │     def __init__(self, length):
> │ > │         self.ptr = []
> │ > │         for _ in range(length):
> │ > │             self.ptr.append(None)
> │ > │ 
> │ > │     def __getitem__(self, index):
> │ > │         assert 0 <= index < 
> len(self.ptr), "The get index 
> │ > needs to be in range."
> │ > │         return self.ptr[index]
> │ > │     
> │ > │     def __setitem__(self, index, value):
> │ > │         assert 0 <= index < 
> len(self.ptr), "The set index 
> │ > needs to be in range."
> │ > │         self.ptr[index] = value
> │ > │ 
> │ > │ class static_array_list(static_array):
> │ > │     def __init__(self, length):
> │ > │         super().__init__(length)
> │ > │         self.length = 0
> │ > │ 
> │ > │     def __getitem__(self, index):
> │ > │         assert 0 <= index < self.length,
> "The get index needs
> │ > to be in range."
> │ > │         return self.ptr[index]
> │ > │     
> │ > │     def __setitem__(self, index, value):
> │ > │         assert 0 <= index < self.length,
> "The set index needs
> │ > to be in range."
> │ > │         self.ptr[index] = value
> │ > │ 
> │ > │     def push(self,value):
> │ > │         assert (self.length < 
> len(self.ptr)), "The length 
> │ > before pushing has to be less than the maximum length of 
> the array."
> │ > │         self.ptr[self.length] = value
> │ > │         self.length += 1
> │ > │ 
> │ > │     def pop(self):
> │ > │         assert (0 < self.length), "The 
> length before popping 
> │ > has to be greater than 0."
> │ > │         self.length -= 1
> │ > │         return self.ptr[self.length]
> │ > │ 
> │ > │     def unsafe_set_length(self,i):
> │ > │         assert 0 <= i <= len(self.ptr), 
> "The new length has 
> │ > to be in range."
> │ > │         self.length = i
> │ > │ 
> │ > │ class dynamic_array(static_array): 
> │ > │     pass
> │ > │ 
> │ > │ class 
> dynamic_array_list(static_array_list):
> │ > │     def length_(self): return 
> self.length
> │ > │ 
> │ > │ import cupy as cp
> │ > │ import numpy as np
> │ > │ from dataclasses import dataclass
> │ > │ from typing import NamedTuple, Union, 
> Callable, Tuple
> │ > │ i8 = int; i16 = int; i32 = int; i64 = 
> int; u8 = int; u16 = 
> │ > int; u32 = int; u64 = int; f32 = float; f64 = float; char =
> str; string = str
> │ > │ cuda = False
> │ > │ 
> │ > │ def main_body():
> │ > │     return 0.3325000000000001
> │ > │ 
> │ > │ def main():
> │ > │     r = main_body()
> │ > │     if cuda: 
> cp.cuda.get_current_stream().synchronize() # 
> │ > This line is here so the `__trap()` calls on the kernel 
> aren't missed.
> │ > │     return r
> │ > │ 
> │ > │ if __name__ == '__main__': result = 
> main(); None if result is
> │ > None else print(result)
> │ > │ " / typeErrorCount: 0
> │ > │ 00:02:02 v #1809 
> Supervisor.buildFile / retry: 0 / 
> │ > typeErrorCount: 0 / fileDir: 
> │ > 
> c:\home\git\polyglot\target\spiral_Eval\packages\ca288d6928a8e761855210f25f97fdc
> │ > 056ee1f21be4a24b26e8533ec368831c8 / targetDir: 
> c:/home/git\polyglot\target
> │ > │ Some
> │ > │   (Some
> │ > │      "kernel = r"""
> │ > │ """
> │ > │ class static_array():
> │ > │     def __init__(self, length):
> │ > │         self.ptr = []
> │ > │         for _ in range(length):
> │ > │             self.ptr.append(None)
> │ > │ 
> │ > │     def __getitem__(self, index):
> │ > │         assert 0 <= index < 
> len(self.ptr), "The get index 
> │ > needs to be in range."
> │ > │         return self.ptr[index]
> │ > │     
> │ > │     def __setitem__(self, index, value):
> │ > │         assert 0 <= index < 
> len(self.ptr), "The set index 
> │ > needs to be in range."
> │ > │         self.ptr[index] = value
> │ > │ 
> │ > │ class static_array_list(static_array):
> │ > │     def __init__(self, length):
> │ > │         super().__init__(length)
> │ > │         self.length = 0
> │ > │ 
> │ > │     def __getitem__(self, index):
> │ > │         assert 0 <= index < self.length,
> "The get index needs
> │ > to be in range."
> │ > │         return self.ptr[index]
> │ > │     
> │ > │     def __setitem__(self, index, value):
> │ > │         assert 0 <= index < self.length,
> "The set index needs
> │ > to be in range."
> │ > │         self.ptr[index] = value
> │ > │ 
> │ > │     def push(self,value):
> │ > │         assert (self.length < 
> len(self.ptr)), "The length 
> │ > before pushing has to be less than the maximum length of 
> the array."
> │ > │         self.ptr[self.length] = value
> │ > │         self.length += 1
> │ > │ 
> │ > │     def pop(self):
> │ > │         assert (0 < self.length), "The 
> length before popping 
> │ > has to be greater than 0."
> │ > │         self.length -= 1
> │ > │         return self.ptr[self.length]
> │ > │ 
> │ > │     def unsafe_set_length(self,i):
> │ > │         assert 0 <= i <= len(self.ptr), 
> "The new length has 
> │ > to be in range."
> │ > │         self.length = i
> │ > │ 
> │ > │ class dynamic_array(static_array): 
> │ > │     pass
> │ > │ 
> │ > │ class 
> dynamic_array_list(static_array_list):
> │ > │     def length_(self): return 
> self.length
> │ > │ 
> │ > │ import cupy as cp
> │ > │ import numpy as np
> │ > │ from dataclasses import dataclass
> │ > │ from typing import NamedTuple, Union, 
> Callable, Tuple
> │ > │ i8 = int; i16 = int; i32 = int; i64 = 
> int; u8 = int; u16 = 
> │ > int; u32 = int; u64 = int; f32 = float; f64 = float; char =
> str; string = str
> │ > │ cuda = False
> │ > │ 
> │ > │ def main_body():
> │ > │     return 0.3325000000000001
> │ > │ 
> │ > │ def main():
> │ > │     r = main_body()
> │ > │     if cuda: 
> cp.cuda.get_current_stream().synchronize() # 
> │ > This line is here so the `__trap()` calls on the kernel 
> aren't missed.
> │ > │     return r
> │ > │ 
> │ > │ if __name__ == '__main__': result = 
> main(); None if result is
> │ > None else print(result)
> │ > │ ",
> │ > │    [])
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > """
> │ > inl init_series start end inc =
> │ >     inl total : f64 = conv ((end - start) / inc) + 1
> │ >     listm.init total (conv >> (*) inc >> (+) start) : list 
> f64
> │ > 
> │ > type integration = (f64 -> f64) -> f64 -> f64 -> f64
> │ > 
> │ > inl integral dt : integration =
> │ >     fun f a b =>
> │ >         init_series (a + dt / 2) (b - dt / 2) dt
> │ >         |> listm.map (f >> (*) dt)
> │ >         |> listm.fold (+) 0
> │ > 
> │ > inl main () =
> │ >     integral 0.1 (fun x => x ** 2) 0 1
> │ > """
> │ > |> fun code -> Spi (code, None)
> │ > |> buildCode Gleam [[||]] false 10000 None
> │ > |> Async.runWithTimeout 11000
> │ > |> Option.map (fun (_, (_, outputContent), errors) -> 
> outputContent, errors |> 
> │ > List.map fst)
> │ > |> _assertEqual (
> │ >     Some (
> │ >         Some "pub fn main () { 0.3325000000000001\n }",
> │ >         [[]]
> │ >     )
> │ > )
> │ > 
> │ > ── [ 648.10ms - stdout ] 
> ───────────────────────────────────────────────────────
> │ > │ 00:02:03 v #1816 
> Supervisor.buildFile / 
> │ > takeWhileInclusive / outputContent:
> │ > │ '' / errors: [] / typeErrorCount: 0 / 
> retry: 0 / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\9fee147a19a3a90ab5113d3c8fb7b0b
> │ > 2072de018aa3d73cd2d4eb0e7e7a32620\src\main.spi
> │ > │ 00:02:03 v #1817 
> Supervisor.buildFile / AsyncSeq.scan / 
> │ > outputContent:
> │ > │ ' / errors: [] / outputContentResult:  /
> typeErrorCount: 0 / 
> │ > retry: 0 / error:  / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\9fee147a19a3a90ab5113d3c8fb7b0b
> │ > 2072de018aa3d73cd2d4eb0e7e7a32620\src\main.spi'
> │ > │ 00:02:03 v #1818 
> Supervisor.buildFile / 
> │ > takeWhileInclusive / outputContent:
> │ > │ '' / errors: [] / typeErrorCount: 0 / 
> retry: 0 / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\9fee147a19a3a90ab5113d3c8fb7b0b
> │ > 2072de018aa3d73cd2d4eb0e7e7a32620\src\main.spi
> │ > │ 00:02:03 v #1819 
> Supervisor.buildFile / fullPathUri: 
> │ > 
> "file:///c:/home/git/polyglot/target/spiral_Eval/packages/9fee147a19a3a90ab5113d
> │ > 3c8fb7b0b2072de018aa3d73cd2d4eb0e7e7a32620/src/main.spi"
> │ > │ 00:02:03 v #1820 
> Supervisor.buildFile / _fileOpenResult:
> │ > <null>
> │ > │ 00:02:03 v #1821 
> Supervisor.buildFile / before result: 
> │ > ()
> │ > │ 00:02:03 v #2057 
> Supervisor.buildFile / buildFileResult:
> │ > Some "pub fn main () { 0.3325000000000001
> │ > │  }"
> │ > │ 00:02:03 v #2058 
> Supervisor.buildFile / 
> │ > outputContentSeq2 unfoldAsync / msg: (Some "pub fn main () 
> { 0.3325000000000001
> │ > │  }", [], 0)
> │ > │ 00:02:03 v #2059 
> Supervisor.buildFile / ofSeqAsync / x: 
> │ > (Some "pub fn main () { 0.3325000000000001
> │ > │  }", [], 0)
> │ > │ 00:02:03 v #2060 
> Supervisor.buildFile / result: [] / 
> │ > buildFileResult: Some "pub fn main () { 0.3325000000000001
> │ > │  }" / typeErrorCount: 0
> │ > │ 00:02:03 v #2061 
> Supervisor.buildFile / retry: 0 / 
> │ > typeErrorCount: 0 / fileDir: 
> │ > 
> c:\home\git\polyglot\target\spiral_Eval\packages\9fee147a19a3a90ab5113d3c8fb7b0b
> │ > 2072de018aa3d73cd2d4eb0e7e7a32620\src / targetDir: 
> c:/home/git\polyglot\target
> │ > │ Some (Some "pub fn main () { 
> 0.3325000000000001
> │ > │  }", [])
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > SpiralTrace.TraceLevel.US0_0 |> set_trace_level
> │ > """
> │ > inl init_series start end inc =
> │ >     inl total : f64 = conv ((end - start) / inc) + 1
> │ >     listm.init total (conv >> (*) inc >> (+) start) : list 
> f64
> │ > 
> │ > type integration = (f64 -> f64) -> f64 -> f64 -> f64
> │ > 
> │ > inl integral dt : integration =
> │ >     fun f a b =>
> │ >         init_series (a + dt / 2) (b - dt / 2) dt
> │ >         |> listm.map (f >> (*) dt)
> │ >         |> listm.fold (+) 0
> │ > 
> │ > inl main () =
> │ >     integral 0.01 (fun x => x ** 2) 0 1
> │ > """
> │ > |> fun code -> Spi (code, None)
> │ > |> buildCode Fsharp [[||]] false 10000 None
> │ > |> Async.runWithTimeout 11000
> │ > |> Option.map (fun (_, (_, outputContent), errors) -> 
> outputContent, errors |> 
> │ > List.map fst)
> │ > |> _assertEqual (
> │ >     Some (
> │ >         Some "0.33332500000000004\n",
> │ >         [[]]
> │ >     )
> │ > )
> │ > // |> _assertEqual None
> │ > // |> fun x -> printfn $"{x.ToDisplayString ()}"
> │ > 
> │ > ── [ 709.14ms - stdout ] 
> ───────────────────────────────────────────────────────
> │ > │ 00:02:03 v #2070 
> Supervisor.buildFile / 
> │ > takeWhileInclusive / outputContent:
> │ > │ '' / errors: [] / typeErrorCount: 0 / 
> retry: 0 / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\2acc44d97e6b50ce3caf39a0b931356
> │ > 33484d22c3ef6e7797ce64875a41451f4\main.spi
> │ > │ 00:02:03 v #2071 
> Supervisor.buildFile / AsyncSeq.scan / 
> │ > outputContent:
> │ > │ ' / errors: [] / outputContentResult:  /
> typeErrorCount: 0 / 
> │ > retry: 0 / error:  / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\2acc44d97e6b50ce3caf39a0b931356
> │ > 33484d22c3ef6e7797ce64875a41451f4\main.spi'
> │ > │ 00:02:03 v #2072 
> Supervisor.buildFile / 
> │ > takeWhileInclusive / outputContent:
> │ > │ '' / errors: [] / typeErrorCount: 0 / 
> retry: 0 / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\2acc44d97e6b50ce3caf39a0b931356
> │ > 33484d22c3ef6e7797ce64875a41451f4\main.spi
> │ > │ 00:02:03 v #2073 
> Supervisor.buildFile / fullPathUri: 
> │ > 
> "file:///c:/home/git/polyglot/target/spiral_Eval/packages/2acc44d97e6b50ce3caf39
> │ > a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi"
> │ > │ 00:02:03 v #2074 
> Supervisor.buildFile / _fileOpenResult:
> │ > <null>
> │ > │ 00:02:03 v #2075 
> Supervisor.buildFile / before result: 
> │ > ()
> │ > │ 00:02:04 v #2313 
> Supervisor.buildFile / buildFileResult:
> │ > Some "0.33332500000000004
> │ > │ "
> │ > │ 00:02:04 v #2314 
> Supervisor.buildFile / 
> │ > outputContentSeq2 unfoldAsync / msg: (Some 
> "0.33332500000000004
> │ > │ ", [], 0)
> │ > │ 00:02:04 v #2315 
> Supervisor.buildFile / ofSeqAsync / x: 
> │ > (Some "0.33332500000000004
> │ > │ ", [], 0)
> │ > │ 00:02:04 v #2316 
> Supervisor.buildFile / result: [] / 
> │ > buildFileResult: Some "0.33332500000000004
> │ > │ " / typeErrorCount: 0
> │ > │ 00:02:04 v #2317 
> Supervisor.buildFile / retry: 0 / 
> │ > typeErrorCount: 0 / fileDir: 
> │ > 
> c:\home\git\polyglot\target\spiral_Eval\packages\2acc44d97e6b50ce3caf39a0b931356
> │ > 33484d22c3ef6e7797ce64875a41451f4 / targetDir: 
> c:/home/git\polyglot\target
> │ > │ Some (Some "0.33332500000000004
> │ > │ ", [])
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > SpiralTrace.TraceLevel.US0_0 |> set_trace_level
> │ > ""
> │ > |> fun code -> Spi (code, None)
> │ > |> buildCode Fsharp [[||]] false 10000 None
> │ > |> Async.runWithTimeout 11000
> │ > |> Option.map (fun (_, (_, outputContent), errors) -> 
> outputContent, errors |> 
> │ > List.map fst)
> │ > |> _assertEqual (
> │ >     Some (
> │ >         None,
> │ >         [[ "Cannot find `main` in file main." ]]
> │ >     )
> │ > )
> │ > 
> │ > ── [ 659.35ms - stdout ] 
> ───────────────────────────────────────────────────────
> │ > │ 00:02:04 v #2328 
> Supervisor.buildFile / 
> │ > takeWhileInclusive / outputContent:
> │ > │ '' / errors: [] / typeErrorCount: 0 / 
> retry: 0 / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\a65342ccc7da0da967b18d8e705d026
> │ > 0e9a932e5e68c0feb33db55c4d28170aa\main.spi
> │ > │ 00:02:04 v #2329 
> Supervisor.buildFile / AsyncSeq.scan / 
> │ > outputContent:
> │ > │ ' / errors: [] / outputContentResult:  /
> typeErrorCount: 0 / 
> │ > retry: 0 / error:  / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\a65342ccc7da0da967b18d8e705d026
> │ > 0e9a932e5e68c0feb33db55c4d28170aa\main.spi'
> │ > │ 00:02:04 v #2330 
> Supervisor.buildFile / 
> │ > takeWhileInclusive / outputContent:
> │ > │ '' / errors: [] / typeErrorCount: 0 / 
> retry: 0 / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\a65342ccc7da0da967b18d8e705d026
> │ > 0e9a932e5e68c0feb33db55c4d28170aa\main.spi
> │ > │ 00:02:04 v #2331 
> Supervisor.buildFile / fullPathUri: 
> │ > 
> "file:///c:/home/git/polyglot/target/spiral_Eval/packages/a65342ccc7da0da967b18d
> │ > 8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi"
> │ > │ 00:02:04 v #2332 
> Supervisor.buildFile / _fileOpenResult:
> │ > <null>
> │ > │ 00:02:04 v #2333 
> Supervisor.buildFile / before result: 
> │ > ()
> │ > │ 00:02:04 v #2568 
> Supervisor.buildFile / buildFileResult:
> │ > None
> │ > │ 00:02:04 v #2569 
> Supervisor.buildFile / ofSeqAsync / x: 
> │ > (None, [], 0)
> │ > │ 00:02:04 v #2578 
> Supervisor.buildFile / AsyncSeq.scan / 
> │ > outputContent:
> │ > │ ' / errors: [] / outputContentResult:  /
> typeErrorCount: 0 / 
> │ > retry: 0 / error: Some((Cannot find `main` in file main., 
> FatalError "Cannot 
> │ > find `main` in file main.")) / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\a65342ccc7da0da967b18d8e705d026
> │ > 0e9a932e5e68c0feb33db55c4d28170aa\main.spi'
> │ > │ 00:02:04 v #2579 
> Supervisor.buildFile / 
> │ > takeWhileInclusive / outputContent:
> │ > │ '' / errors: [
> │ > │   [
> │ > │     "Cannot find `main` in file main.",
> │ > │     {
> │ > │       "FatalError": "Cannot find `main` 
> in file main."
> │ > │     }
> │ > │   ]
> │ > │ ] / typeErrorCount: 0 / retry: 0 / path:│ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\a65342ccc7da0da967b18d8e705d026
> │ > 0e9a932e5e68c0feb33db55c4d28170aa\main.spi
> │ > │ 00:02:04 v #2585 
> Supervisor.buildFile / outputChild / x:
> │ > Some
> │ > │   (Ok
> │ > │      (Some
> │ > │         (None,
> │ > │          [("Cannot find `main` in file 
> main.",
> │ > │            FatalError "Cannot find 
> `main` in file main.")], 
> │ > 0)))
> │ > │ 00:02:04 v #2591 
> Supervisor.buildFile / ofSeqAsync / x: 
> │ > (None,
> │ > │  [("Cannot find `main` in file main.",
> │ > │    FatalError "Cannot find `main` in 
> file main.")], 0)
> │ > │ 00:02:04 v #2592 
> Supervisor.buildFile / result: 
> │ > [("Cannot find `main` in file main.",
> │ > │   FatalError "Cannot find `main` in file
> main.")] / 
> │ > buildFileResult: None / typeErrorCount: 0
> │ > │ 00:02:04 v #2593 
> Supervisor.buildFile / retry: 0 / 
> │ > typeErrorCount: 0 / fileDir: 
> │ > 
> c:\home\git\polyglot\target\spiral_Eval\packages\a65342ccc7da0da967b18d8e705d026
> │ > 0e9a932e5e68c0feb33db55c4d28170aa / targetDir: 
> c:/home/git\polyglot\target
> │ > │ Some (None, ["Cannot find `main` in file
> main."])
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > SpiralTrace.TraceLevel.US0_0 |> set_trace_level
> │ > """inl main () =
> │ >     1i32 / 0i32
> │ > """
> │ > |> fun code -> Spi (code, None)
> │ > |> buildCode Fsharp [[||]] false 10000 None
> │ > |> Async.runWithTimeout 11000
> │ > |> Option.map (fun (_, (_, outputContent), errors) -> 
> outputContent, errors |> 
> │ > List.map fst)
> │ > |> _assertEqual (
> │ >     Some (
> │ >         None,
> │ >         [[ "An attempt to divide by zero has been detected 
> at compile time." ]]
> │ >     )
> │ > )
> │ > 
> │ > ── [ 821.81ms - stdout ] 
> ───────────────────────────────────────────────────────
> │ > │ 00:02:05 v #2594 
> Supervisor.buildFile / 
> │ > takeWhileInclusive / outputContent:
> │ > │ '' / errors: [] / typeErrorCount: 0 / 
> retry: 0 / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\fef9812d9b06b75b1ab26589e52c6d6
> │ > ff05910b73ead9e8c4f27f88d2a5cdfb2\main.spi
> │ > │ 00:02:05 v #2595 
> Supervisor.buildFile / AsyncSeq.scan / 
> │ > outputContent:
> │ > │ ' / errors: [] / outputContentResult:  /
> typeErrorCount: 0 / 
> │ > retry: 0 / error:  / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\fef9812d9b06b75b1ab26589e52c6d6
> │ > ff05910b73ead9e8c4f27f88d2a5cdfb2\main.spi'
> │ > │ 00:02:05 v #2596 
> Supervisor.buildFile / 
> │ > takeWhileInclusive / outputContent:
> │ > │ '' / errors: [] / typeErrorCount: 0 / 
> retry: 0 / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\fef9812d9b06b75b1ab26589e52c6d6
> │ > ff05910b73ead9e8c4f27f88d2a5cdfb2\main.spi
> │ > │ 00:02:05 v #2597 
> Supervisor.buildFile / fullPathUri: 
> │ > 
> "file:///c:/home/git/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab265
> │ > 89e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi"
> │ > │ 00:02:05 v #2598 
> Supervisor.buildFile / _fileOpenResult:
> │ > <null>
> │ > │ 00:02:05 v #2599 
> Supervisor.buildFile / before result: 
> │ > ()
> │ > │ 00:02:05 v #2834 
> Supervisor.buildFile / buildFileResult:
> │ > None
> │ > │ 00:02:05 v #2835 
> Supervisor.buildFile / ofSeqAsync / x: 
> │ > (None, [], 0)
> │ > │ 00:02:05 v #2836 
> Supervisor.buildFile / AsyncSeq.scan / 
> │ > outputContent:
> │ > │ ' / errors: [] / outputContentResult:  /
> typeErrorCount: 0 / 
> │ > retry: 0 / error: Some((An attempt to divide by zero has 
> been detected at 
> │ > compile time., TracedError
> │ > │   { message = "An attempt to divide by 
> zero has been detected
> │ > at compile time."
> │ > │     trace =
> │ > │      ["Error trace on line: 1, column: 
> 10 in module: 
> │ > 
> c:/home/git/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52c6d6
> │ > ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi.
> │ > │ inl main () =
> │ > │          ^
> │ > │ ";
> │ > │       "Error trace on line: 2, column: 5
> in module: 
> │ > 
> c:/home/git/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52c6d6
> │ > ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi.
> │ > │     1i32 / 0i32
> │ > │     ^
> │ > │ "] })) / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\fef9812d9b06b75b1ab26589e52c6d6
> │ > ff05910b73ead9e8c4f27f88d2a5cdfb2\main.spi'
> │ > │ 00:02:05 v #2837 
> Supervisor.buildFile / 
> │ > takeWhileInclusive / outputContent:
> │ > │ '' / errors: [
> │ > │   [
> │ > │     "An attempt to divide by zero has 
> been detected at 
> │ > compile time.",
> │ > │     {
> │ > │       "TracedError": {
> │ > │         "message": "An attempt to divide
> by zero has been 
> │ > detected at compile time.",
> │ > │         "trace": [
> │ > │           "Error trace on line: 1, 
> column: 10 in module: 
> │ > 
> c:/home/git/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52c6d6
> │ > ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi.
> │ > │ inl main () =
> │ > │          ^
> │ > │ ",
> │ > │           "Error trace on line: 2, 
> column: 5 in module: 
> │ > 
> c:/home/git/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52c6d6
> │ > ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi.
> │ > │     1i32 / 0i32
> │ > │     ^
> │ > │ "
> │ > │         ]
> │ > │       }
> │ > │     }
> │ > │   ]
> │ > │ ] / typeErrorCount: 0 / retry: 0 / path:│ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\fef9812d9b06b75b1ab26589e52c6d6
> │ > ff05910b73ead9e8c4f27f88d2a5cdfb2\main.spi
> │ > │ 00:02:05 v #2839 
> Supervisor.buildFile / outputChild / x:
> │ > Some
> │ > │   (Ok
> │ > │      (Some
> │ > │         (None,
> │ > │          [("An attempt to divide by zero
> has been detected at
> │ > compile time.",
> │ > │            TracedError
> │ > │              { message =
> │ > │                 "An attempt to divide by
> zero has been 
> │ > detected at compile time."
> │ > │                trace =
> │ > │                 ["Error trace on line: 
> 1, column: 10 in 
> │ > module: 
> │ > 
> c:/home/git/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52c6d6
> │ > ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi.
> │ > │ inl main () =
> │ > │          ^
> │ > │ ";
> │ > │                  "Error trace on line: 
> 2, column: 5 in 
> │ > module: 
> │ > 
> c:/home/git/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52c6d6
> │ > ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi.
> │ > │     1i32 / 0i32
> │ > │     ^
> │ > │ "] })],
> │ > │          0)))
> │ > │ 00:02:05 v #2840 
> Supervisor.buildFile / ofSeqAsync / x: 
> │ > (None,
> │ > │  [("An attempt to divide by zero has 
> been detected at compile
> │ > time.",
> │ > │    TracedError
> │ > │      { message =
> │ > │         "An attempt to divide by zero 
> has been detected at 
> │ > compile time."
> │ > │        trace =
> │ > │         ["Error trace on line: 1, 
> column: 10 in module: 
> │ > 
> c:/home/git/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52c6d6
> │ > ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi.
> │ > │ inl main () =
> │ > │          ^
> │ > │ ";
> │ > │          "Error trace on line: 2, 
> column: 5 in module: 
> │ > 
> c:/home/git/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52c6d6
> │ > ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi.
> │ > │     1i32 / 0i32
> │ > │     ^
> │ > │ "] })],
> │ > │  0)
> │ > │ 00:02:05 v #2841 
> Supervisor.buildFile / result: [("An 
> │ > attempt to divide by zero has been detected at compile 
> time.",
> │ > │   TracedError
> │ > │     { message =
> │ > │        "An attempt to divide by zero has
> been detected at 
> │ > compile time."
> │ > │       trace =
> │ > │        ["Error trace on line: 1, column:
> 10 in module: 
> │ > 
> c:/home/git/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52c6d6
> │ > ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi.
> │ > │ inl main () =
> │ > │          ^
> │ > │ ";
> │ > │         "Error trace on line: 2, column:
> 5 in module: 
> │ > 
> c:/home/git/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52c6d6
> │ > ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi.
> │ > │     1i32 / 0i32
> │ > │     ^
> │ > │ "] })] / buildFileResult: None / 
> typeErrorCount: 0
> │ > │ 00:02:05 v #2842 
> Supervisor.buildFile / retry: 0 / 
> │ > typeErrorCount: 0 / fileDir: 
> │ > 
> c:\home\git\polyglot\target\spiral_Eval\packages\fef9812d9b06b75b1ab26589e52c6d6
> │ > ff05910b73ead9e8c4f27f88d2a5cdfb2 / targetDir: 
> c:/home/git\polyglot\target
> │ > │ Some (None, ["An attempt to divide by 
> zero has been detected 
> │ > at compile time."])
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > SpiralTrace.TraceLevel.US0_0 |> set_trace_level
> │ > """
> │ > inl main () =
> │ >     real
> │ >         inl unbox_real forall a. (obj : a) : a =
> │ >             typecase obj with
> │ >             | _ => obj
> │ >         unbox_real ()
> │ >     ()
> │ > """
> │ > |> fun code -> Spi (code, None)
> │ > |> buildCode Fsharp [[||]] false 10000 None
> │ > |> Async.runWithTimeout 11000
> │ > |> Option.map (fun (_, (_, outputContent), errors) -> 
> outputContent, errors |> 
> │ > List.map fst)
> │ > |> _assertEqual (
> │ >     Some (
> │ >         None,
> │ >         [[ "Cannot apply a forall with a term." ]]
> │ >     )
> │ > )
> │ > 
> │ > ── [ 785.15ms - stdout ] 
> ───────────────────────────────────────────────────────
> │ > │ 00:02:06 v #2843 
> Supervisor.buildFile / 
> │ > takeWhileInclusive / outputContent:
> │ > │ '' / errors: [] / typeErrorCount: 0 / 
> retry: 0 / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f1774bd
> │ > 7ffff5b5a47e4e117eec78e740987f29a\main.spi
> │ > │ 00:02:06 v #2844 
> Supervisor.buildFile / AsyncSeq.scan / 
> │ > outputContent:
> │ > │ ' / errors: [] / outputContentResult:  /
> typeErrorCount: 0 / 
> │ > retry: 0 / error:  / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f1774bd
> │ > 7ffff5b5a47e4e117eec78e740987f29a\main.spi'
> │ > │ 00:02:06 v #2845 
> Supervisor.buildFile / 
> │ > takeWhileInclusive / outputContent:
> │ > │ '' / errors: [] / typeErrorCount: 0 / 
> retry: 0 / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f1774bd
> │ > 7ffff5b5a47e4e117eec78e740987f29a\main.spi
> │ > │ 00:02:06 v #2846 
> Supervisor.buildFile / fullPathUri: 
> │ > 
> "file:///c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec
> │ > 17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi"
> │ > │ 00:02:06 v #2847 
> Supervisor.buildFile / _fileOpenResult:
> │ > <null>
> │ > │ 00:02:06 v #2848 
> Supervisor.buildFile / before result: 
> │ > ()
> │ > │ 00:02:06 v #3083 
> Supervisor.buildFile / buildFileResult:
> │ > None
> │ > │ 00:02:06 v #3084 
> Supervisor.buildFile / ofSeqAsync / x: 
> │ > (None, [], 0)
> │ > │ 00:02:06 v #3085 
> Supervisor.buildFile / AsyncSeq.scan / 
> │ > outputContent:
> │ > │ ' / errors: [] / outputContentResult:  /
> typeErrorCount: 0 / 
> │ > retry: 0 / error: Some((Cannot apply a forall with a term.,
> TracedError
> │ > │   { message = "Cannot apply a forall 
> with a term."
> │ > │     trace =
> │ > │      ["Error trace on line: 2, column: 
> 10 in module: 
> │ > 
> c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd
> │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi.
> │ > │ inl main () =
> │ > │          ^
> │ > │ ";
> │ > │       "Error trace on line: 4, column: 9
> in module: 
> │ > 
> c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd
> │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi.
> │ > │         inl unbox_real forall a. (obj : 
> a) : a =
> │ > │         ^
> │ > │ ";
> │ > │       "Error trace on line: 7, column: 9
> in module: 
> │ > 
> c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd
> │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi.
> │ > │         unbox_real ()
> │ > │         ^
> │ > │ "] })) / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f1774bd
> │ > 7ffff5b5a47e4e117eec78e740987f29a\main.spi'
> │ > │ 00:02:06 v #3086 
> Supervisor.buildFile / 
> │ > takeWhileInclusive / outputContent:
> │ > │ '' / errors: [
> │ > │   [
> │ > │     "Cannot apply a forall with a 
> term.",
> │ > │     {
> │ > │       "TracedError": {
> │ > │         "message": "Cannot apply a 
> forall with a term.",
> │ > │         "trace": [
> │ > │           "Error trace on line: 2, 
> column: 10 in module: 
> │ > 
> c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd
> │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi.
> │ > │ inl main () =
> │ > │          ^
> │ > │ ",
> │ > │           "Error trace on line: 4, 
> column: 9 in module: 
> │ > 
> c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd
> │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi.
> │ > │         inl unbox_real forall a. (obj : 
> a) : a =
> │ > │         ^
> │ > │ ",
> │ > │           "Error trace on line: 7, 
> column: 9 in module: 
> │ > 
> c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd
> │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi.
> │ > │         unbox_real ()
> │ > │         ^
> │ > │ "
> │ > │         ]
> │ > │       }
> │ > │     }
> │ > │   ]
> │ > │ ] / typeErrorCount: 0 / retry: 0 / path:│ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f1774bd
> │ > 7ffff5b5a47e4e117eec78e740987f29a\main.spi
> │ > │ 00:02:06 v #3088 
> Supervisor.buildFile / outputChild / x:
> │ > Some
> │ > │   (Ok
> │ > │      (Some
> │ > │         (None,
> │ > │          [("Cannot apply a forall with a
> term.",
> │ > │            TracedError
> │ > │              { message = "Cannot apply a
> forall with a term."
> │ > │                trace =
> │ > │                 ["Error trace on line: 
> 2, column: 10 in 
> │ > module: 
> │ > 
> c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd
> │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi.
> │ > │ inl main () =
> │ > │          ^
> │ > │ ";
> │ > │                  "Error trace on line: 
> 4, column: 9 in 
> │ > module: 
> │ > 
> c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd
> │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi.
> │ > │         inl unbox_real forall a. (obj : 
> a) : a =
> │ > │         ^
> │ > │ ";
> │ > │                  "Error trace on line: 
> 7, column: 9 in 
> │ > module: 
> │ > 
> c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd
> │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi.
> │ > │         unbox_real ()
> │ > │         ^
> │ > │ "] })],
> │ > │          0)))
> │ > │ 00:02:06 v #3089 
> Supervisor.buildFile / ofSeqAsync / x: 
> │ > (None,
> │ > │  [("Cannot apply a forall with a term.",
> │ > │    TracedError
> │ > │      { message = "Cannot apply a forall 
> with a term."
> │ > │        trace =
> │ > │         ["Error trace on line: 2, 
> column: 10 in module: 
> │ > 
> c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd
> │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi.
> │ > │ inl main () =
> │ > │          ^
> │ > │ ";
> │ > │          "Error trace on line: 4, 
> column: 9 in module: 
> │ > 
> c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd
> │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi.
> │ > │         inl unbox_real forall a. (obj : 
> a) : a =
> │ > │         ^
> │ > │ ";
> │ > │          "Error trace on line: 7, 
> column: 9 in module: 
> │ > 
> c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd
> │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi.
> │ > │         unbox_real ()
> │ > │         ^
> │ > │ "] })],
> │ > │  0)
> │ > │ 00:02:06 v #3090 
> Supervisor.buildFile / result: 
> │ > [("Cannot apply a forall with a term.",
> │ > │   TracedError
> │ > │     { message = "Cannot apply a forall 
> with a term."
> │ > │       trace =
> │ > │        ["Error trace on line: 2, column:
> 10 in module: 
> │ > 
> c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd
> │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi.
> │ > │ inl main () =
> │ > │          ^
> │ > │ ";
> │ > │         "Error trace on line: 4, column:
> 9 in module: 
> │ > 
> c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd
> │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi.
> │ > │         inl unbox_real forall a. (obj : 
> a) : a =
> │ > │         ^
> │ > │ ";
> │ > │         "Error trace on line: 7, column:
> 9 in module: 
> │ > 
> c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd
> │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi.
> │ > │         unbox_real ()
> │ > │         ^
> │ > │ "] })] / buildFileResult: None / 
> typeErrorCount: 0
> │ > │ 00:02:06 v #3091 
> Supervisor.buildFile / retry: 0 / 
> │ > typeErrorCount: 0 / fileDir: 
> │ > 
> c:\home\git\polyglot\target\spiral_Eval\packages\667528659dc2e5af51a6ec17f1774bd
> │ > 7ffff5b5a47e4e117eec78e740987f29a / targetDir: 
> c:/home/git\polyglot\target
> │ > │ Some (None, ["Cannot apply a forall with
> a term."])
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > SpiralTrace.TraceLevel.US0_0 |> set_trace_level
> │ > """
> │ > inl main () =
> │ >     real
> │ >         inl unbox_real forall a. (obj : a) : a =
> │ >             typecase obj with
> │ >             | _ => obj
> │ >         unbox_real `i32 1
> │ > """
> │ > |> fun code -> Spi (code, None)
> │ > |> buildCode Fsharp [[||]] false 10000 None
> │ > |> Async.runWithTimeout 11000
> │ > |> Option.map (fun (_, (_, outputContent), errors) -> 
> outputContent, errors |> 
> │ > List.map fst)
> │ > |> _assertEqual (
> │ >     Some (
> │ >         None,
> │ >         [[ "The main function should not have a forall." ]]
> │ >     )
> │ > )
> │ > 
> │ > ── [ 668.55ms - stdout ] 
> ───────────────────────────────────────────────────────
> │ > │ 00:02:06 v #3092 
> Supervisor.buildFile / 
> │ > takeWhileInclusive / outputContent:
> │ > │ '' / errors: [] / typeErrorCount: 0 / 
> retry: 0 / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\0ba44c42df309b790acdf4f9fc55fcc
> │ > 7912380f5dd2d90fad118bad793251c4f\main.spi
> │ > │ 00:02:06 v #3093 
> Supervisor.buildFile / AsyncSeq.scan / 
> │ > outputContent:
> │ > │ ' / errors: [] / outputContentResult:  /
> typeErrorCount: 0 / 
> │ > retry: 0 / error:  / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\0ba44c42df309b790acdf4f9fc55fcc
> │ > 7912380f5dd2d90fad118bad793251c4f\main.spi'
> │ > │ 00:02:06 v #3094 
> Supervisor.buildFile / 
> │ > takeWhileInclusive / outputContent:
> │ > │ '' / errors: [] / typeErrorCount: 0 / 
> retry: 0 / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\0ba44c42df309b790acdf4f9fc55fcc
> │ > 7912380f5dd2d90fad118bad793251c4f\main.spi
> │ > │ 00:02:06 v #3095 
> Supervisor.buildFile / fullPathUri: 
> │ > 
> "file:///c:/home/git/polyglot/target/spiral_Eval/packages/0ba44c42df309b790acdf4
> │ > f9fc55fcc7912380f5dd2d90fad118bad793251c4f/main.spi"
> │ > │ 00:02:06 v #3096 
> Supervisor.buildFile / _fileOpenResult:
> │ > <null>
> │ > │ 00:02:06 v #3097 
> Supervisor.buildFile / before result: 
> │ > ()
> │ > │ 00:02:07 v #3332 
> Supervisor.buildFile / buildFileResult:
> │ > None
> │ > │ 00:02:07 v #3333 
> Supervisor.buildFile / ofSeqAsync / x: 
> │ > (None, [], 0)
> │ > │ 00:02:07 v #3334 
> Supervisor.buildFile / AsyncSeq.scan / 
> │ > outputContent:
> │ > │ ' / errors: [] / outputContentResult:  /
> typeErrorCount: 0 / 
> │ > retry: 0 / error: Some((The main function should not have a
> forall., TracedError
> │ > { message = "The main function should not have a forall."
> │ > │               trace = [] })) / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\0ba44c42df309b790acdf4f9fc55fcc
> │ > 7912380f5dd2d90fad118bad793251c4f\main.spi'
> │ > │ 00:02:07 v #3335 
> Supervisor.buildFile / 
> │ > takeWhileInclusive / outputContent:
> │ > │ '' / errors: [
> │ > │   [
> │ > │     "The main function should not have a
> forall.",
> │ > │     {
> │ > │       "TracedError": {
> │ > │         "message": "The main function 
> should not have a 
> │ > forall.",
> │ > │         "trace": []
> │ > │       }
> │ > │     }
> │ > │   ]
> │ > │ ] / typeErrorCount: 0 / retry: 0 / path:│ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\0ba44c42df309b790acdf4f9fc55fcc
> │ > 7912380f5dd2d90fad118bad793251c4f\main.spi
> │ > │ 00:02:07 v #3337 
> Supervisor.buildFile / outputChild / x:
> │ > Some
> │ > │   (Ok
> │ > │      (Some
> │ > │         (None,
> │ > │          [("The main function should not
> have a forall.",
> │ > │            TracedError { message = "The 
> main function should 
> │ > not have a forall."
> │ > │                          trace = [] })],
> 0)))
> │ > │ 00:02:07 v #3338 
> Supervisor.buildFile / ofSeqAsync / x: 
> │ > (None,
> │ > │  [("The main function should not have a 
> forall.",
> │ > │    TracedError { message = "The main 
> function should not have
> │ > a forall."
> │ > │                  trace = [] })], 0)
> │ > │ 00:02:07 v #3339 
> Supervisor.buildFile / result: [("The 
> │ > main function should not have a forall.",
> │ > │   TracedError { message = "The main 
> function should not have 
> │ > a forall."
> │ > │                 trace = [] })] / 
> buildFileResult: None / 
> │ > typeErrorCount: 0
> │ > │ 00:02:07 v #3340 
> Supervisor.buildFile / retry: 0 / 
> │ > typeErrorCount: 0 / fileDir: 
> │ > 
> c:\home\git\polyglot\target\spiral_Eval\packages\0ba44c42df309b790acdf4f9fc55fcc
> │ > 7912380f5dd2d90fad118bad793251c4f / targetDir: 
> c:/home/git\polyglot\target
> │ > │ Some (None, ["The main function should 
> not have a forall."])
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > SpiralTrace.TraceLevel.US0_0 |> set_trace_level
> │ > """
> │ > inl main () =
> │ >     real
> │ >         inl unbox_real forall a. (obj : a) : a =
> │ >             typecase obj with
> │ >             | _ => obj
> │ >         unbox_real ()
> │ >     ()
> │ > """
> │ > |> fun code -> Spi (code, None)
> │ > |> buildCode Fsharp [[||]] false 10000 None
> │ > |> Async.runWithTimeout 11000
> │ > |> Option.map (fun (_, (_, outputContent), errors) -> 
> outputContent, errors |> 
> │ > List.map fst)
> │ > |> _assertEqual (
> │ >     Some (
> │ >         None,
> │ >         [[ "Cannot apply a forall with a term." ]]
> │ >     )
> │ > )
> │ > 
> │ > ── [ 713.43ms - stdout ] 
> ───────────────────────────────────────────────────────
> │ > │ 00:02:07 v #3341 
> Supervisor.buildFile / 
> │ > takeWhileInclusive / outputContent:
> │ > │ '' / errors: [] / typeErrorCount: 0 / 
> retry: 0 / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f1774bd
> │ > 7ffff5b5a47e4e117eec78e740987f29a\main.spi
> │ > │ 00:02:07 v #3342 
> Supervisor.buildFile / AsyncSeq.scan / 
> │ > outputContent:
> │ > │ ' / errors: [] / outputContentResult:  /
> typeErrorCount: 0 / 
> │ > retry: 0 / error:  / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f1774bd
> │ > 7ffff5b5a47e4e117eec78e740987f29a\main.spi'
> │ > │ 00:02:07 v #3343 
> Supervisor.buildFile / 
> │ > takeWhileInclusive / outputContent:
> │ > │ '' / errors: [] / typeErrorCount: 0 / 
> retry: 0 / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f1774bd
> │ > 7ffff5b5a47e4e117eec78e740987f29a\main.spi
> │ > │ 00:02:07 v #3344 
> Supervisor.buildFile / fullPathUri: 
> │ > 
> "file:///c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec
> │ > 17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi"
> │ > │ 00:02:07 v #3345 
> Supervisor.buildFile / _fileOpenResult:
> │ > <null>
> │ > │ 00:02:07 v #3346 
> Supervisor.buildFile / before result: 
> │ > ()
> │ > │ 00:02:07 v #3578 
> Supervisor.buildFile / buildFileResult:
> │ > None
> │ > │ 00:02:07 v #3579 
> Supervisor.buildFile / ofSeqAsync / x: 
> │ > (None, [], 0)
> │ > │ 00:02:07 v #3580 
> Supervisor.buildFile / AsyncSeq.scan / 
> │ > outputContent:
> │ > │ ' / errors: [] / outputContentResult:  /
> typeErrorCount: 0 / 
> │ > retry: 0 / error: Some((Cannot apply a forall with a term.,
> TracedError
> │ > │   { message = "Cannot apply a forall 
> with a term."
> │ > │     trace =
> │ > │      ["Error trace on line: 2, column: 
> 10 in module: 
> │ > 
> c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd
> │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi.
> │ > │ inl main () =
> │ > │          ^
> │ > │ ";
> │ > │       "Error trace on line: 4, column: 9
> in module: 
> │ > 
> c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd
> │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi.
> │ > │         inl unbox_real forall a. (obj : 
> a) : a =
> │ > │         ^
> │ > │ ";
> │ > │       "Error trace on line: 7, column: 9
> in module: 
> │ > 
> c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd
> │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi.
> │ > │         unbox_real ()
> │ > │         ^
> │ > │ "] })) / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f1774bd
> │ > 7ffff5b5a47e4e117eec78e740987f29a\main.spi'
> │ > │ 00:02:07 v #3581 
> Supervisor.buildFile / 
> │ > takeWhileInclusive / outputContent:
> │ > │ '' / errors: [
> │ > │   [
> │ > │     "Cannot apply a forall with a 
> term.",
> │ > │     {
> │ > │       "TracedError": {
> │ > │         "message": "Cannot apply a 
> forall with a term.",
> │ > │         "trace": [
> │ > │           "Error trace on line: 2, 
> column: 10 in module: 
> │ > 
> c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd
> │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi.
> │ > │ inl main () =
> │ > │          ^
> │ > │ ",
> │ > │           "Error trace on line: 4, 
> column: 9 in module: 
> │ > 
> c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd
> │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi.
> │ > │         inl unbox_real forall a. (obj : 
> a) : a =
> │ > │         ^
> │ > │ ",
> │ > │           "Error trace on line: 7, 
> column: 9 in module: 
> │ > 
> c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd
> │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi.
> │ > │         unbox_real ()
> │ > │         ^
> │ > │ "
> │ > │         ]
> │ > │       }
> │ > │     }
> │ > │   ]
> │ > │ ] / typeErrorCount: 0 / retry: 0 / path:│ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f1774bd
> │ > 7ffff5b5a47e4e117eec78e740987f29a\main.spi
> │ > │ 00:02:07 v #3583 
> Supervisor.buildFile / outputChild / x:
> │ > Some
> │ > │   (Ok
> │ > │      (Some
> │ > │         (None,
> │ > │          [("Cannot apply a forall with a
> term.",
> │ > │            TracedError
> │ > │              { message = "Cannot apply a
> forall with a term."
> │ > │                trace =
> │ > │                 ["Error trace on line: 
> 2, column: 10 in 
> │ > module: 
> │ > 
> c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd
> │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi.
> │ > │ inl main () =
> │ > │          ^
> │ > │ ";
> │ > │                  "Error trace on line: 
> 4, column: 9 in 
> │ > module: 
> │ > 
> c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd
> │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi.
> │ > │         inl unbox_real forall a. (obj : 
> a) : a =
> │ > │         ^
> │ > │ ";
> │ > │                  "Error trace on line: 
> 7, column: 9 in 
> │ > module: 
> │ > 
> c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd
> │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi.
> │ > │         unbox_real ()
> │ > │         ^
> │ > │ "] })],
> │ > │          0)))
> │ > │ 00:02:07 v #3584 
> Supervisor.buildFile / ofSeqAsync / x: 
> │ > (None,
> │ > │  [("Cannot apply a forall with a term.",
> │ > │    TracedError
> │ > │      { message = "Cannot apply a forall 
> with a term."
> │ > │        trace =
> │ > │         ["Error trace on line: 2, 
> column: 10 in module: 
> │ > 
> c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd
> │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi.
> │ > │ inl main () =
> │ > │          ^
> │ > │ ";
> │ > │          "Error trace on line: 4, 
> column: 9 in module: 
> │ > 
> c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd
> │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi.
> │ > │         inl unbox_real forall a. (obj : 
> a) : a =
> │ > │         ^
> │ > │ ";
> │ > │          "Error trace on line: 7, 
> column: 9 in module: 
> │ > 
> c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd
> │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi.
> │ > │         unbox_real ()
> │ > │         ^
> │ > │ "] })],
> │ > │  0)
> │ > │ 00:02:07 v #3585 
> Supervisor.buildFile / result: 
> │ > [("Cannot apply a forall with a term.",
> │ > │   TracedError
> │ > │     { message = "Cannot apply a forall 
> with a term."
> │ > │       trace =
> │ > │        ["Error trace on line: 2, column:
> 10 in module: 
> │ > 
> c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd
> │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi.
> │ > │ inl main () =
> │ > │          ^
> │ > │ ";
> │ > │         "Error trace on line: 4, column:
> 9 in module: 
> │ > 
> c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd
> │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi.
> │ > │         inl unbox_real forall a. (obj : 
> a) : a =
> │ > │         ^
> │ > │ ";
> │ > │         "Error trace on line: 7, column:
> 9 in module: 
> │ > 
> c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd
> │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi.
> │ > │         unbox_real ()
> │ > │         ^
> │ > │ "] })] / buildFileResult: None / 
> typeErrorCount: 0
> │ > │ 00:02:07 v #3586 
> Supervisor.buildFile / retry: 0 / 
> │ > typeErrorCount: 0 / fileDir: 
> │ > 
> c:\home\git\polyglot\target\spiral_Eval\packages\667528659dc2e5af51a6ec17f1774bd
> │ > 7ffff5b5a47e4e117eec78e740987f29a / targetDir: 
> c:/home/git\polyglot\target
> │ > │ Some (None, ["Cannot apply a forall with
> a term."])
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > SpiralTrace.TraceLevel.US0_0 |> set_trace_level
> │ > """inl main () =
> │ >     1 + ""
> │ > """
> │ > |> fun code -> Spi (code, None)
> │ > |> buildCode Fsharp [[||]] false 10000 None
> │ > |> Async.runWithTimeout 11000
> │ > |> Option.map (fun (_, (_, outputContent), errors) -> 
> outputContent, errors |> 
> │ > List.map fst)
> │ > |> _assertEqual (
> │ >     Some (
> │ >         None,
> │ >         [[
> │ >             "main.spi:
> │ > Constraint satisfaction error.
> │ > Got: string
> │ > Fails to satisfy: number"
> │ >         ]]
> │ >     )
> │ > )
> │ > 
> │ > ── [ 483.00ms - stdout ] 
> ───────────────────────────────────────────────────────
> │ > │ 00:02:08 v #3587 
> Supervisor.buildFile / 
> │ > takeWhileInclusive / outputContent:
> │ > │ '' / errors: [] / typeErrorCount: 0 / 
> retry: 0 / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeace676
> │ > 85221d91a46e3655199e42df713504aa0\main.spi
> │ > │ 00:02:08 v #3588 
> Supervisor.buildFile / AsyncSeq.scan / 
> │ > outputContent:
> │ > │ ' / errors: [] / outputContentResult:  /
> typeErrorCount: 0 / 
> │ > retry: 0 / error:  / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeace676
> │ > 85221d91a46e3655199e42df713504aa0\main.spi'
> │ > │ 00:02:08 v #3589 
> Supervisor.buildFile / 
> │ > takeWhileInclusive / outputContent:
> │ > │ '' / errors: [] / typeErrorCount: 0 / 
> retry: 0 / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeace676
> │ > 85221d91a46e3655199e42df713504aa0\main.spi
> │ > │ 00:02:08 v #3590 
> Supervisor.buildFile / fullPathUri: 
> │ > 
> "file:///c:/home/git/polyglot/target/spiral_Eval/packages/c030f84f8e553befcbdd9a
> │ > abeace67685221d91a46e3655199e42df713504aa0/main.spi"
> │ > │ 00:02:08 v #3591 
> Supervisor.buildFile / _fileOpenResult:
> │ > <null>
> │ > │ 00:02:08 v #3592 
> Supervisor.buildFile / before result: 
> │ > ()
> │ > │ 00:02:08 v #3674 
> Supervisor.buildFile / AsyncSeq.scan / 
> │ > outputContent:
> │ > │ ' / errors: [] / outputContentResult:  /
> typeErrorCount: 0 / 
> │ > retry: 0 / error: Some((main.spi:
> │ > │ Constraint satisfaction error.
> │ > │ Got: string
> │ > │ Fails to satisfy: number, TypeErrors
> │ > │   { errors =
> │ > │      [(({ character = 8
> │ > │           line = 1 }, { character = 10
> │ > │                         line = 1 }),
> │ > │        "Constraint satisfaction error.
> │ > │ Got: string
> │ > │ Fails to satisfy: number")]
> │ > │     uri =
> │ > │      
> │ > 
> "file:///c:/home/git/polyglot/target/spiral_Eval/packages/c030f84f8e553befcbdd9a
> │ > abeace67685221d91a46e3655199e42df713504aa0/main.spi" })) / 
> path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeace676
> │ > 85221d91a46e3655199e42df713504aa0\main.spi'
> │ > │ 00:02:08 v #3679 
> Supervisor.buildFile / 
> │ > takeWhileInclusive / outputContent:
> │ > │ '' / errors: [
> │ > │   [
> │ > │     "main.spi:
> │ > │ Constraint satisfaction error.
> │ > │ Got: string
> │ > │ Fails to satisfy: number",
> │ > │     {
> │ > │       "TypeErrors": {
> │ > │         "errors": [
> │ > │           [
> │ > │             [
> │ > │               {
> │ > │                 "character": 8,
> │ > │                 "line": 1
> │ > │               },
> │ > │               {
> │ > │                 "character": 10,
> │ > │                 "line": 1
> │ > │               }
> │ > │             ],
> │ > │             "Constraint satisfaction 
> error.
> │ > │ Got: string
> │ > │ Fails to satisfy: number"
> │ > │           ]
> │ > │         ],
> │ > │         "uri": 
> │ > 
> "file:///c:/home/git/polyglot/target/spiral_Eval/packages/c030f84f8e553befcbdd9a
> │ > abeace67685221d91a46e3655199e42df713504aa0/main.spi"
> │ > │       }
> │ > │     }
> │ > │   ]
> │ > │ ] / typeErrorCount: 0 / retry: 0 / path:│ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeace676
> │ > 85221d91a46e3655199e42df713504aa0\main.spi
> │ > │ 00:02:08 v #3686 
> Supervisor.buildFile / outputContentSeq
> │ > unfoldAsync / msg: (None,
> │ > │  Some
> │ > │    ("main.spi:
> │ > │ Constraint satisfaction error.
> │ > │ Got: string
> │ > │ Fails to satisfy: number",
> │ > │     TypeErrors
> │ > │       { errors =
> │ > │          [(({ character = 8
> │ > │               line = 1 }, { character = 
> 10
> │ > │                             line = 1 }),
> │ > │            "Constraint satisfaction 
> error.
> │ > │ Got: string
> │ > │ Fails to satisfy: number")]
> │ > │         uri =
> │ > │          
> │ > 
> "file:///c:/home/git/polyglot/target/spiral_Eval/packages/c030f84f8e553befcbdd9a
> │ > abeace67685221d91a46e3655199e42df713504aa0/main.spi" }))
> │ > │ 00:02:08 v #3688 
> Supervisor.buildFile / 
> │ > takeWhileInclusive / TypeErrors trigger
> │ > │ 00:02:08 v #3693 
> Supervisor.buildFile / outputChild / x:
> │ > Some
> │ > │   (Ok
> │ > │      (Some
> │ > │         (None,
> │ > │          [("main.spi:
> │ > │ Constraint satisfaction error.
> │ > │ Got: string
> │ > │ Fails to satisfy: number",
> │ > │            TypeErrors
> │ > │              { errors =
> │ > │                 [(({ character = 8
> │ > │                      line = 1 }, { 
> character = 10
> │ > │                                    line 
> = 1 }),
> │ > │                   "Constraint 
> satisfaction error.
> │ > │ Got: string
> │ > │ Fails to satisfy: number")]
> │ > │                uri =
> │ > │                 
> │ > 
> "file:///c:/home/git/polyglot/target/spiral_Eval/packages/c030f84f8e553befcbdd9a
> │ > abeace67685221d91a46e3655199e42df713504aa0/main.spi" })],
> │ > │          0)))
> │ > │ 00:02:08 v #3695 
> Supervisor.buildFile / outputChild |> 
> │ > Async.map
> │ > │ 00:02:08 v #3698 
> Supervisor.buildFile / 
> │ > outputContentSeq2 unfoldAsync / msg: (None,
> │ > │  [("main.spi:
> │ > │ Constraint satisfaction error.
> │ > │ Got: string
> │ > │ Fails to satisfy: number",
> │ > │    TypeErrors
> │ > │      { errors =
> │ > │         [(({ character = 8
> │ > │              line = 1 }, { character = 
> 10
> │ > │                            line = 1 }),
> │ > │           "Constraint satisfaction 
> error.
> │ > │ Got: string
> │ > │ Fails to satisfy: number")]
> │ > │        uri =
> │ > │         
> │ > 
> "file:///c:/home/git/polyglot/target/spiral_Eval/packages/c030f84f8e553befcbdd9a
> │ > abeace67685221d91a46e3655199e42df713504aa0/main.spi" })],
> │ > │  0)
> │ > │ 00:02:08 v #3701 
> Supervisor.buildFile / ofSeqAsync / x: 
> │ > (None,
> │ > │  [("main.spi:
> │ > │ Constraint satisfaction error.
> │ > │ Got: string
> │ > │ Fails to satisfy: number",
> │ > │    TypeErrors
> │ > │      { errors =
> │ > │         [(({ character = 8
> │ > │              line = 1 }, { character = 
> 10
> │ > │                            line = 1 }),
> │ > │           "Constraint satisfaction 
> error.
> │ > │ Got: string
> │ > │ Fails to satisfy: number")]
> │ > │        uri =
> │ > │         
> │ > 
> "file:///c:/home/git/polyglot/target/spiral_Eval/packages/c030f84f8e553befcbdd9a
> │ > abeace67685221d91a46e3655199e42df713504aa0/main.spi" })],
> │ > │  0)
> │ > │ 00:02:08 v #3704 
> Supervisor.buildFile / result: 
> │ > [("main.spi:
> │ > │ Constraint satisfaction error.
> │ > │ Got: string
> │ > │ Fails to satisfy: number",
> │ > │   TypeErrors
> │ > │     { errors =
> │ > │        [(({ character = 8
> │ > │             line = 1 }, { character = 10
> │ > │                           line = 1 }),
> │ > │          "Constraint satisfaction error.
> │ > │ Got: string
> │ > │ Fails to satisfy: number")]
> │ > │       uri =
> │ > │        
> │ > 
> "file:///c:/home/git/polyglot/target/spiral_Eval/packages/c030f84f8e553befcbdd9a
> │ > abeace67685221d91a46e3655199e42df713504aa0/main.spi" })] / 
> buildFileResult: None
> │ > / typeErrorCount: 0
> │ > │ 00:02:08 v #3706 
> Supervisor.buildFile / retry: 0 / 
> │ > typeErrorCount: 0 / fileDir: 
> │ > 
> c:\home\git\polyglot\target\spiral_Eval\packages\c030f84f8e553befcbdd9aabeace676
> │ > 85221d91a46e3655199e42df713504aa0 / targetDir: 
> c:/home/git\polyglot\target
> │ > │ 00:02:08 v #3707 
> Supervisor.buildFile / outputChild |> 
> │ > Async.map
> │ > │ Some (None, ["main.spi:
> │ > │ Constraint satisfaction error.
> │ > │ Got: string
> │ > │ Fails to satisfy: number"])
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > SpiralTrace.TraceLevel.US0_0 |> set_trace_level
> │ > """inl main () =
> │ >     x + y
> │ > """
> │ > |> fun code -> Spi (code, None)
> │ > |> buildCode Fsharp [[||]] false 10000 None
> │ > |> Async.runWithTimeout 11000
> │ > |> Option.map (fun (_, (_, outputContent), errors) -> 
> outputContent, errors |> 
> │ > List.map fst)
> │ > |> _assertEqual (
> │ >     Some (
> │ >         None,
> │ >         [[
> │ >             "main.spi:
> │ > Unbound variable: x.
> │ > Unbound variable: y."
> │ >         ]]
> │ >     )
> │ > )
> │ > 
> │ > ── [ 522.67ms - stdout ] 
> ───────────────────────────────────────────────────────
> │ > │ 00:02:08 v #3837 
> Supervisor.buildFile / 
> │ > takeWhileInclusive / outputContent:
> │ > │ '' / errors: [] / typeErrorCount: 0 / 
> retry: 0 / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa7049b7
> │ > 77a622aa3bf7333b151c767fde35dc5d1\main.spi
> │ > │ 00:02:08 v #3838 
> Supervisor.buildFile / AsyncSeq.scan / 
> │ > outputContent:
> │ > │ ' / errors: [] / outputContentResult:  /
> typeErrorCount: 0 / 
> │ > retry: 0 / error:  / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa7049b7
> │ > 77a622aa3bf7333b151c767fde35dc5d1\main.spi'
> │ > │ 00:02:08 v #3839 
> Supervisor.buildFile / 
> │ > takeWhileInclusive / outputContent:
> │ > │ '' / errors: [] / typeErrorCount: 0 / 
> retry: 0 / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa7049b7
> │ > 77a622aa3bf7333b151c767fde35dc5d1\main.spi
> │ > │ 00:02:08 v #3840 
> Supervisor.buildFile / fullPathUri: 
> │ > 
> "file:///c:/home/git/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba9c8429
> │ > cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi"
> │ > │ 00:02:08 v #3841 
> Supervisor.buildFile / _fileOpenResult:
> │ > <null>
> │ > │ 00:02:08 v #3842 
> Supervisor.buildFile / before result: 
> │ > ()
> │ > │ 00:02:08 v #3884 
> Supervisor.buildFile / AsyncSeq.scan / 
> │ > outputContent:
> │ > │ ' / errors: [] / outputContentResult:  /
> typeErrorCount: 0 / 
> │ > retry: 0 / error: Some((main.spi:
> │ > │ Unbound variable: x.
> │ > │ Unbound variable: y., TypeErrors
> │ > │   { errors =
> │ > │      [(({ character = 4
> │ > │           line = 1 }, { character = 5
> │ > │                         line = 1 }), 
> "Unbound variable: x.");
> │ > │       (({ character = 8
> │ > │           line = 1 }, { character = 9
> │ > │                         line = 1 }), 
> "Unbound variable: y.")]
> │ > │     uri =
> │ > │      
> │ > 
> "file:///c:/home/git/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba9c8429
> │ > cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" })) / 
> path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa7049b7
> │ > 77a622aa3bf7333b151c767fde35dc5d1\main.spi'
> │ > │ 00:02:08 v #3886 
> Supervisor.buildFile / 
> │ > takeWhileInclusive / outputContent:
> │ > │ '' / errors: [
> │ > │   [
> │ > │     "main.spi:
> │ > │ Unbound variable: x.
> │ > │ Unbound variable: y.",
> │ > │     {
> │ > │       "TypeErrors": {
> │ > │         "errors": [
> │ > │           [
> │ > │             [
> │ > │               {
> │ > │                 "character": 4,
> │ > │                 "line": 1
> │ > │               },
> │ > │               {
> │ > │                 "character": 5,
> │ > │                 "line": 1
> │ > │               }
> │ > │             ],
> │ > │             "Unbound variable: x."
> │ > │           ],
> │ > │           [
> │ > │             [
> │ > │               {
> │ > │                 "character": 8,
> │ > │                 "line": 1
> │ > │               },
> │ > │               {
> │ > │                 "character": 9,
> │ > │                 "line": 1
> │ > │               }
> │ > │             ],
> │ > │             "Unbound variable: y."
> │ > │           ]
> │ > │         ],
> │ > │         "uri": 
> │ > 
> "file:///c:/home/git/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba9c8429
> │ > cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi"
> │ > │       }
> │ > │     }
> │ > │   ]
> │ > │ ] / typeErrorCount: 0 / retry: 0 / path:│ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa7049b7
> │ > 77a622aa3bf7333b151c767fde35dc5d1\main.spi
> │ > │ 00:02:08 v #3890 
> Supervisor.buildFile / outputContentSeq
> │ > unfoldAsync / msg: (None,
> │ > │  Some
> │ > │    ("main.spi:
> │ > │ Unbound variable: x.
> │ > │ Unbound variable: y.",
> │ > │     TypeErrors
> │ > │       { errors =
> │ > │          [(({ character = 4
> │ > │               line = 1 }, { character = 
> 5
> │ > │                             line = 1 }),
> "Unbound variable: 
> │ > x.");
> │ > │           (({ character = 8
> │ > │               line = 1 }, { character = 
> 9
> │ > │                             line = 1 }),
> "Unbound variable: 
> │ > y.")]
> │ > │         uri =
> │ > │          
> │ > 
> "file:///c:/home/git/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba9c8429
> │ > cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" }))
> │ > │ 00:02:08 v #3891 
> Supervisor.buildFile / 
> │ > takeWhileInclusive / TypeErrors trigger
> │ > │ 00:02:08 v #3896 
> Supervisor.buildFile / outputChild / x:
> │ > Some
> │ > │   (Ok
> │ > │      (Some
> │ > │         (None,
> │ > │          [("main.spi:
> │ > │ Unbound variable: x.
> │ > │ Unbound variable: y.",
> │ > │            TypeErrors
> │ > │              { errors =
> │ > │                 [(({ character = 4
> │ > │                      line = 1 }, { 
> character = 5
> │ > │                                    line 
> = 1 }), "Unbound 
> │ > variable: x.");
> │ > │                  (({ character = 8
> │ > │                      line = 1 }, { 
> character = 9
> │ > │                                    line 
> = 1 }), "Unbound 
> │ > variable: y.")]
> │ > │                uri =
> │ > │                 
> │ > 
> "file:///c:/home/git/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba9c8429
> │ > cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" })],
> │ > │          0)))
> │ > │ 00:02:08 v #3897 
> Supervisor.buildFile / outputChild |> 
> │ > Async.map
> │ > │ 00:02:08 v #3900 
> Supervisor.buildFile / 
> │ > outputContentSeq2 unfoldAsync / msg: (None,
> │ > │  [("main.spi:
> │ > │ Unbound variable: x.
> │ > │ Unbound variable: y.",
> │ > │    TypeErrors
> │ > │      { errors =
> │ > │         [(({ character = 4
> │ > │              line = 1 }, { character = 5
> │ > │                            line = 1 }), 
> "Unbound variable: 
> │ > x.");
> │ > │          (({ character = 8
> │ > │              line = 1 }, { character = 9
> │ > │                            line = 1 }), 
> "Unbound variable: 
> │ > y.")]
> │ > │        uri =
> │ > │         
> │ > 
> "file:///c:/home/git/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba9c8429
> │ > cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" })],
> │ > │  0)
> │ > │ 00:02:08 v #3903 
> Supervisor.buildFile / ofSeqAsync / x: 
> │ > (None,
> │ > │  [("main.spi:
> │ > │ Unbound variable: x.
> │ > │ Unbound variable: y.",
> │ > │    TypeErrors
> │ > │      { errors =
> │ > │         [(({ character = 4
> │ > │              line = 1 }, { character = 5
> │ > │                            line = 1 }), 
> "Unbound variable: 
> │ > x.");
> │ > │          (({ character = 8
> │ > │              line = 1 }, { character = 9
> │ > │                            line = 1 }), 
> "Unbound variable: 
> │ > y.")]
> │ > │        uri =
> │ > │         
> │ > 
> "file:///c:/home/git/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba9c8429
> │ > cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" })],
> │ > │  0)
> │ > │ 00:02:08 v #3906 
> Supervisor.buildFile / result: 
> │ > [("main.spi:
> │ > │ Unbound variable: x.
> │ > │ Unbound variable: y.",
> │ > │   TypeErrors
> │ > │     { errors =
> │ > │        [(({ character = 4
> │ > │             line = 1 }, { character = 5
> │ > │                           line = 1 }), 
> "Unbound variable: 
> │ > x.");
> │ > │         (({ character = 8
> │ > │             line = 1 }, { character = 9
> │ > │                           line = 1 }), 
> "Unbound variable: 
> │ > y.")]
> │ > │       uri =
> │ > │        
> │ > 
> "file:///c:/home/git/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba9c8429
> │ > cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" })] / 
> buildFileResult: None
> │ > / typeErrorCount: 0
> │ > │ 00:02:08 v #3907 
> Supervisor.buildFile / retry: 0 / 
> │ > typeErrorCount: 0 / fileDir: 
> │ > 
> c:\home\git\polyglot\target\spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa7049b7
> │ > 77a622aa3bf7333b151c767fde35dc5d1 / targetDir: 
> c:/home/git\polyglot\target
> │ > │ 00:02:08 v #3908 
> Supervisor.buildFile / outputChild |> 
> │ > Async.map
> │ > │ Some (None, ["main.spi:
> │ > │ Unbound variable: x.
> │ > │ Unbound variable: y."])
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > SpiralTrace.TraceLevel.US0_0 |> set_trace_level
> │ > """inl rec main () = main"""
> │ > |> fun code -> Spi (code, None)
> │ > |> buildCode Fsharp [[||]] false 10000 None
> │ > |> Async.runWithTimeout 11000
> │ > |> Option.map (fun (_, (_, outputContent), errors) -> 
> outputContent, errors |> 
> │ > List.map fst)
> │ > |> _assertEqual (
> │ >     Some (
> │ >         None,
> │ >         [[
> │ >             "main.spi:
> │ > Recursive metavariables are not allowed. A metavar cannot 
> be unified with a type
> │ > that has itself.
> │ > Got:      'a
> │ > Expected: () -> 'a"
> │ >         ]]
> │ >     )
> │ > )
> │ > // |> _assertEqual None
> │ > // |> fun x -> printfn $"{x.ToDisplayString ()}"
> │ > 
> │ > ── [ 483.91ms - stdout ] 
> ───────────────────────────────────────────────────────
> │ > │ 00:02:09 v #4089 
> Supervisor.buildFile / 
> │ > takeWhileInclusive / outputContent:
> │ > │ '' / errors: [] / typeErrorCount: 0 / 
> retry: 0 / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\883e0123fe6304a9501da46e85facc3
> │ > 9c4ac4e3dbb77895f8ccd4581901ee2b7\main.spi
> │ > │ 00:02:09 v #4090 
> Supervisor.buildFile / AsyncSeq.scan / 
> │ > outputContent:
> │ > │ ' / errors: [] / outputContentResult:  /
> typeErrorCount: 0 / 
> │ > retry: 0 / error:  / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\883e0123fe6304a9501da46e85facc3
> │ > 9c4ac4e3dbb77895f8ccd4581901ee2b7\main.spi'
> │ > │ 00:02:09 v #4091 
> Supervisor.buildFile / 
> │ > takeWhileInclusive / outputContent:
> │ > │ '' / errors: [] / typeErrorCount: 0 / 
> retry: 0 / path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\883e0123fe6304a9501da46e85facc3
> │ > 9c4ac4e3dbb77895f8ccd4581901ee2b7\main.spi
> │ > │ 00:02:09 v #4092 
> Supervisor.buildFile / fullPathUri: 
> │ > 
> "file:///c:/home/git/polyglot/target/spiral_Eval/packages/883e0123fe6304a9501da4
> │ > 6e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi"
> │ > │ 00:02:09 v #4093 
> Supervisor.buildFile / _fileOpenResult:
> │ > <null>
> │ > │ 00:02:09 v #4094 
> Supervisor.buildFile / before result: 
> │ > ()
> │ > │ 00:02:09 v #4136 
> Supervisor.buildFile / AsyncSeq.scan / 
> │ > outputContent:
> │ > │ ' / errors: [] / outputContentResult:  /
> typeErrorCount: 0 / 
> │ > retry: 0 / error: Some((main.spi:
> │ > │ Recursive metavariables are not allowed.
> A metavar cannot be 
> │ > unified with a type that has itself.
> │ > │ Got:      'a
> │ > │ Expected: () -> 'a, TypeErrors
> │ > │   { errors =
> │ > │      [(({ character = 18
> │ > │           line = 0 }, { character = 22
> │ > │                         line = 0 }),
> │ > │        "Recursive metavariables are not 
> allowed. A metavar 
> │ > cannot be unified with a type that has itself.
> │ > │ Got:      'a
> │ > │ Expected: () -> 'a")]
> │ > │     uri =
> │ > │      
> │ > 
> "file:///c:/home/git/polyglot/target/spiral_Eval/packages/883e0123fe6304a9501da4
> │ > 6e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi" })) / 
> path: 
> │ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\883e0123fe6304a9501da46e85facc3
> │ > 9c4ac4e3dbb77895f8ccd4581901ee2b7\main.spi'
> │ > │ 00:02:09 v #4137 
> Supervisor.buildFile / 
> │ > takeWhileInclusive / outputContent:
> │ > │ '' / errors: [
> │ > │   [
> │ > │     "main.spi:
> │ > │ Recursive metavariables are not allowed.
> A metavar cannot be 
> │ > unified with a type that has itself.
> │ > │ Got:      'a
> │ > │ Expected: () -> 'a",
> │ > │     {
> │ > │       "TypeErrors": {
> │ > │         "errors": [
> │ > │           [
> │ > │             [
> │ > │               {
> │ > │                 "character": 18,
> │ > │                 "line": 0
> │ > │               },
> │ > │               {
> │ > │                 "character": 22,
> │ > │                 "line": 0
> │ > │               }
> │ > │             ],
> │ > │             "Recursive metavariables are
> not allowed. A 
> │ > metavar cannot be unified with a type that has itself.
> │ > │ Got:      'a
> │ > │ Expected: () -> 'a"
> │ > │           ]
> │ > │         ],
> │ > │         "uri": 
> │ > 
> "file:///c:/home/git/polyglot/target/spiral_Eval/packages/883e0123fe6304a9501da4
> │ > 6e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi"
> │ > │       }
> │ > │     }
> │ > │   ]
> │ > │ ] / typeErrorCount: 0 / retry: 0 / path:│ > 
> c:/home/git\polyglot\target/spiral_Eval\packages\883e0123fe6304a9501da46e85facc3
> │ > 9c4ac4e3dbb77895f8ccd4581901ee2b7\main.spi
> │ > │ 00:02:09 v #4140 
> Supervisor.buildFile / outputContentSeq
> │ > unfoldAsync / msg: (None,
> │ > │  Some
> │ > │    ("main.spi:
> │ > │ Recursive metavariables are not allowed.
> A metavar cannot be 
> │ > unified with a type that has itself.
> │ > │ Got:      'a
> │ > │ Expected: () -> 'a",
> │ > │     TypeErrors
> │ > │       { errors =
> │ > │          [(({ character = 18
> │ > │               line = 0 }, { character = 
> 22
> │ > │                             line = 0 }),
> │ > │            "Recursive metavariables are 
> not allowed. A 
> │ > metavar cannot be unified with a type that has itself.
> │ > │ Got:      'a
> │ > │ Expected: () -> 'a")]
> │ > │         uri =
> │ > │          
> │ > 
> "file:///c:/home/git/polyglot/target/spiral_Eval/packages/883e0123fe6304a9501da4
> │ > 6e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi" }))
> │ > │ 00:02:09 v #4141 
> Supervisor.buildFile / 
> │ > takeWhileInclusive / TypeErrors trigger
> │ > │ 00:02:09 v #4144 
> Supervisor.buildFile / outputChild / x:
> │ > Some
> │ > │   (Ok
> │ > │      (Some
> │ > │         (None,
> │ > │          [("main.spi:
> │ > │ Recursive metavariables are not allowed.
> A metavar cannot be 
> │ > unified with a type that has itself.
> │ > │ Got:      'a
> │ > │ Expected: () -> 'a",
> │ > │            TypeErrors
> │ > │              { errors =
> │ > │                 [(({ character = 18
> │ > │                      line = 0 }, { 
> character = 22
> │ > │                                    line 
> = 0 }),
> │ > │                   "Recursive 
> metavariables are not allowed. A
> │ > metavar cannot be unified with a type that has itself.
> │ > │ Got:      'a
> │ > │ Expected: () -> 'a")]
> │ > │                uri =
> │ > │                 
> │ > 
> "file:///c:/home/git/polyglot/target/spiral_Eval/packages/883e0123fe6304a9501da4
> │ > 6e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi" })],
> │ > │          0)))
> │ > │ 00:02:09 v #4146 
> Supervisor.buildFile / outputChild |> 
> │ > Async.map
> │ > │ 00:02:09 v #4148 
> Supervisor.buildFile / 
> │ > outputContentSeq2 unfoldAsync / msg: (None,
> │ > │  [("main.spi:
> │ > │ Recursive metavariables are not allowed.
> A metavar cannot be 
> │ > unified with a type that has itself.
> │ > │ Got:      'a
> │ > │ Expected: () -> 'a",
> │ > │    TypeErrors
> │ > │      { errors =
> │ > │         [(({ character = 18
> │ > │              line = 0 }, { character = 
> 22
> │ > │                            line = 0 }),
> │ > │           "Recursive metavariables are 
> not allowed. A metavar
> │ > cannot be unified with a type that has itself.
> │ > │ Got:      'a
> │ > │ Expected: () -> 'a")]
> │ > │        uri =
> │ > │         
> │ > 
> "file:///c:/home/git/polyglot/target/spiral_Eval/packages/883e0123fe6304a9501da4
> │ > 6e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi" })],
> │ > │  0)
> │ > │ 00:02:09 v #4151 
> Supervisor.buildFile / ofSeqAsync / x: 
> │ > (None,
> │ > │  [("main.spi:
> │ > │ Recursive metavariables are not allowed.
> A metavar cannot be 
> │ > unified with a type that has itself.
> │ > │ Got:      'a
> │ > │ Expected: () -> 'a",
> │ > │    TypeErrors
> │ > │      { errors =
> │ > │         [(({ character = 18
> │ > │              line = 0 }, { character = 
> 22
> │ > │                            line = 0 }),
> │ > │           "Recursive metavariables are 
> not allowed. A metavar
> │ > cannot be unified with a type that has itself.
> │ > │ Got:      'a
> │ > │ Expected: () -> 'a")]
> │ > │        uri =
> │ > │         
> │ > 
> "file:///c:/home/git/polyglot/target/spiral_Eval/packages/883e0123fe6304a9501da4
> │ > 6e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi" })],
> │ > │  0)
> │ > │ 00:02:09 v #4153 
> Supervisor.buildFile / result: 
> │ > [("main.spi:
> │ > │ Recursive metavariables are not allowed.
> A metavar cannot be 
> │ > unified with a type that has itself.
> │ > │ Got:      'a
> │ > │ Expected: () -> 'a",
> │ > │   TypeErrors
> │ > │     { errors =
> │ > │        [(({ character = 18
> │ > │             line = 0 }, { character = 22
> │ > │                           line = 0 }),
> │ > │          "Recursive metavariables are 
> not allowed. A metavar 
> │ > cannot be unified with a type that has itself.
> │ > │ Got:      'a
> │ > │ Expected: () -> 'a")]
> │ > │       uri =
> │ > │        
> │ > 
> "file:///c:/home/git/polyglot/target/spiral_Eval/packages/883e0123fe6304a9501da4
> │ > 6e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi" })] / 
> buildFileResult: None
> │ > / typeErrorCount: 0
> │ > │ 00:02:09 v #4154 
> Supervisor.buildFile / retry: 0 / 
> │ > typeErrorCount: 0 / fileDir: 
> │ > 
> c:\home\git\polyglot\target\spiral_Eval\packages\883e0123fe6304a9501da46e85facc3
> │ > 9c4ac4e3dbb77895f8ccd4581901ee2b7 / targetDir: 
> c:/home/git\polyglot\target
> │ > │ 00:02:09 v #4155 
> Supervisor.buildFile / outputChild |> 
> │ > Async.map
> │ > │ Some
> │ > │   (None,
> │ > │    ["main.spi:
> │ > │ Recursive metavariables are not allowed.
> A metavar cannot be 
> │ > unified with a type that has itself.
> │ > │ Got:      'a
> │ > │ Expected: () -> 'a"])
> │ > │ 
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## getFileTokenRange
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let getFileTokenRange port cancellationToken path = async {
> │ >     let fullPath = path |> System.IO.Path.GetFullPath
> │ >     let! code = fullPath |> 
> SpiralFileSystem.read_all_text_async
> │ >     let lines = code |> SpiralSm.split "\n"
> │ > 
> │ >     let struct (token, disposable) = 
> SpiralThreading.new_disposable_token 
> │ > cancellationToken
> │ >     use _ = disposable
> │ > 
> │ >     let port = port |> Option.defaultWith getCompilerPort
> │ >     // let! serverPort, _errors, ct, disposable = 
> awaitCompiler port (Some 
> │ > token)
> │ >     // use _ = disposable
> │ > 
> │ >     let fullPathUri = fullPath |> 
> SpiralFileSystem.normalize_path |> 
> │ > SpiralFileSystem.new_file_uri
> │ > 
> │ >     // let fileOpenObj = {| FileOpen = {| uri = 
> fullPathUri; spiText = code |} 
> │ > |}
> │ >     // let! _fileOpenResult = fileOpenObj |> sendObj 
> serverPort
> │ >     let fileOpenArgs = {| uri = fullPathUri; spiText = code
> |}
> │ >     let! _fileOpenResult =
> │ >         server2.job_null (server2.supervisor *<+ 
> SupervisorReq.FileOpen 
> │ > fileOpenArgs)
> │ >         |> Async.AwaitTask
> │ > 
> │ >     // do! Async.Sleep 60
> │ > 
> │ >     let fileTokenRangeArgs =
> │ >         {|
> │ >             uri = fullPathUri
> │ >             range =
> │ >                 {|
> │ >                     line = 0
> │ >                     character = 0
> │ >                 |},
> │ >                 {|
> │ >                     line = lines.Length - 1
> │ >                     character = lines.[[lines.Length - 
> 1]].Length
> │ >                 |}
> │ >         |}
> │ >     // let! fileTokenRangeResult =
> │ >     //     fileTokenRangeObj
> │ >     //     |> sendObj serverPort
> │ >     //     |> Async.withCancellationToken ct
> │ > 
> │ >     // let fileTokenRangeArgs = {| uri = fullPathUri; 
> backend = backendId |}
> │ >     let! fileTokenRangeResult =
> │ >         server2.job_val (fun res -> server2.supervisor *<+ 
> │ > SupervisorReq.FileTokenRange(fileTokenRangeArgs,res))
> │ >         |> Async.AwaitTask
> │ > 
> │ >     let fileDir = fullPath |> 
> System.IO.Path.GetDirectoryName
> │ >     if fileDir |> SpiralSm.starts_with (workspaceRoot </> 
> "target") then
> │ >         let fileDirUri = fileDir |> 
> SpiralFileSystem.normalize_path |> 
> │ > SpiralFileSystem.new_file_uri
> │ >         // let fileDeleteObj = {| FileDelete = {| uris = 
> [[| fileDirUri |]] |} 
> │ > |}
> │ >         // let! _fileDeleteResult = fileDeleteObj |> 
> sendObj serverPort
> │ >         let fileDeleteArgs = {| uris = [[| fileDirUri |]] 
> |}
> │ >         let! _fileDeleteResult =
> │ >             server2.job_null (server2.supervisor *<+ 
> SupervisorReq.FileDelete 
> │ > fileDeleteArgs)
> │ >             |> Async.AwaitTask
> │ >         ()
> │ > 
> │ >     return fileTokenRangeResult |> 
> FSharp.Json.Json.deserialize<int array> |> 
> │ > Some
> │ > }
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## getCodeTokenRange
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let getCodeTokenRange cancellationToken code = async {
> │ >     let! mainPath, _ =
> │ >         persistCode {| input = Spi (code, None); backend = 
> None; packages = 
> │ > [[||]] |}
> │ > 
> │ >     let codeDir = mainPath |> 
> System.IO.Path.GetDirectoryName
> │ >     let tokensPath = codeDir </> "tokens.json"
> │ >     let! tokens = async {
> │ >         if tokensPath |> System.IO.File.Exists |> not
> │ >         then return None
> │ >         else
> │ >             let! text = tokensPath |> 
> SpiralFileSystem.read_all_text_async
> │ > 
> │ >             return
> │ >                 if text.Length > 2
> │ >                 then text |> 
> FSharp.Json.Json.deserialize<int array> |> Some
> │ >                 else None
> │ >     }
> │ >     match tokens with
> │ >     | Some tokens ->
> │ >         return tokens |> Some
> │ >     | None -> return! mainPath |> getFileTokenRange None 
> cancellationToken
> │ > }
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > """inl main () = ()"""
> │ > |> getCodeTokenRange None
> │ > |> Async.runWithTimeout 10000
> │ > |> Option.flatten
> │ > |> _assertEqual (Some [[| 0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; 
> 5; 1; 8; 0; 0; 1; 1; 
> │ > 8; 0; 0; 2; 1; 4; 0; 0;
> │ > 2; 1; 8; 0; 0; 1; 1; 8; 0 |]])
> │ > 
> │ > ── [ 752.12ms - stdout ] 
> ───────────────────────────────────────────────────────
> │ > │ Some [|0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; 
> 5; 1; 8; 0; 0; 1; 1; 
> │ > 8; 0; 0; 2; 1; 4; 0; 0; 2; 1; 8; 0; 0; 1; 1; 8; 0|]
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > """inl main () = 1i32"""
> │ > |> getCodeTokenRange None
> │ > |> Async.runWithTimeout 10000
> │ > |> Option.flatten
> │ > |> _assertEqual (Some [[| 0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; 
> 5; 1; 8; 0; 0; 1; 1; 
> │ > 8; 0; 0; 2; 1; 4; 0; 0;
> │ > 2; 1; 3; 0; 0; 1; 3; 12; 0 |]])
> │ > 
> │ > ── [ 8.16s - stdout ] 
> ──────────────────────────────────────────────────────────
> │ > │ Some [|0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; 
> 5; 1; 8; 0; 0; 1; 1; 
> │ > 8; 0; 0; 2; 1; 4; 0; 0; 2; 1; 3; 0; 0; 1; 3; 12; 0|]
> │ > │ 
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## getFileHoverAt
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let getFileHoverAt
> │ >     port
> │ >     cancellationToken
> │ >     path
> │ >     (position : {| line: int; character: int |})
> │ >     = async {
> │ >     let fullPath = path |> System.IO.Path.GetFullPath
> │ >     let! code = fullPath |> 
> SpiralFileSystem.read_all_text_async
> │ >     let lines = code |> SpiralSm.split "\n"
> │ > 
> │ >     let struct (token, disposable) = 
> SpiralThreading.new_disposable_token 
> │ > cancellationToken
> │ >     use _ = disposable
> │ > 
> │ >     let port = port |> Option.defaultWith getCompilerPort
> │ >     // let! serverPort, _errors, ct, disposable = 
> awaitCompiler port (Some 
> │ > token)
> │ >     // use _ = disposable
> │ > 
> │ >     let fullPathUri = fullPath |> 
> SpiralFileSystem.normalize_path |> 
> │ > SpiralFileSystem.new_file_uri
> │ > 
> │ >     // let fileOpenObj = {| FileOpen = {| uri = 
> fullPathUri; spiText = code |} 
> │ > |}
> │ >     // let! _fileOpenResult = fileOpenObj |> sendObj 
> serverPort
> │ >     let fileOpenArgs = {| uri = fullPathUri; spiText = code
> |}
> │ >     let! _fileOpenResult =
> │ >         server1.job_null (server1.supervisor *<+ 
> SupervisorReq.FileOpen 
> │ > fileOpenArgs)
> │ >         |> Async.AwaitTask
> │ > 
> │ >     // do! Async.Sleep 60
> │ > 
> │ >     let hoverAtArgs =
> │ >             {|
> │ >                 uri = fullPathUri
> │ >                 pos = position
> │ >             |}
> │ > 
> │ >     let! hoverAtResult =
> │ >         server1.job_val (fun res -> server1.supervisor *<+ 
> │ > SupervisorReq.HoverAt(hoverAtArgs,res))
> │ >         |> Async.AwaitTask
> │ > 
> │ >     let fileDir = fullPath |> 
> System.IO.Path.GetDirectoryName
> │ >     if fileDir |> SpiralSm.starts_with (workspaceRoot </> 
> "target") then
> │ >         let fileDirUri = fileDir |> 
> SpiralFileSystem.normalize_path |> 
> │ > SpiralFileSystem.new_file_uri
> │ >         // let fileDeleteObj = {| FileDelete = {| uris = 
> [[| fileDirUri |]] |} 
> │ > |}
> │ >         // let! _fileDeleteResult = fileDeleteObj |> 
> sendObj serverPort
> │ >         let fileDeleteArgs = {| uris = [[| fileDirUri |]] 
> |}
> │ >         let! _fileDeleteResult =
> │ >             server1.job_null (server1.supervisor *<+ 
> SupervisorReq.FileDelete 
> │ > fileDeleteArgs)
> │ >             |> Async.AwaitTask
> │ >             |> Async.runWithTimeoutAsync 60000
> │ >             |> Async.map Option.get
> │ >         ()
> │ > 
> │ >     return hoverAtResult |> Some
> │ > }
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## getCodeHoverAt
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let getCodeHoverAt cancellationToken code position = async 
> {
> │ >     let! mainPath, _ =
> │ >         persistCode {| input = Spi (code, None); backend = 
> None; packages = 
> │ > [[||]] |}
> │ > 
> │ >     let codeDir = mainPath |> 
> System.IO.Path.GetDirectoryName
> │ >     let filePath = codeDir </> "hover.json"
> │ >     let! output = async {
> │ >         if filePath |> System.IO.File.Exists |> not
> │ >         then return None
> │ >         else
> │ >             let! text = filePath |> 
> SpiralFileSystem.read_all_text_async
> │ > 
> │ >             return
> │ >                 if text.Length > 2
> │ >                 then text |> Some
> │ >                 else None
> │ >     }
> │ >     match output with
> │ >     | Some output ->
> │ >         return output |> Some
> │ >     | None -> return! getFileHoverAt None cancellationToken
> mainPath position
> │ > }
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > getCodeHoverAt None """inl main () = ()""" {| line = 0; 
> character = 4 |}
> │ > |> Async.runWithTimeout 10000
> │ > |> Option.flatten
> │ > |> _assertEqual (Some "() -> ()")
> │ > 
> │ > ── [ 519.89ms - stdout ] 
> ───────────────────────────────────────────────────────
> │ > │ Some "() -> ()"
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > getCodeHoverAt None """inl main () = ()""" {| line = 0; 
> character = 0 |}
> │ > |> Async.runWithTimeout 10000
> │ > |> Option.flatten
> │ > |> _assertEqual (Some null)
> │ > 
> │ > ── [ 449.21ms - stdout ] 
> ───────────────────────────────────────────────────────
> │ > │ Some null
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > getCodeHoverAt None """inl rec main () = main""" {| line = 
> 0; character = 8 |}
> │ > |> Async.runWithTimeout 10000
> │ > |> Option.flatten
> │ > |> _assertEqual (Some "forall 'a. () -> 'a")
> │ > 
> │ > ── [ 498.12ms - stdout ] 
> ───────────────────────────────────────────────────────
> │ > │ Some "forall 'a. () -> 'a"
> │ > │ 
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > getCodeHoverAt None """inl main () = 1""" {| line = 0; 
> character = 4 |}
> │ > |> Async.runWithTimeout 10000
> │ > |> Option.flatten
> │ > |> _assertEqual (Some "forall 'a {number}. () -> 'a")
> │ > 
> │ > ── [ 478.61ms - stdout ] 
> ───────────────────────────────────────────────────────
> │ > │ Some "forall 'a {number}. () -> 'a"
> │ > │ 
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## Arguments
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > [[<RequireQualifiedAccess>]]
> │ > type Arguments =
> │ >     | Build_File of string * string
> │ >     | File_Token_Range of string * string
> │ >     | File_Hover_At of string * string * int * int
> │ >     | Execute_Command of string
> │ >     | [[<Argu.ArguAttributes.Unique>]] Timeout of int
> │ >     | [[<Argu.ArguAttributes.Unique>]] Port of int
> │ >     | [[<Argu.ArguAttributes.Unique>]] Parallel
> │ >     | [[<Argu.ArguAttributes.Unique>]] Exit_On_Error
> │ > 
> │ >     interface Argu.IArgParserTemplate with
> │ >         member s.Usage =
> │ >             match s with
> │ >             | Build_File _ -> nameof Build_File
> │ >             | File_Token_Range _ -> nameof File_Token_Range
> │ >             | File_Hover_At _ -> nameof File_Hover_At
> │ >             | Execute_Command _ -> nameof Execute_Command
> │ >             | Timeout _ -> nameof Timeout
> │ >             | Port _ -> nameof Port
> │ >             | Parallel -> nameof Parallel
> │ >             | Exit_On_Error-> nameof Exit_On_Error
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > Argu.ArgumentParser.Create<Arguments>().PrintUsage ()
> │ > 
> │ > ── [ 168.56ms - return value ] 
> ─────────────────────────────────────────────────
> │ > │ "USAGE: dotnet-repl [--help] 
> [--build-file <string> <string>]
> │ > │                    [--file-token-range 
> <string> <string>]
> │ > │                    [--file-hover-at 
> <string> <string> <int> 
> │ > <int>]
> │ > │                    [--execute-command 
> <string>] [--timeout 
> │ > <int>] [--port <int>]
> │ > │                    [--parallel] 
> [--exit-on-error]
> │ > │ 
> │ > │ OPTIONS:
> │ > │ 
> │ > │     --build-file <string> <string>
> │ > │                           Build_File
> │ > │     --file-token-range <string> <string>
> │ > │                           
> File_Token_Range
> │ > │     --file-hover-at <string> <string> 
> <int> <int>
> │ > │                           File_Hover_At
> │ > │     --execute-command <string>
> │ > │                           
> Execute_Command
> │ > │     --timeout <int>       Timeout
> │ > │     --port <int>          Port
> │ > │     --parallel            Parallel
> │ > │     --exit-on-error       Exit_On_Error
> │ > │     --help                display this 
> list of options.
> │ > │ "
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## main
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let main args =
> │ >     SpiralTrace.TraceLevel.US0_1 |> set_trace_level
> │ >     let argsMap = args |> Runtime.parseArgsMap<Arguments>
> │ > 
> │ >     let buildFileActions =
> │ >         argsMap
> │ >         |> Map.tryFind (nameof Arguments.Build_File)
> │ >         |> Option.defaultValue [[]]
> │ >         |> List.choose (function
> │ >             | Arguments.Build_File (inputPath, outputPath) 
> -> Some (inputPath, 
> │ > outputPath)
> │ >             | _ -> None
> │ >         )
> │ > 
> │ >     let fileTokenRangeActions =
> │ >         argsMap
> │ >         |> Map.tryFind (nameof Arguments.File_Token_Range)
> │ >         |> Option.defaultValue [[]]
> │ >         |> List.choose (function
> │ >             | Arguments.File_Token_Range (inputPath, 
> outputPath) -> Some 
> │ > (inputPath, outputPath)
> │ >             | _ -> None
> │ >         )
> │ > 
> │ >     let fileHoverAtActions =
> │ >         argsMap
> │ >         |> Map.tryFind (nameof Arguments.File_Hover_At)
> │ >         |> Option.defaultValue [[]]
> │ >         |> List.choose (function
> │ >             | Arguments.File_Hover_At (inputPath, 
> outputPath, line, character) 
> │ > ->
> │ >                 Some (inputPath, outputPath, line, 
> character)
> │ >             | _ -> None
> │ >         )
> │ > 
> │ >     let executeCommandActions =
> │ >         argsMap
> │ >         |> Map.tryFind (nameof Arguments.Execute_Command)
> │ >         |> Option.defaultValue [[]]
> │ >         |> List.choose (function
> │ >             | Arguments.Execute_Command command -> Some 
> command
> │ >             | _ -> None
> │ >         )
> │ > 
> │ >     let timeout =
> │ >         match argsMap |> Map.tryFind (nameof 
> Arguments.Timeout) with
> │ >         | Some [[ Arguments.Timeout timeout ]] -> timeout
> │ >         | _ -> 60002 * 60 * 24
> │ > 
> │ >     let port =
> │ >         match argsMap |> Map.tryFind (nameof 
> Arguments.Port) with
> │ >         | Some [[ Arguments.Port port ]] -> Some port
> │ >         | _ -> None
> │ > 
> │ >     let isParallel = argsMap |> Map.containsKey (nameof 
> Arguments.Parallel)
> │ > 
> │ >     let isExitOnError = argsMap |> Map.containsKey (nameof 
> │ > Arguments.Exit_On_Error)
> │ > 
> │ >     async {
> │ >         let port =
> │ >             port
> │ >             |> Option.defaultWith getCompilerPort
> │ >         let struct (localToken, disposable) = 
> │ > SpiralThreading.new_disposable_token None
> │ >         // let! serverPort, _errors, compilerToken, 
> disposable = awaitCompiler 
> │ > port (Some localToken)
> │ >         let serverPort = port
> │ >         let struct (compilerToken, disposable) = 
> │ > SpiralThreading.new_disposable_token None
> │ >         use _ = disposable
> │ > 
> │ >         let buildFileAsync =
> │ >             buildFileActions
> │ >             |> List.map (fun (inputPath, outputPath) -> 
> async {
> │ >                 let! _outputPath, outputCode, errors =
> │ >                     let backend =
> │ >                         if outputPath |> SpiralSm.ends_with
> ".fsx"
> │ >                         then Fsharp
> │ >                         elif outputPath |> 
> SpiralSm.ends_with ".py"
> │ >                         then Cuda
> │ >                         elif outputPath |> 
> SpiralSm.ends_with ".gleam"
> │ >                         then Gleam
> │ >                         else failwith $"Supervisor.main / 
> invalid backend / 
> │ > outputPath: {outputPath}"
> │ >                     let isReal = inputPath |> 
> SpiralSm.ends_with ".spir"
> │ >                     inputPath |> buildFile backend timeout 
> (Some serverPort) 
> │ > None
> │ > 
> │ >                 errors
> │ >                 |> List.map snd
> │ >                 |> List.iter (fun error ->
> │ >                     trace Critical (fun () -> $"main / 
> error: {error |> 
> │ > serializeObj}") _locals
> │ >                 )
> │ > 
> │ >                 match outputCode with
> │ >                 | Some outputCode ->
> │ >                     do! outputCode |> 
> SpiralFileSystem.write_all_text_exists 
> │ > outputPath
> │ >                     return 0
> │ >                 | None ->
> │ >                     if isExitOnError
> │ >                     then SpiralRuntime.current_process_kill
> ()
> │ > 
> │ >                     return 1
> │ >             })
> │ > 
> │ >         let fileTokenRangeAsync =
> │ >             fileTokenRangeActions
> │ >             |> List.map (fun (inputPath, outputPath) -> 
> async {
> │ >                 let! tokenRange = inputPath |> 
> getFileTokenRange (Some 
> │ > serverPort) None
> │ >                 match tokenRange with
> │ >                 | Some tokenRange ->
> │ >                     do! tokenRange |> 
> FSharp.Json.Json.serialize |> 
> │ > SpiralFileSystem.write_all_text_exists outputPath
> │ >                     return 0
> │ >                 | None ->
> │ >                     if isExitOnError
> │ >                     then SpiralRuntime.current_process_kill
> ()
> │ > 
> │ >                     return 1
> │ >             })
> │ > 
> │ >         let fileHoverAtAsync =
> │ >             fileHoverAtActions
> │ >             |> List.map (fun (inputPath, outputPath, line, 
> character) -> async {
> │ >                 let! hoverAt =
> │ >                     getFileHoverAt
> │ >                         (Some serverPort)
> │ >                         None
> │ >                         inputPath
> │ >                         {| line = line; character = 
> character |}
> │ >                 match hoverAt with
> │ >                 | Some hoverAt ->
> │ >                     do! hoverAt |> 
> FSharp.Json.Json.serialize |> 
> │ > SpiralFileSystem.write_all_text_exists outputPath
> │ >                     return 0
> │ >                 | None ->
> │ >                     if isExitOnError
> │ >                     then SpiralRuntime.current_process_kill
> ()
> │ > 
> │ >                     return 1
> │ >             })
> │ > 
> │ >         let executeCommandAsync =
> │ >             executeCommandActions
> │ >             |> List.map (fun command -> async {
> │ >                 let! exitCode, result =
> │ >                     SpiralRuntime.execution_options (fun x 
> ->
> │ >                         { x with
> │ >                             l0 = command
> │ >                             l1 = Some compilerToken
> │ >                         }
> │ >                     )
> │ >                     |> 
> SpiralRuntime.execute_with_options_async
> │ > 
> │ >                 trace Debug (fun () -> $"main / 
> executeCommand / exitCode: 
> │ > {exitCode} / command: {command}") _locals
> │ > 
> │ >                 if isExitOnError && exitCode <> 0
> │ >                 then SpiralRuntime.current_process_kill ()
> │ > 
> │ >                 return exitCode
> │ >             })
> │ > 
> │ >         return!
> │ >             [[| buildFileAsync; fileTokenRangeAsync; 
> fileHoverAtAsync; 
> │ > executeCommandAsync |]]
> │ >             |> Seq.collect id
> │ >             |> fun x ->
> │ >                 if isParallel
> │ >                 then Async.Parallel (x, float 
> System.Environment.ProcessorCount 
> │ > * 0.51 |> ceil |> int)
> │ >                 else Async.Sequential x
> │ >             |> Async.map Array.sum
> │ >     }
> │ >     |> Async.runWithTimeout timeout
> │ >     |> Option.defaultValue 1
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > let args =
> │ >     System.Environment.GetEnvironmentVariable "ARGS"
> │ >     |> SpiralRuntime.split_args
> │ >     |> Result.toArray
> │ >     |> Array.collect id
> │ > 
> │ > match args with
> │ > | [[||]] -> 0
> │ > | args -> if main args = 0 then 0 else failwith "main 
> failed"
> │ > 
> │ > ── [ 117.68ms - return value ] 
> ─────────────────────────────────────────────────
> │ > │ <div class="dni-plaintext"><pre>0
> │ > │ </pre></div><style>
> │ > │ .dni-code-hint {
> │ > │     font-style: italic;
> │ > │     overflow: hidden;
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview {
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview td {
> │ > │     vertical-align: top;
> │ > │     text-align: start;
> │ > │ }
> │ > │ details.dni-treeview {
> │ > │     padding-left: 1em;
> │ > │ }
> │ > │ table td {
> │ > │     text-align: start;
> │ > │ }
> │ > │ table tr { 
> │ > │     vertical-align: top; 
> │ > │     margin: 0em 0px;
> │ > │ }
> │ > │ table tr td pre 
> │ > │ { 
> │ > │     vertical-align: top !important; 
> │ > │     margin: 0em 0px !important;
> │ > │ } 
> │ > │ table th {
> │ > │     text-align: start;
> │ > │ }
> │ > │ </style>
> │ 00:02:42 v #3 runtime.execute_with_options / result / {
> exit_code = 0; std_trace_length = 168813 }
> │ 00:02:42 d #4 runtime.execute_with_options / { 
> file_name = jupyter; arguments = ["nbconvert", 
> "c:/home/git/polyglot/apps/spiral/Supervisor.dib.ipynb", "--to", "html", 
> "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert 
> "c:/home/git/polyglot/apps/spiral/Supervisor.dib.ipynb" --to html 
> --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = 
> Array(MutCell([])); on_line = None; stdin = None; trace = true; 
> working_directory = None } }
> │ 00:02:43 v #5 ! [NbConvertApp] Converting notebook 
> c:/home/git/polyglot/apps/spiral/Supervisor.dib.ipynb to html
> │ 00:02:43 v #6 ! 
> C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.
> py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a 
> hard error in future nbformat versions. You may want to use `normalize()` on 
> your notebooks before validations (available since nbformat 5.1.4). Previous 
> versions of nbformat are fixing this issue transparently, and will stop doing so
> in the future.
> │ 00:02:43 v #7 !   validate(nb)
> │ 00:02:44 v #8 ! 
> C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\
> highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python
> 3
> │ 00:02:44 v #9 !   return _pygments_highlight(
> │ 00:02:46 v #10 ! [NbConvertApp] Writing 606452 bytes to
> c:\home\git\polyglot\apps\spiral\Supervisor.dib.html
> │ 00:02:46 v #11 runtime.execute_with_options / result / 
> { exit_code = 0; std_trace_length = 864 }
> │ 00:02:46 d #12 spiral.run / dib / jupyter nbconvert / {
> exit_code = 0; jupyter_result_length = 864 }
> │ 00:02:46 d #13 runtime.execute_with_options / { 
> file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 
> 'c:/home/git/polyglot/apps/spiral/Supervisor.dib.html'; (Get-Content $path -Raw)
> -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } 
> | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 
> 'c:/home/git/polyglot/apps/spiral/Supervisor.dib.html'; (Get-Content $path -Raw)
> -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | 
> Set-Content $path"; cancellation_token = None; environment_variables = 
> Array(MutCell([])); on_line = None; stdin = None; trace = true; 
> working_directory = None } }
> │ 00:02:46 v #14 runtime.execute_with_options / result / 
> { exit_code = 0; std_trace_length = 0 }
> │ 00:02:46 d #15 spiral.run / dib / html cell ids / { 
> exit_code = 0; pwsh_replace_html_result_length = 0 }
> │ 00:02:46 d #16 spiral.run / dib / { exit_code = 0; 
> result_length = 169736 }
> │ 00:00:00 d #1 writeDibCode / output: Fs / path: 
> Supervisor.dib
> │ 00:00:00 d #2 parseDibCode / output: Fs / file: 
> Supervisor.dib
> │ 00:00:00 d #1 persistCodeProject / packages: [Argu; 
> FSharp.Control.AsyncSeq; FSharp.Json; ... ] / modules: 
> [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; 
> deps/spiral/lib/spiral/crypto.fsx; ... ] / name: Supervisor / hash:  / 
> code.Length: 40313
> │ 00:00:00 d #2 buildProject / fullPath: 
> c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj
> │ 00:00:00 d #1 runtime.execute_with_options_async / { 
> file_name = dotnet; arguments = US5_0
> │   "publish 
> "c:/home/git\polyglot\target/Builder\Supervisor\Supervisor.fsproj" 
> --configuration Release --output "C:\home\git\polyglot\apps\spiral\dist" 
> --runtime linux-x64"; options = { command = dotnet publish 
> "c:/home/git\polyglot\target/Builder\Supervisor\Supervisor.fsproj" 
> --configuration Release --output "C:\home\git\polyglot\apps\spiral\dist" 
> --runtime linux-x64; cancellation_token = None; environment_variables = [||]; 
> on_line = None; stdin = None; trace = true; working_directory = Some 
> "c:\home\git\polyglot\target\Builder\Supervisor" } }
> │ 00:00:01 v #2 >   Determining projects to restore...
> │ 00:00:01 v #3 >   Paket version 
> 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
> │ 00:00:01 v #4 >   The last full restore is still up to 
> date. Nothing left to do.
> │ 00:00:01 v #5 >   Total time taken: 0 milliseconds
> │ 00:00:02 v #6 >   Restored 
> c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj (in 320 ms).
> │ 00:00:16 v #7 > 
> c:\home\git\polyglot\deps\spiral\apps\compiler\spiral_compiler.fs(10087,85): 
> warning FS0040: This and other recursive references to the object(s) being 
> defined will be checked for initialization-soundness at runtime through the use 
> of a delayed reference. This is because you are defining one or more recursive 
> objects, rather than recursive functions. This warning may be suppressed by 
> using '#nowarn "40"' or '--nowarn:40'. 
> [c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj]
> │ 00:00:16 v #8 > 
> c:\home\git\polyglot\deps\spiral\apps\compiler\spiral_compiler.fs(10610,85): 
> warning FS0040: This and other recursive references to the object(s) being 
> defined will be checked for initialization-soundness at runtime through the use 
> of a delayed reference. This is because you are defining one or more recursive 
> objects, rather than recursive functions. This warning may be suppressed by 
> using '#nowarn "40"' or '--nowarn:40'. 
> [c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj]
> │ 00:00:17 v #9 > 
> c:\home\git\polyglot\deps\spiral\apps\compiler\spiral_compiler.fs(11434,43): 
> warning FS0040: This and other recursive references to the object(s) being 
> defined will be checked for initialization-soundness at runtime through the use 
> of a delayed reference. This is because you are defining one or more recursive 
> objects, rather than recursive functions. This warning may be suppressed by 
> using '#nowarn "40"' or '--nowarn:40'. 
> [c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj]
> │ 00:00:17 v #10 > 
> c:\home\git\polyglot\deps\spiral\apps\compiler\spiral_compiler.fs(12364,43): 
> warning FS0040: This and other recursive references to the object(s) being 
> defined will be checked for initialization-soundness at runtime through the use 
> of a delayed reference. This is because you are defining one or more recursive 
> objects, rather than recursive functions. This warning may be suppressed by 
> using '#nowarn "40"' or '--nowarn:40'. 
> [c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj]
> │ 00:00:17 v #11 > 
> c:\home\git\polyglot\deps\spiral\apps\compiler\spiral_compiler.fs(13030,71): 
> warning FS0040: This and other recursive references to the object(s) being 
> defined will be checked for initialization-soundness at runtime through the use 
> of a delayed reference. This is because you are defining one or more recursive 
> objects, rather than recursive functions. This warning may be suppressed by 
> using '#nowarn "40"' or '--nowarn:40'. 
> [c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj]
> │ 00:00:20 v #12 > 
> c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fs(211,19): warning 
> FS0686: The method or function 'new_server' should not be given explicit type 
> argument(s) because it does not declare its type parameters explicitly 
> [c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj]
> │ 00:00:20 v #13 > 
> c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fs(212,19): warning 
> FS0686: The method or function 'new_server' should not be given explicit type 
> argument(s) because it does not declare its type parameters explicitly 
> [c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj]
> │ 00:00:40 v #14 >   Supervisor -> 
> c:\home\git\polyglot\target\Builder\Supervisor\bin\Release\net9.0\linux-x64\Supe
> rvisor.dll
> │ 00:00:42 v #15 >   Supervisor -> 
> C:\home\git\polyglot\apps\spiral\dist\
> │ 00:00:42 d #16 runtime.execute_with_options_async / { 
> exit_code = 0; output_length = 3503; options = { command = dotnet publish 
> "c:/home/git\polyglot\target/Builder\Supervisor\Supervisor.fsproj" 
> --configuration Release --output "C:\home\git\polyglot\apps\spiral\dist" 
> --runtime linux-x64; cancellation_token = None; environment_variables = [||]; 
> on_line = None; stdin = None; trace = true; working_directory = Some 
> "c:\home\git\polyglot\target\Builder\Supervisor" } }
> │ 00:00:42 d #17 runtime.execute_with_options_async / { 
> file_name = dotnet; arguments = US5_0
> │   "publish 
> "c:/home/git\polyglot\target/Builder\Supervisor\Supervisor.fsproj" 
> --configuration Release --output "C:\home\git\polyglot\apps\spiral\dist" 
> --runtime win-x64"; options = { command = dotnet publish 
> "c:/home/git\polyglot\target/Builder\Supervisor\Supervisor.fsproj" 
> --configuration Release --output "C:\home\git\polyglot\apps\spiral\dist" 
> --runtime win-x64; cancellation_token = None; environment_variables = [||]; 
> on_line = None; stdin = None; trace = true; working_directory = Some 
> "c:\home\git\polyglot\target\Builder\Supervisor" } }
> │ 00:00:43 v #18 >   Determining projects to restore...
> │ 00:00:43 v #19 >   Paket version 
> 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
> │ 00:00:43 v #20 >   The last full restore is still up to 
> date. Nothing left to do.
> │ 00:00:43 v #21 >   Total time taken: 0 milliseconds
> │ 00:00:44 v #22 >   Restored 
> c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj (in 280 ms).
> │ 00:00:57 v #23 > 
> c:\home\git\polyglot\deps\spiral\apps\compiler\spiral_compiler.fs(10087,85): 
> warning FS0040: This and other recursive references to the object(s) being 
> defined will be checked for initialization-soundness at runtime through the use 
> of a delayed reference. This is because you are defining one or more recursive 
> objects, rather than recursive functions. This warning may be suppressed by 
> using '#nowarn "40"' or '--nowarn:40'. 
> [c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj]
> │ 00:00:57 v #24 > 
> c:\home\git\polyglot\deps\spiral\apps\compiler\spiral_compiler.fs(10610,85): 
> warning FS0040: This and other recursive references to the object(s) being 
> defined will be checked for initialization-soundness at runtime through the use 
> of a delayed reference. This is because you are defining one or more recursive 
> objects, rather than recursive functions. This warning may be suppressed by 
> using '#nowarn "40"' or '--nowarn:40'. 
> [c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj]
> │ 00:00:58 v #25 > 
> c:\home\git\polyglot\deps\spiral\apps\compiler\spiral_compiler.fs(11434,43): 
> warning FS0040: This and other recursive references to the object(s) being 
> defined will be checked for initialization-soundness at runtime through the use 
> of a delayed reference. This is because you are defining one or more recursive 
> objects, rather than recursive functions. This warning may be suppressed by 
> using '#nowarn "40"' or '--nowarn:40'. 
> [c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj]
> │ 00:00:58 v #26 > 
> c:\home\git\polyglot\deps\spiral\apps\compiler\spiral_compiler.fs(12364,43): 
> warning FS0040: This and other recursive references to the object(s) being 
> defined will be checked for initialization-soundness at runtime through the use 
> of a delayed reference. This is because you are defining one or more recursive 
> objects, rather than recursive functions. This warning may be suppressed by 
> using '#nowarn "40"' or '--nowarn:40'. 
> [c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj]
> │ 00:00:58 v #27 > 
> c:\home\git\polyglot\deps\spiral\apps\compiler\spiral_compiler.fs(13030,71): 
> warning FS0040: This and other recursive references to the object(s) being 
> defined will be checked for initialization-soundness at runtime through the use 
> of a delayed reference. This is because you are defining one or more recursive 
> objects, rather than recursive functions. This warning may be suppressed by 
> using '#nowarn "40"' or '--nowarn:40'. 
> [c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj]
> │ 00:01:02 v #28 > 
> c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fs(211,19): warning 
> FS0686: The method or function 'new_server' should not be given explicit type 
> argument(s) because it does not declare its type parameters explicitly 
> [c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj]
> │ 00:01:02 v #29 > 
> c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fs(212,19): warning 
> FS0686: The method or function 'new_server' should not be given explicit type 
> argument(s) because it does not declare its type parameters explicitly 
> [c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj]
> │ 00:01:20 v #30 >   Supervisor -> 
> c:\home\git\polyglot\target\Builder\Supervisor\bin\Release\net9.0\win-x64\Superv
> isor.dll
> │ 00:01:22 v #31 >   Supervisor -> 
> C:\home\git\polyglot\apps\spiral\dist\
> │ 00:01:22 d #32 runtime.execute_with_options_async / { 
> exit_code = 0; output_length = 3501; options = { command = dotnet publish 
> "c:/home/git\polyglot\target/Builder\Supervisor\Supervisor.fsproj" 
> --configuration Release --output "C:\home\git\polyglot\apps\spiral\dist" 
> --runtime win-x64; cancellation_token = None; environment_variables = [||]; 
> on_line = None; stdin = None; trace = true; working_directory = Some 
> "c:\home\git\polyglot\target\Builder\Supervisor" } }
> │ 00:00:00 d #1 spiral.main / { args = 
> Array(MutCell(["dib", "--path", "Eval.dib", "--retries", "3"])) }
> │ 00:00:00 d #2 runtime.execute_with_options / { 
> file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", 
> "c:/home/git/polyglot/apps/spiral/Eval.dib", "--output-path", 
> "c:/home/git/polyglot/apps/spiral/Eval.dib.ipynb"]; options = { command = dotnet
> repl --exit-after-run --run "c:/home/git/polyglot/apps/spiral/Eval.dib" 
> --output-path "c:/home/git/polyglot/apps/spiral/Eval.dib.ipynb"; 
> cancellation_token = None; environment_variables = 
> Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = 
> None; stdin = None; trace = false; working_directory = None } }
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ # Eval (Polyglot)
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
> │ > dard2.1/FSharp.Control.AsyncSeq.dll"
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
> │ > 0/System.Reactive.dll"
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/
> │ > netstandard2.0/System.Reactive.Linq.dll"
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll"
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.com
> │ > 
> mon/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Common.dll"
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.cli
> │ > 
> ent/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Client.dll"
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.common/7.0.0
> │ > /lib/net7.0/Microsoft.AspNetCore.SignalR.Common.dll"
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client/7.0.0
> │ > /lib/net7.0/Microsoft.AspNetCore.SignalR.Client.dll"
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client.core/
> │ > 
> 7.0.0/lib/net7.0/Microsoft.AspNetCore.SignalR.Client.Core.dll"
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/fsharp.json/0.4.1/lib/netstandard2.0/FSha
> │ > rp.Json.dll"
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/system.management/7.0.0/lib/netstandard2.
> │ > 0/System.Management.dll"
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/fsharpx.collections/3.1.0/lib/netstandard
> │ > 2.0/FSharpx.Collections.dll"
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/hopac/0.5.1/lib/netstandard2.0/Hopac.dll"
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/hopac/0.5.1/lib/netstandard2.0/Hopac.Core
> │ > .dll"
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP
> │ > arsec.dll"
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP
> │ > arsecCS.dll"
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > #if _LINUX
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6
> │ > 
> 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.dll"
> │ > #else
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/
> │ > 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.dll"
> │ > #endif
> │ > 
> │ > #if _LINUX
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6
> │ > 
> 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.dll"
> │ > #else
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/
> │ > 
> 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.dll"
> │ > #endif
> │ > 
> │ > #if _LINUX
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6
> │ > 
> 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.Core.dll"
> │ > #else
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/
> │ > 
> 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.Core.dll"
> │ > #endif
> │ > 
> │ > #if _LINUX
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6
> │ > 
> 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Cors.dll"
> │ > #else
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/
> │ > 
> 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Cors.dll"
> │ > #endif
> │ > 
> │ > #if _LINUX
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6
> │ > 
> 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll
> │ > "
> │ > #else
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/
> │ > 
> 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll"
> │ > #endif
> │ > 
> │ > #if _LINUX
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6
> │ > 
> 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Connections.Abstracti
> │ > ons.dll"
> │ > #else
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/
> │ > 
> 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Connections.Abstractions.
> │ > dll"
> │ > #endif
> │ > 
> │ > #if _LINUX
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6
> │ > 
> 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Hosting.Abstractions.
> │ > dll"
> │ > #else
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/
> │ > 
> 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Hosting.Abstractions.dll"
> │ > #endif
> │ > 
> │ > #if _LINUX
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6
> │ > 
> 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Http.Connections.dll"
> │ > #else
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/
> │ > 
> 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Http.Connections.dll"
> │ > #endif
> │ > 
> │ > #if _LINUX
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6
> │ > 
> 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Routing.dll"
> │ > #else
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/
> │ > 
> 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Routing.dll"
> │ > #endif
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.extensions.logging/9.0.0/lib/ne
> │ > t9.0/Microsoft.Extensions.Logging.dll"
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.extensions.logging.abstractions
> │ > 
> /9.0.0/lib/net9.0/Microsoft.Extensions.Logging.Abstractions.dll"
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/microsoft.extensions.dependencyinjection.
> │ > 
> abstractions/9.0.0/lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstracti
> │ > ons.dll"
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > ── [ 1.91m - diagnostics ] 
> ─────────────────────────────────────────────────────
> │ > │ input.fsx (10087,85)-(10087,88) 
> typecheck warning This and 
> │ > other recursive references to the object(s) being defined 
> will be checked for 
> │ > initialization-soundness at runtime through the use of a 
> delayed reference. This
> │ > is because you are defining one or more recursive objects, 
> rather than recursive
> │ > functions. This warning may be suppressed by using '#nowarn
> "40"' or 
> │ > '--nowarn:40'.
> │ > │ input.fsx (10610,85)-(10610,88) 
> typecheck warning This and 
> │ > other recursive references to the object(s) being defined 
> will be checked for 
> │ > initialization-soundness at runtime through the use of a 
> delayed reference. This
> │ > is because you are defining one or more recursive objects, 
> rather than recursive
> │ > functions. This warning may be suppressed by using '#nowarn
> "40"' or 
> │ > '--nowarn:40'.
> │ > │ input.fsx (11434,43)-(11434,49) 
> typecheck warning This and 
> │ > other recursive references to the object(s) being defined 
> will be checked for 
> │ > initialization-soundness at runtime through the use of a 
> delayed reference. This
> │ > is because you are defining one or more recursive objects, 
> rather than recursive
> │ > functions. This warning may be suppressed by using '#nowarn
> "40"' or 
> │ > '--nowarn:40'.
> │ > │ input.fsx (12364,43)-(12364,49) 
> typecheck warning This and 
> │ > other recursive references to the object(s) being defined 
> will be checked for 
> │ > initialization-soundness at runtime through the use of a 
> delayed reference. This
> │ > is because you are defining one or more recursive objects, 
> rather than recursive
> │ > functions. This warning may be suppressed by using '#nowarn
> "40"' or 
> │ > '--nowarn:40'.
> │ > │ input.fsx (13030,71)-(13030,74) 
> typecheck warning This and 
> │ > other recursive references to the object(s) being defined 
> will be checked for 
> │ > initialization-soundness at runtime through the use of a 
> delayed reference. This
> │ > is because you are defining one or more recursive objects, 
> rather than recursive
> │ > functions. This warning may be suppressed by using '#nowarn
> "40"' or 
> │ > '--nowarn:40'.
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > open spiral_compiler
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > ── [ 10.55s - diagnostics ] 
> ────────────────────────────────────────────────────
> │ > │ input.fsx (211,19)-(211,29) typecheck 
> warning The method or 
> │ > function 'new_server' should not be given explicit type 
> argument(s) because it 
> │ > does not declare its type parameters explicitly
> │ > │ input.fsx (212,19)-(212,29) typecheck 
> warning The method or 
> │ > function 'new_server' should not be given explicit type 
> argument(s) because it 
> │ > does not declare its type parameters explicitly
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > #if !INTERACTIVE
> │ > open Lib
> │ > #endif
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > open Common
> │ > open SpiralFileSystem.Operators
> │ > open Microsoft.AspNetCore.SignalR.Client
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > open System
> │ > open System.Collections.Generic
> │ > open System.IO
> │ > open System.Text
> │ > open System.Threading
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## mapErrors
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline mapErrors (severity, errors, lastTopLevelIndex) 
> allCode =
> │ >     let allCodeLineLength =
> │ >         allCode |> SpiralSm.split "\n" |> Array.length
> │ > 
> │ >     errors
> │ >     |> List.map (fun (_, error) ->
> │ >         match error with
> │ >         | FatalError message ->
> │ >             (
> │ >                 severity, message, 0, ("", (0, 0), (0, 0))
> │ >             )
> │ >             |> List.singleton
> │ >         | TracedError data ->
> │ >             data.trace
> │ >             |> List.truncate 5
> │ >             |> List.append [[ data.message ]]
> │ >             |> List.map (fun message ->
> │ >                 (
> │ >                     severity, message, 0, ("", (0, 0), (0, 
> 0))
> │ >                 )
> │ >             )
> │ >         | PackageErrors data
> │ >         | TokenizerErrors data
> │ >         | ParserErrors data
> │ >         | TypeErrors data ->
> │ >             data.errors
> │ >             |> List.filter (fun ((rangeStart, _), _) ->
> │ >                 trace Debug (fun () -> $"Eval.mapErrors / 
> rangeStart.line: 
> │ > {rangeStart.line} / lastTopLevelIndex: {lastTopLevelIndex} 
> / allCodeLineLength: 
> │ > {allCodeLineLength} / filtered: {rangeStart.line > 
> allCodeLineLength}") _locals
> │ >                 rangeStart.line > allCodeLineLength
> │ >             )
> │ >             |> List.map (fun ((rangeStart, rangeEnd), 
> message) ->
> │ >                 (
> │ >                     severity,
> │ >                     message,
> │ >                     0,
> │ >                     (
> │ >                         (data.uri |> 
> System.IO.Path.GetFileName),
> │ >                         (
> │ >                             (match lastTopLevelIndex with
> │ >                             | Some i when rangeStart.line 
> >= i + 
> │ > allCodeLineLength + 3 ->
> │ >                                 rangeStart.line - 
> allCodeLineLength - 2
> │ >                             | _ -> rangeStart.line - 
> allCodeLineLength),
> │ >                             (match lastTopLevelIndex with
> │ >                             | Some i when rangeStart.line 
> >= i + 
> │ > allCodeLineLength + 3 ->
> │ >                                 rangeStart.character - 4
> │ >                             | _ -> rangeStart.character)
> │ >                         ),
> │ >                         (
> │ >                             (match lastTopLevelIndex with
> │ >                             | Some i when rangeStart.line 
> >= i + 
> │ > allCodeLineLength + 3 ->
> │ >                                 rangeEnd.line - 
> allCodeLineLength - 2
> │ >                             | _ -> rangeEnd.line - 
> allCodeLineLength),
> │ >                             (match lastTopLevelIndex with
> │ >                             | Some i when rangeStart.line 
> >= i + 
> │ > allCodeLineLength + 3 ->
> │ >                                 rangeEnd.character - 4
> │ >                             | _ -> rangeEnd.character)
> │ >                         )
> │ >                     )
> │ >                 )
> │ >             )
> │ >     )
> │ >     |> List.collect id
> │ >     |> List.toArray
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### workspaceRoot
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let workspaceRoot = SpiralFileSystem.get_workspace_root ()
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### targetDir
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let targetDir = workspaceRoot </> "target/spiral_Eval"
> │ > [[ targetDir ]]
> │ > |> List.iter (fun dir -> if Directory.Exists dir |> not 
> then 
> │ > Directory.CreateDirectory dir |> ignore)
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## allCode
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let mutable allCode = ""
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### allPackages
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let mutable allPackages : string [[]] = [[||]]
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## allCodeReal
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let mutable allCodeReal = ""
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## traceToggle
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let mutable traceToggle = false
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## startTokenRangeWatcher
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline startTokenRangeWatcher () =
> │ >     if [[ "dotnet-repl" ]] |> List.contains 
> spiral_compiler.assemblyName
> │ >     then new_disposable (fun () -> ())
> │ >     else
> │ >         let tokensDir = targetDir </> "tokens"
> │ > 
> │ >         [[ tokensDir ]]
> │ >         |> List.iter (fun dir -> if Directory.Exists dir |>
> not then 
> │ > Directory.CreateDirectory dir |> ignore)
> │ > 
> │ >         let stream, disposable = FileSystem.watchDirectory 
> (fun _ -> false) 
> │ > tokensDir
> │ > 
> │ >         try
> │ >             let existingFilesChild =
> │ >                 tokensDir
> │ >                 |> System.IO.Directory.GetDirectories
> │ >                 |> Array.map (fun codeDir -> async {
> │ >                     try
> │ >                         let tokensPath = codeDir </> 
> "tokens.json"
> │ >                         if tokensPath |> File.Exists |> not
> then
> │ >                             let spiralCodePath = codeDir 
> </> "main.spi"
> │ >                             let spiralRealCodePath = 
> codeDir </> 
> │ > "main_real.spir"
> │ >                             let spiralExists = 
> spiralCodePath |> 
> │ > System.IO.File.Exists
> │ >                             let spiralRealExists = 
> spiralRealCodePath |> 
> │ > System.IO.File.Exists
> │ >                             if spiralExists |> not && 
> spiralRealExists |> not
> │ >                             then do! codeDir |> 
> │ > SpiralFileSystem.delete_directory_async |> Async.Ignore
> │ >                             else
> │ >                                 let! tokens =
> │ >                                     if spiralExists then 
> spiralCodePath else 
> │ > spiralRealCodePath
> │ >                                     |> 
> Supervisor.getFileTokenRange None None
> │ >                                 match tokens with
> │ >                                 | Some tokens ->
> │ >                                     do!
> │ >                                         tokens
> │ >                                         |> 
> FSharp.Json.Json.serialize
> │ >                                         |> 
> SpiralFileSystem.write_all_text_async
> │ > tokensPath
> │ >                                 | None ->
> │ >                                     trace Verbose (fun () 
> -> 
> │ > $"Eval.startTokenRangeWatcher / GetDirectories / tokens: 
> None") _locals
> │ >                     with ex ->
> │ >                         trace Critical (fun () -> 
> $"Eval.startTokenRangeWatcher 
> │ > / GetDirectories / ex: {ex |> SpiralSm.format_exception}") 
> _locals
> │ >                 })
> │ >                 |> Async.Parallel
> │ >                 |> Async.Ignore
> │ > 
> │ >             let streamAsyncChild =
> │ >                 stream
> │ >                 |> 
> FSharp.Control.AsyncSeq.iterAsyncParallel (fun (ticks, event)
> │ > ->
> │ >                     match event with
> │ >                     | FileSystem.FileSystemChange.Changed 
> (codePath, _)
> │ >                         when [[ "main.spi"; 
> "main_real.spir" ]]
> │ >                             |> List.contains 
> (System.IO.Path.GetFileName 
> │ > codePath)
> │ >                         ->
> │ >                         async {
> │ >                             let hashDir = codePath |> 
> │ > System.IO.Directory.GetParent
> │ >                             let hashHex = hashDir.Name
> │ >                             let codePath = tokensDir </> 
> codePath
> │ >                             let tokensPath = tokensDir </> 
> hashHex </> 
> │ > "tokens.json"
> │ >                             // do! Async.Sleep 30
> │ >                             let rec loop retry = async {
> │ >                                 let! tokens = codePath |> 
> │ > Supervisor.getFileTokenRange None None
> │ >                                 if retry = 3 || tokens <> 
> Some [[||]]
> │ >                                 then return tokens, retry
> │ >                                 else
> │ >                                     trace Debug
> │ >                                         (fun () -> 
> $"Eval.startTokenRangeWatcher
> │ > / iterAsyncParallel")
> │ >                                         (fun () -> $"retry:
> {retry} / tokens: 
> │ > %A{tokens}")
> │ >                                     do! Async.Sleep 30
> │ >                                     return! loop (retry + 
> 1)
> │ >                             }
> │ >                             let! tokens, retries = loop 1
> │ >                             match tokens with
> │ >                             | Some tokens ->
> │ >                                 do!
> │ >                                     tokens
> │ >                                     |> 
> FSharp.Json.Json.serialize
> │ >                                     |> 
> SpiralFileSystem.write_all_text_exists 
> │ > tokensPath
> │ >                             | None ->
> │ >                                 trace Debug
> │ >                                     (fun () -> 
> $"Eval.startTokenRangeWatcher / 
> │ > iterAsyncParallel")
> │ >                                     (fun () -> $"retries: 
> {retries} / tokens: 
> │ > {tokens}")
> │ >                         }
> │ >                         |> Async.retryAsync 3
> │ >                         |> Async.map (Result.toOption >> 
> Option.defaultValue ())
> │ >                     | _ -> () |> Async.init
> │ >                 )
> │ > 
> │ >             async {
> │ >                 do! Async.Sleep 3000
> │ >                 existingFilesChild |> Async.StartImmediate
> │ >                 streamAsyncChild |> Async.Start
> │ >             }
> │ >             |> Async.Start
> │ >         with ex ->
> │ >             trace Critical (fun () -> 
> $"Eval.startTokenRangeWatcher / ex: {ex |>
> │ > SpiralSm.format_exception}") _locals
> │ > 
> │ >         disposable
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## startCommandsWatcher
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let startCommandsWatcher (uriServer : string) =
> │ >     let commandsDir = targetDir </> "eval_commands"
> │ >     let commandHistoryDir = targetDir </> 
> "eval_command_history"
> │ >     [[ commandsDir; commandHistoryDir ]]
> │ >     |> List.iter (fun dir -> if Directory.Exists dir |> not
> then 
> │ > Directory.CreateDirectory dir |> ignore)
> │ > 
> │ >     Directory.EnumerateFiles commandsDir |> Seq.iter 
> File.Delete
> │ > 
> │ >     let stream, disposable =
> │ >         commandsDir
> │ >         |> FileSystem.watchDirectory (function
> │ >             | FileSystem.FileSystemChange.Created _ -> true
> │ >             | _ -> false
> │ >         )
> │ > 
> │ >     let connection = 
> HubConnectionBuilder().WithUrl(uriServer).Build()
> │ >     connection.StartAsync() |> Async.AwaitTask |> 
> Async.Start
> │ >     // let _ = connection.On<string>("ServerToClientMsg", 
> fun x ->
> │ >     //     printfn $"ServerToClientMsg: '{x}'"
> │ >     // )
> │ > 
> │ >     stream
> │ >     |> FSharp.Control.AsyncSeq.iterAsyncParallel (fun 
> (ticks, event) -> async {
> │ >         let _locals () = $"ticks: {ticks} / event: {event} 
> / {_locals ()}"
> │ >         trace Verbose (fun () -> "Eval.startCommandsWatcher
> / 
> │ > iterAsyncParallel") _locals
> │ > 
> │ >         match event with
> │ >         | FileSystem.FileSystemChange.Created (path, Some 
> json) ->
> │ >             try
> │ >                 let fullPath = commandsDir </> path
> │ >                 let! result = 
> │ > connection.InvokeAsync<string>("ClientToServerMsg", json) 
> |> Async.AwaitTask
> │ >                 let commandHistoryPath = commandHistoryDir 
> </> path
> │ >                 do! fullPath |> 
> SpiralFileSystem.move_file_async 
> │ > commandHistoryPath |> Async.Ignore
> │ >                 if result |> SpiralSm.trim |> String.length
> > 0 then
> │ >                     let resultPath = commandHistoryDir </> 
> │ > $"{Path.GetFileNameWithoutExtension path}_result.json"
> │ >                     do! result |> 
> SpiralFileSystem.write_all_text_async 
> │ > resultPath
> │ >             with ex ->
> │ >                 let _locals () = $"ex: {ex |> 
> SpiralSm.format_exception} / 
> │ > {_locals ()}"
> │ >                 trace Critical (fun () -> 
> "Eval.startCommandsWatcher / 
> │ > iterAsyncParallel") _locals
> │ >         | _ -> ()
> │ >     })
> │ >     |> Async.StartChild
> │ >     |> Async.Ignore
> │ >     |> Async.Start
> │ > 
> │ >     new_disposable (fun () ->
> │ >         disposable.Dispose ()
> │ >     )
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## prepareSpiral
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let prepareSpiral rawCellCode lines =
> │ >     let lastBlock =
> │ >         lines
> │ >         |> Array.tryFindBack (fun line ->
> │ >             line |> String.length > 0
> │ >             && line.[[0]] <> ' '
> │ >         )
> │ > 
> │ >     let hasMain =
> │ >         lastBlock
> │ >         |> Option.exists (fun line ->
> │ >             line |> SpiralSm.starts_with "inl main "
> │ >             || line |> SpiralSm.starts_with "let main "
> │ >         )
> │ > 
> │ >     if hasMain
> │ >     then rawCellCode, None
> │ >     else
> │ >         let lastTopLevelIndex, _ =
> │ >             (lines |> Array.indexed, (None, false))
> │ >             ||> Array.foldBack (fun (i, line) 
> (lastTopLevelIndex, finished) ->
> │ >                 // trace Verbose (fun () -> 
> $"Eval.prepareSpiral / i: {i} / 
> │ > line: '{line}' / lastTopLevelIndex: {lastTopLevelIndex} / 
> finished: {finished}")
> │ > _locals
> │ >                 match line with
> │ >                 | _ when finished -> lastTopLevelIndex, 
> true
> │ >                 | "" -> lastTopLevelIndex, false
> │ >                 | line when
> │ >                     line |> SpiralSm.starts_with " "
> │ >                     || line |> SpiralSm.starts_with "// " 
> -> lastTopLevelIndex, 
> │ > false
> │ >                 | line when
> │ >                     line |> SpiralSm.starts_with "open "
> │ >                     || line |> SpiralSm.starts_with 
> "prototype "
> │ >                     || line |> SpiralSm.starts_with 
> "instance "
> │ >                     || line |> SpiralSm.starts_with "type "
> │ >                     || line |> SpiralSm.starts_with "union 
> "
> │ >                     || line |> SpiralSm.starts_with 
> "nominal " -> 
> │ > lastTopLevelIndex, true
> │ >                 | line when
> │ >                     line |> SpiralSm.starts_with "inl "
> │ >                     || line |> SpiralSm.starts_with "and "
> │ >                     || line |> SpiralSm.starts_with "let " 
> ->
> │ >                     let m =
> │ >                         
> System.Text.RegularExpressions.Regex.Match (
> │ >                             line,
> │ >                             @"^(?:and +)?(inl|let) 
> +((?:[[{( 
> │ > ]]*)?[[~\(\w]]+[[\w\d']]*(?:|[[\w\d']]+[[ }]]*(?:&? 
> *[[\w\d']]*\))?| 
> │ > *[[~\w]][[\w\d']]*\)|, *[[~\w]][[\w\d']]*)) +[[:=]](?! 
> +function)"
> │ >                         )
> │ >                     trace Verbose (fun () -> 
> $"Eval.prepareSpi / m: '{m}' / 
> │ > m.Groups.Count: {m.Groups.Count}") _locals
> │ >                     if m.Groups.Count = 3
> │ >                     then Some i, false
> │ >                     else lastTopLevelIndex, true
> │ >                 | _ -> Some i, false
> │ >             )
> │ >         let code =
> │ >             match lastTopLevelIndex with
> │ >             | Some lastTopLevelIndex ->
> │ >                 lines
> │ >                 |> Array.mapi (fun i line ->
> │ >                     match i with
> │ >                     | i when i < lastTopLevelIndex -> line
> │ >                     | i when i = lastTopLevelIndex -> 
> $"\nlet main () =\n    
> │ > {line}"
> │ >                     | _ when line |> SpiralSm.trim = "" -> 
> ""
> │ >                     | _ -> $"    {line}"
> │ >                 )
> │ >                 |> SpiralSm.concat "\n"
> │ >             | None -> $"{rawCellCode}\n\ninl main () = 
> ()\n"
> │ >         code, lastTopLevelIndex
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## processSpiralOutput
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let processSpiralOutput
> │ >     (props : {|
> │ >         printCode: bool
> │ >         traceLevel: TraceLevel
> │ >         builderCommands: string array
> │ >         lastTopLevelIndex: int option
> │ >         backend: Supervisor.Backend
> │ >         cancellationToken: _
> │ >         spiralErrors: _
> │ >         code: string
> │ >         outputPath: string
> │ >         isReal: bool
> │ >     |})
> │ >     = async {
> │ >     let inline _trace (fn : unit -> string) =
> │ >         if props.traceLevel = Verbose
> │ >         then trace Info (fun () -> 
> $"Eval.processSpiralOutput / props: {props |>
> │ > FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400} / 
> {fn ()}") _locals
> │ >         else fn () |> System.Console.WriteLine
> │ > 
> │ >     if props.printCode && props.backend <> Supervisor.Cuda 
> && props.backend <> 
> │ > Supervisor.Gleam then
> │ >         let ext = props.outputPath |> 
> System.IO.Path.GetExtension
> │ >         _trace (fun () -> if props.builderCommands.Length >
> 0 then 
> │ > $"{ext}:\n{props.code}\n" else props.code)
> │ > 
> │ >     let workspaceRootExternal =
> │ >         let currentDir = 
> System.IO.Directory.GetCurrentDirectory () |> 
> │ > SpiralSm.to_lower
> │ >         let workspaceRoot = workspaceRoot |> 
> SpiralSm.to_lower
> │ >         if currentDir |> SpiralSm.starts_with workspaceRoot
> │ >         then None
> │ >         else Some workspaceRoot
> │ > 
> │ >     let! spiralBuilderResults =
> │ >         match props.builderCommands, 
> props.lastTopLevelIndex with
> │ >         | [[||]], _ | _, None -> [[||]] |> Async.init
> │ >         | builderCommands, _ ->
> │ >             builderCommands
> │ >             |> Array.map (fun builderCommand ->
> │ >                 let path =
> │ >                     workspaceRoot </> 
> │ > 
> $@"deps/spiral/workspace/target/release/spiral{SpiralPlatform.get_executable_suf
> │ > fix ()}"
> │ >                     |> System.IO.Path.GetFullPath
> │ >                 let commands =
> │ >                     if props.backend = Supervisor.Fsharp
> │ >                         && (
> │ >                             builderCommand |> 
> SpiralSm.starts_with "rust"
> │ >                             || builderCommand |> 
> SpiralSm.starts_with 
> │ > "typescript"
> │ >                             || builderCommand |> 
> SpiralSm.starts_with "python"
> │ >                         )
> │ >                     then [[| $"{path} fable --fs-path 
> \"{props.outputPath}\" 
> │ > --command \"{builderCommand}\"" |]]
> │ >                     elif props.backend = Supervisor.Cuda
> │ >                         && builderCommand |> 
> SpiralSm.starts_with "cuda"
> │ >                     then [[| $"{path} {builderCommand} 
> --py-path 
> │ > \"{props.outputPath}\"" |]]
> │ >                     elif props.backend = Supervisor.Gleam
> │ >                         && builderCommand |> 
> SpiralSm.starts_with "gleam"
> │ >                     then [[| $"{path} {builderCommand} 
> --gleam-path 
> │ > \"{props.outputPath}\"" |]]
> │ >                     else [[||]]
> │ >                 builderCommand, commands
> │ >             )
> │ >             |> Array.filter (fun (_, commands) -> 
> commands.Length > 0)
> │ >             |> Array.collect (fun (builderCommand, 
> commands) ->
> │ >                 commands
> │ >                 |> Array.map (fun command -> async {
> │ >                     let! exitCode, result =
> │ >                         SpiralRuntime.execution_options 
> (fun x ->
> │ >                             { x with
> │ >                                 l0 = command
> │ >                                 l1 = 
> props.cancellationToken
> │ >                                 l2 = [[|
> │ >                                     "AUTOMATION", 
> spiral_compiler.assemblyName =
> │ > "dotnet-repl" |> string
> │ >                                     "TRACE_LEVEL", $"%A{if 
> props.printCode then 
> │ > props.traceLevel else Info}"
> │ >                                 |]]
> │ >                                 l6 = workspaceRootExternal
> │ >                             }
> │ >                         )
> │ >                         |> 
> SpiralRuntime.execute_with_options_async
> │ >                     trace Debug
> │ >                         (fun () -> 
> $"Eval.processSpiralOutput / spiral cli")
> │ >                         (fun () -> $"exitCode: {exitCode} /
> builderCommand: 
> │ > {builderCommand} / command: {command} / result: {result |> 
> SpiralSm.ellipsis_end
> │ > 400} / {_locals ()}")
> │ >                     return
> │ >                         if exitCode = 0
> │ >                         then {| code = result; eval = 
> false; builderCommand = 
> │ > builderCommand |} |> Ok
> │ >                         else result |> Error
> │ >                 })
> │ >             )
> │ >             |> Async.Parallel
> │ > 
> │ >     let hasEval =
> │ >         props.backend = Supervisor.Fsharp
> │ >         && props.builderCommands |> Array.exists (fun x -> 
> x |> 
> │ > SpiralSm.starts_with "fsharp")
> │ > 
> │ >     let outputResult =
> │ >         if props.builderCommands.Length > 0 && not hasEval
> │ >         then None
> │ >         else
> │ >             let code =
> │ >                 if props.builderCommands.Length > 1
> │ >                 then
> │ >                     let header = "System.Console.WriteLine 
> \".fsx output:\"\n"
> │ >                     $"{header}{props.code}"
> │ >                 else props.code
> │ >             Some (Ok [[ {| code = code; eval = true; 
> builderCommand = "" |} ]])
> │ > 
> │ >     match outputResult, spiralBuilderResults with
> │ >     | Some outputResult, [[||]] ->
> │ >         return outputResult, [[||]]
> │ >     | None, [[||]] ->
> │ >         return Ok [[ {| code = "()"; eval = true; 
> builderCommand = "" |} ]], 
> │ > [[||]]
> │ >     | _, spiralBuilderResults ->
> │ >         try
> │ >             let spiralResults =
> │ >                 match outputResult with
> │ >                 | Some (Ok code) ->
> │ >                     spiralBuilderResults
> │ >                     |> Array.append (code |> List.map Ok |>
> List.toArray)
> │ >                 | _ -> spiralBuilderResults
> │ >             let codes =
> │ >                 spiralResults
> │ >                 |> Array.map (fun spiralBuilderResult' ->
> │ >                     let commandResult, errors =
> │ >                         match spiralBuilderResult' with
> │ >                         | Ok result when result.eval = 
> false ->
> │ >                             let result' =
> │ >                                 result.code
> │ >                                 |> 
> │ > FSharp.Json.Json.deserialize<Map<string,string>>
> │ >                             let result =
> │ >                                 match result' |> 
> Map.tryFind "command_result" 
> │ > with
> │ >                                 | Some result'' ->
> │ >                                     result''
> │ >                                     |> 
> │ > FSharp.Json.Json.deserialize<Map<string,string>>
> │ >                                     |> Map.add 
> "builderCommand" 
> │ > result.builderCommand
> │ >                                 | None -> Map.empty
> │ >                             result, [[||]]
> │ >                         | Ok result when result.eval = true
> ->
> │ >                             let result =
> │ >                                 [[
> │ >                                     "extension", "fsx"
> │ >                                     "code", result.code
> │ >                                     "output", ""
> │ >                                 ]]
> │ >                                 |> Map.ofList
> │ >                             result, [[||]]
> │ >                         | Error error ->
> │ >                             Map.empty,
> │ >                             [[|
> │ >                                 (
> │ >                                     TraceLevel.Critical, 
> │ > $"Eval.processSpiralOutput / evalResult error / errors[[0]]
> / outputPath: 
> │ > {props.outputPath} / builderCommands: 
> %A{props.builderCommands} / 
> │ > spiralBuilderResult': %A{spiralBuilderResult'} / error: 
> %A{error}", 0, ("", (0, 
> │ > 0), (0, 0))
> │ >                                 )
> │ >                             |]]
> │ >                         | _ ->
> │ >                             Map.empty, [[||]]
> │ > 
> │ >                     if errors |> Array.isEmpty |> not
> │ >                     then Error (Exception 
> $"Eval.processSpiralOutput / 
> │ > evalResult errors / Exception / commandResult: 
> %A{commandResult}"), errors
> │ >                     else
> │ >                         let extension = 
> commandResult.[["extension"]]
> │ >                         let code = commandResult.[["code"]]
> │ >                         let output = 
> commandResult.[["output"]]
> │ >                         let builderCommand =
> │ >                             commandResult
> │ >                             |> Map.tryFind "builderCommand"
> │ >                             |> Option.defaultValue ""
> │ > 
> │ >                         let backendInfo =
> │ >                             match props.backend, 
> builderCommand with
> │ >                             | Supervisor.Fsharp, 
> builderCommand
> │ >                                 when builderCommand |> 
> SpiralSm.contains " " -> 
> │ > $" ({builderCommand})"
> │ >                             | Supervisor.Fsharp, _ -> ""
> │ >                             | _ -> $" ({props.backend})"
> │ > 
> │ >                         let eval = output = "" && extension
> = "fsx"
> │ > 
> │ >                         if props.printCode && not eval
> │ >                         then _trace (fun () -> 
> │ > $""".{extension}{backendInfo}:{'\n'}{code}""")
> │ > 
> │ >                         trace Debug
> │ >                             (fun () -> 
> $"Eval.processSpiralOutput / result")
> │ >                             (fun () -> $"builderCommand: 
> {builderCommand} / 
> │ > extension: {extension} / commandResult: {commandResult |> 
> │ > FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400}/ 
> {_locals ()}")
> │ > 
> │ >                         let code =
> │ >                             if props.printCode
> │ >                                 || spiralResults.Length > 1
> │ >                                 || 
> props.builderCommands.Length > 1
> │ >                             then
> │ >                                 if eval
> │ >                                 then code
> │ >                                 else
> │ >                                     let header = 
> $".{extension} 
> │ > output{backendInfo}:\n"
> │ >                                     $"""{if output |> 
> SpiralSm.contains "\n" 
> │ > then "\n" else ""}{header}{output}"""
> │ >                             elif eval
> │ >                             then code
> │ >                             else output
> │ >                         Ok {| code = code; eval = eval; 
> builderCommand = 
> │ > builderCommand |}, [[||]]
> │ >                 )
> │ >             trace Debug
> │ >                 (fun () -> $"Eval.processSpiralOutput / 
> codes")
> │ >                 (fun () ->
> │ >                     let props = {| props with 
> cancellationToken = None |}
> │ >                     $"codes: {codes |> 
> FSharp.Json.Json.serialize |> 
> │ > SpiralSm.ellipsis_end 400} / spiralResults: {spiralResults 
> |> 
> │ > FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400} / 
> spiralBuilderResults:
> │ > {spiralBuilderResults |> FSharp.Json.Json.serialize |> 
> SpiralSm.ellipsis_end 
> │ > 400} / props: {props |> FSharp.Json.Json.serialize |> 
> SpiralSm.ellipsis_end 400}
> │ > / {_locals ()}")
> │ >             return
> │ >                 (((Ok [[]]), [[||]]), codes)
> │ >                 ||> Array.fold (fun (acc_code, acc_errors) 
> (code, errors) ->
> │ >                     match code, acc_code with
> │ >                     | Ok code, Ok acc_code ->
> │ >                         let errors =
> │ >                             acc_errors
> │ >                             |> Array.append errors
> │ >                             |> Array.append 
> props.spiralErrors
> │ >                         let errors =
> │ >                             if errors |> Array.isEmpty
> │ >                             then errors
> │ >                             else
> │ >                                 let code = $"%A{code}"
> │ >                                 errors
> │ >                                 |> Array.append [[|
> │ >                                     TraceLevel.Critical, 
> │ > $"Eval.processSpiralOutput / errors / errors[[-1]] / 
> outputPath: 
> │ > {props.outputPath} / builderCommands: 
> %A{props.builderCommands} / code: {code |>
> │ > SpiralSm.ellipsis_end 400}", 0, ("", (0, 0), (0, 0))
> │ >                                 |]]
> │ >                         Ok (code :: acc_code), errors
> │ >                     | Error ex, _
> │ >                     | _, Error ex ->
> │ >                         Error (Exception 
> $"Eval.processSpiralOutput / -1 / 
> │ > Exception / spiralBuilderResults: %A{spiralBuilderResults} 
> / ex: {ex |> 
> │ > SpiralSm.format_exception}"),
> │ >                         acc_errors |> Array.append errors
> │ >                 )
> │ >         with ex ->
> │ >             trace Critical (fun () -> 
> $"Eval.processSpiralOutput / try 2 ex / 
> │ > spiralBuilderResults: %A{spiralBuilderResults} / ex: {ex |>│ > SpiralSm.format_exception}") _locals
> │ >             return
> │ >                 Error (Exception $"Eval.processSpiralOutput
> / try 2 ex / 
> │ > Exception / spiralBuilderResults: %A{spiralBuilderResults} 
> / ex: {ex |> 
> │ > SpiralSm.format_exception}"),
> │ >                 [[|
> │ >                     (
> │ >                         TraceLevel.Critical, 
> $"Eval.processSpiralOutput / try 2 
> │ > ex / errors[[0]] / spiralBuilderResults: 
> %A{spiralBuilderResults} / ex: {ex |> 
> │ > SpiralSm.format_exception}", 0, ("", (0, 0), (0, 0))
> │ >                     )
> │ >                 |]]
> │ > }
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## tryGetPropertyValue
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let tryGetPropertyValue (propertyName: string) (obj: obj) =
> │ >     let objType = obj.GetType ()
> │ >     let propertyInfo = propertyName |> objType.GetProperty
> │ >     if propertyInfo <> null
> │ >     then propertyInfo.GetValue (obj, null) |> Some
> │ >     else None
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## evalAsync
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let rec evalAsync
> │ >     retry
> │ >     (props : {|
> │ >         rawCellCode: _
> │ >         lines: _
> │ >         isReal: _
> │ >         builderCommands: _ array
> │ >         isCache: _
> │ >         timeout: _
> │ >         cancellationToken: _
> │ >         printCode: _
> │ >         traceLevel: _
> │ >         fsi_eval: _
> │ >     |})
> │ >     = async {
> │ >     try
> │ >         let cellCode, lastTopLevelIndex = prepareSpiral 
> props.rawCellCode 
> │ > props.lines
> │ >         let newAllCode =
> │ >             if props.isReal
> │ >             then $"{allCodeReal}\n\n{cellCode}"
> │ >             else $"{allCode}\n\n{cellCode}"
> │ > 
> │ >         let buildBackends =
> │ >             if props.builderCommands.Length = 0
> │ >             then [[| Supervisor.Fsharp |]]
> │ >             else
> │ >                 props.builderCommands
> │ >                 |> Array.map (fun x ->
> │ >                     if x |> SpiralSm.starts_with "cuda"
> │ >                     then Supervisor.Cuda
> │ >                     elif x |> SpiralSm.starts_with "gleam"
> │ >                     then Supervisor.Gleam
> │ >                     else Supervisor.Fsharp
> │ >                 )
> │ >                 |> Array.distinct
> │ > 
> │ >         trace Verbose
> │ >             (fun () -> $"Eval.eval")
> │ >             (fun () -> $"lastTopLevelIndex: 
> {lastTopLevelIndex} / 
> │ > builderCommands: %A{props.builderCommands} / buildBackends:
> %A{buildBackends} / 
> │ > isReal: {props.isReal} / {_locals ()}")
> │ > 
> │ >         let! buildCodeResults =
> │ >             buildBackends
> │ >             |> Array.map (fun backend -> async {
> │ >                 let! result =
> │ >                     if props.isReal
> │ >                     then Supervisor.Spir newAllCode
> │ >                     else
> │ >                         Supervisor.Spi
> │ >                             (newAllCode, if allCodeReal = 
> "" then None else Some
> │ > allCodeReal)
> │ >                     |> Supervisor.buildCode backend 
> allPackages props.isCache 
> │ > props.timeout props.cancellationToken
> │ >                 return backend, result
> │ >             })
> │ >             |> Async.Parallel
> │ >             |> Async.catch
> │ >             |> Async.runWithTimeoutAsync props.timeout
> │ > 
> │ >         match buildCodeResults with
> │ >         | Some (Ok buildCodeResults) ->
> │ >             let! result, errors =
> │ >                 ((Ok [[]], [[||]]), buildCodeResults)
> │ >                 ||> Async.fold (fun acc buildCodeResult -> 
> async {
> │ >                     match buildCodeResult with
> │ >                     | backend, (_, (outputPath, Some code),
> spiralErrors) ->
> │ >                         let spiralErrors =
> │ >                             allCode |> mapErrors (Warning, 
> spiralErrors, 
> │ > lastTopLevelIndex)
> │ >                         let! result =
> │ >                             processSpiralOutput
> │ >                                 {|
> │ >                                     printCode = 
> props.printCode
> │ >                                     traceLevel = 
> props.traceLevel
> │ >                                     builderCommands = 
> props.builderCommands
> │ >                                     lastTopLevelIndex = 
> lastTopLevelIndex
> │ >                                     backend = backend
> │ >                                     cancellationToken = 
> props.cancellationToken
> │ >                                     spiralErrors = 
> spiralErrors
> │ >                                     code = code
> │ >                                     outputPath = outputPath
> │ >                                     isReal = props.isReal
> │ >                                 |}
> │ >                         match result, acc with
> │ >                         | (Ok code, errors), (Ok acc_code, 
> acc_errors) ->
> │ >                             return Ok (acc_code @ code), 
> acc_errors |> 
> │ > Array.append errors
> │ >                         | (Error ex, errors), _ | _, (Error
> ex, errors) ->
> │ >                             return
> │ >                                 Error (Exception 
> $"Eval.evalAsync / 
> │ > processSpiralOutput / Exception / buildCodeResult: 
> %A{buildCodeResult |> 
> │ > FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400} / 
> ex: {ex |> 
> │ > SpiralSm.format_exception}"),
> │ >                                 errors |> Array.append 
> errors
> │ >                     | _, (_, _, errors) when errors |> 
> List.isEmpty |> not ->
> │ >                         return errors.[[0]] |> fst |> 
> Exception |> Error,
> │ >                         allCode |> mapErrors 
> (TraceLevel.Critical, errors, 
> │ > lastTopLevelIndex)
> │ >                     | _ -> return acc
> │ >                 })
> │ >             let cancellationToken = defaultArg 
> props.cancellationToken 
> │ > System.Threading.CancellationToken.None
> │ >             match result, errors with
> │ >             | Ok code, [[||]] ->
> │ >                 let code, eval =
> │ >                     code
> │ >                     |> List.map (fun code ->
> │ >                         if code.eval
> │ >                         then None, Some code.code
> │ >                         else Some code.code, None
> │ >                     )
> │ >                     |> List.unzip
> │ >                 let code = code |> List.choose id
> │ >                 let eval = eval |> List.choose id
> │ > 
> │ >                 trace Debug
> │ >                     (fun () -> $"Eval.eval")
> │ >                     (fun () -> $"eval: {eval |> 
> FSharp.Json.Json.serialize |> 
> │ > SpiralSm.ellipsis_end 400} / code: {code |> 
> FSharp.Json.Json.serialize |> 
> │ > SpiralSm.ellipsis_end 400} / {_locals ()}")
> │ > 
> │ >                 let ch, errors =
> │ >                     match eval, code with
> │ >                     | [[]], [[]] ->
> │ >                         Choice2Of2 (Exception 
> $"Eval.evalAsync / eval=[[]] / 
> │ > code=[[]] / buildCodeResults: %A{buildCodeResults} / code: 
> %A{code}"), errors
> │ >                     | [[ eval ]], [[]] ->
> │ >                         let eval =
> │ >                             if eval |> SpiralSm.contains 
> "<script"
> │ >                             then $"{eval}, \"text/html1\""
> │ >                             else eval
> │ >                         let ch, errors2 = props.fsi_eval 
> eval cancellationToken
> │ >                         let errors =
> │ >                             errors2
> │ >                             // |> Array.map (fun (e1, e2, 
> e3, _) ->
> │ >                             //     (e1, e2, e3, ("", (0, 
> 0), (0, 0)))
> │ >                             // )
> │ >                             |> Array.append errors
> │ >                         ch, errors
> │ >                     | [[]], _ ->
> │ >                         let code = code |> List.rev |> 
> String.concat "\n\n"
> │ >                         let code =
> │ >                             if props.printCode
> │ >                             then $"\"\"\"{code}\n\n\"\"\""
> │ >                             else $"\"\"\"{code}\n\"\"\""
> │ >                         let code =
> │ >                             if code |> SpiralSm.contains 
> "<script"
> │ >                             then $"{code}, \"text/html2\""
> │ >                             else code
> │ >                         let ch, errors2 = props.fsi_eval 
> code cancellationToken
> │ >                         let errors =
> │ >                             errors2
> │ >                             // |> Array.map (fun (e1, e2, 
> e3, _) ->
> │ >                             //     (e1, e2, e3, ("", (0, 
> 0), (0, 0)))
> │ >                             // )
> │ >                             |> Array.append errors
> │ >                         ch, errors
> │ >                     | _ ->
> │ >                         let code, errors =
> │ >                             ((Ok (code |> List.rev), 
> [[||]]), eval)
> │ >                             ||> List.fold (fun (acc, 
> acc_errors) eval ->
> │ >                                 match acc with
> │ >                                 | Error ch -> Error ch, 
> acc_errors
> │ >                                 | Ok acc ->
> │ >                                     let eval =
> │ >                                         if eval |> 
> SpiralSm.contains "<script"
> │ >                                         then $"{eval}, 
> \"text/html3\""
> │ >                                         else eval
> │ >                                     let ch, errors = 
> props.fsi_eval eval 
> │ > cancellationToken
> │ >                                     let errors =
> │ >                                         errors
> │ >                                         // |> Array.map 
> (fun (e1, e2, e3, _) ->
> │ >                                         //     (e1, e2, e3,
> ("", (0, 0), (0, 
> │ > 0)))
> │ >                                         // )
> │ >                                         |> Array.append 
> acc_errors
> │ >                                     match ch with
> │ >                                     | Choice1Of2 v ->
> │ >                                         let v =
> │ >                                             v
> │ >                                             |> 
> tryGetPropertyValue 
> │ > "ReflectionValue"
> │ >                                             |> Option.map 
> (fun x -> $"%A{x}")
> │ >                                             |> 
> Option.defaultValue ""
> │ >                                         Ok (v :: acc), 
> errors
> │ >                                     | Choice2Of2 ex ->
> │ >                                         trace Critical (fun
> () -> 
> │ > $"Eval.evalAsync / fsi_eval fold Choice error / 
> buildCodeResults: 
> │ > %A{buildCodeResults} / ex: {ex |> 
> SpiralSm.format_exception}") _locals
> │ >                                         Error ch, errors
> │ >                             )
> │ >                         match code with
> │ >                         | Error ch -> ch, errors
> │ >                         | Ok code ->
> │ >                             let code =
> │ >                                 code
> │ >                                 |> List.filter ((<>) "")
> │ >                                 |> String.concat "\n\n"
> │ > 
> │ >                             let code =
> │ >                                 if 
> props.builderCommands.Length > 0 && 
> │ > eval.Length = 0
> │ >                                 then code
> │ >                                 elif code |> 
> SpiralSm.contains "\n\n\n"
> │ >                                 then $"{code}\n\n"
> │ >                                 else $"{code}\n"
> │ > 
> │ >                             let code =
> │ >                                 if props.printCode
> │ >                                 then 
> $"\"\"\"{code}\n\n\n\"\"\""
> │ >                                 else 
> $"\"\"\"{code}\n\"\"\""
> │ >                             let code =
> │ >                                 if code |> 
> SpiralSm.contains "<script"
> │ >                                 then $"{code}, 
> \"text/html4\""
> │ >                                 else code
> │ >                             let ch, errors2 = 
> props.fsi_eval code 
> │ > cancellationToken
> │ >                             let errors =
> │ >                                 errors2
> │ >                                 // |> Array.map (fun (e1, 
> e2, e3, _) ->
> │ >                                 //     (e1, e2, e3, ("", 
> (0, 0), (0, 0)))
> │ >                                 // )
> │ >                                 |> Array.append errors
> │ >                             ch, errors
> │ >                 match ch with
> │ >                 | Choice1Of2 v ->
> │ >                     if props.isReal
> │ >                     then allCodeReal <- newAllCode
> │ >                     else allCode <- newAllCode
> │ >                     return Ok(v), errors
> │ >                 | Choice2Of2 ex ->
> │ >                     return
> │ >                         Error (Exception $"Eval.evalAsync /
> -2 / Exception / ex:
> │ > {ex |> SpiralSm.format_exception} / buildCodeResults: 
> {buildCodeResults |> 
> │ > FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400}"),
> │ >                         errors
> │ >             | Ok code, errors ->
> │ >                 return
> │ >                     Error (Exception "Eval.evalAsync / 
> errors / 
> │ > buildCodeResults: %A{buildCodeResults} / code: %A{code}"),
> │ >                     errors
> │ >             | Error ex, errors ->
> │ >                 let ex = ex |> SpiralSm.format_exception
> │ >                 if retry <= 3 &&
> │ >                     (ex |> SpiralSm.contains "Expected one 
> of: inl, let, union, 
> │ > nominal, prototype, type, instance, and, open")
> │ >                     || (ex |> SpiralSm.contains "Unexpected
> end of block past 
> │ > this token.")
> │ >                 then return! evalAsync (retry + 1) props
> │ >                 else
> │ >                     return
> │ >                         Error (Exception $"Eval.evalAsync /
> -1 / Exception / ex:
> │ > {ex} / buildCodeResults: {buildCodeResults |> 
> FSharp.Json.Json.serialize |> 
> │ > SpiralSm.ellipsis_end 1500}"),
> │ >                         errors
> │ >         | Some (Error ex) ->
> │ >             trace Critical (fun () -> $"Eval.evalAsync / 
> buildCodeResults Error 
> │ > / buildCodeResults: %A{buildCodeResults} / ex: {ex |> 
> │ > SpiralSm.format_exception}") _locals
> │ >             return
> │ >                 Error (Exception $"Eval.evalAsync / 
> buildCodeResults Error / 
> │ > Exception / buildCodeResults: %A{buildCodeResults} / ex: 
> {ex |> 
> │ > SpiralSm.format_exception}"),
> │ >                 [[|
> │ >                     (
> │ >                         TraceLevel.Critical, 
> $"Eval.evalAsync / buildCodeResults
> │ > Error / errors[[0]] / ex: {ex |> SpiralSm.format_exception}
> / buildCodeResults: 
> │ > %A{buildCodeResults}", 0, ("", (0, 0), (0, 0))
> │ >                     )
> │ >                 |]]
> │ >         | _ ->
> │ >             return
> │ >                 Error (Exception $"Eval.evalAsync / 
> buildCodeResults / Exception
> │ > / buildCodeResults: %A{buildCodeResults}"),
> │ >                 [[|
> │ >                     (
> │ >                         TraceLevel.Critical, 
> $"Eval.evalAsync / buildCodeResults
> │ > / errors[[0]] / buildCodeResults: %A{buildCodeResults}", 0,
> ("", (0, 0), (0, 0))
> │ >                     )
> │ >                 |]]
> │ >     with ex ->
> │ >         trace Critical (fun () -> $"Eval.evalAsync / try 1 
> ex / ex: {ex |> 
> │ > SpiralSm.format_exception} / lines: %A{props.lines}") 
> _locals
> │ >         return
> │ >             Error (Exception $"Eval.evalAsync / try 1 ex / 
> Exception / ex: {ex 
> │ > |> SpiralSm.format_exception} / lines: %A{props.lines}"),
> │ >             [[|
> │ >                 (
> │ >                     TraceLevel.Critical, $"Eval.evalAsync /
> try 1 ex / 
> │ > errors[[0]] / ex: {ex |> SpiralSm.format_exception} / 
> lines: %A{props.lines}", 
> │ > 0, ("", (0, 0), (0, 0))
> │ >                 )
> │ >             |]]
> │ > }
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## eval
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let inline eval
> │ >     (fsi_eval:
> │ >         string
> │ >         -> System.Threading.CancellationToken
> │ >         -> Choice<'a, Exception> * (TraceLevel * string * 
> int * (string * (int *
> │ > int) * (int * int))) array)
> │ >     (cancellationToken: 
> Option<System.Threading.CancellationToken>)
> │ >     (code: string)
> │ >     =
> │ >     trace Verbose
> │ >         (fun () -> $"Eval.eval")
> │ >         (fun () -> $"code: {code |> SpiralSm.ellipsis_end 
> 400} / {_locals ()}")
> │ > 
> │ >     let rawCellCode =
> │ >         code |> SpiralSm.replace "\r\n" "\n"
> │ > 
> │ >     let lines = rawCellCode |> SpiralSm.split "\n"
> │ > 
> │ >     if lines |> Array.exists (fun line -> line |> 
> SpiralSm.starts_with "#r " && 
> │ > line |> SpiralSm.ends_with "\"") then
> │ >         let cancellationToken = defaultArg 
> cancellationToken 
> │ > System.Threading.CancellationToken.None
> │ >         let code =
> │ >             if code |> SpiralSm.contains "<script"
> │ >             then $"{code}, \"text/html5\""
> │ >             else code
> │ >         let ch, errors = fsi_eval code cancellationToken
> │ >         trace Verbose (fun () -> $"Eval.eval / fsi_eval 1 /
> ch: %A{ch} / errors:
> │ > %A{errors}") _locals
> │ >         match ch with
> │ >         | Choice1Of2 v -> Ok(v), errors
> │ >         | Choice2Of2 ex -> Error(ex), errors
> │ >     else
> │ >         let builderCommands =
> │ >             lines
> │ >             |> Array.choose (fun line ->
> │ >                 if line |> SpiralSm.starts_with "///! "
> │ >                 then line |> SpiralSm.split "///! " |> 
> Array.tryItem 1
> │ >                 else None
> │ >             )
> │ > 
> │ >         let packages =
> │ >             lines
> │ >             |> Array.choose (fun line ->
> │ >                 if line |> SpiralSm.starts_with "//// 
> package="
> │ >                 then line |> SpiralSm.split "=" |> 
> Array.skip 1 |> 
> │ > SpiralSm.concat "" |> Some
> │ >                 else None
> │ >             )
> │ > 
> │ >         allPackages <- packages |> Array.append allPackages
> |> Array.distinct
> │ > 
> │ >         let timeout =
> │ >             lines
> │ >             |> Array.tryPick (fun line ->
> │ >                 if line |> SpiralSm.starts_with "//// 
> timeout="
> │ >                 then line |> SpiralSm.split "=" |> 
> Array.tryItem 1 |> Option.map
> │ > int
> │ >                 else None
> │ >             )
> │ >             |> Option.defaultValue (60003 * 60 * 24)
> │ > 
> │ >         let boolArg def command =
> │ >             lines
> │ >             |> Array.tryPick (fun line ->
> │ >                 let text = $"//// {command}"
> │ >                 match line.[[0..text.Length-1]], 
> line.[[text.Length..]] with
> │ >                 | head, "" when head = text ->
> │ >                     Some true
> │ >                 | head, _ when head = text ->
> │ >                     line |> SpiralSm.split "=" |> 
> Array.tryItem 1 |> Option.map 
> │ > ((<>) "false")
> │ >                 | _ -> None
> │ >             )
> │ >             |> Option.defaultValue def
> │ > 
> │ >         let printCode = "print_code" |> boolArg false
> │ >         let isTraceToggle = "trace_toggle" |> boolArg false
> │ >         let isTrace = "trace" |> boolArg false
> │ >         let isCache = "cache" |> boolArg false
> │ >         let isReal = "real" |> boolArg false
> │ >         let timeout_continue = "timeout_continue" |> 
> boolArg false
> │ > 
> │ >         if isTraceToggle
> │ >         then traceToggle <- not traceToggle
> │ > 
> │ >         let oldLevel = get_trace_level ()
> │ >         let traceLevel =
> │ >             if isTrace || traceToggle
> │ >             then Verbose
> │ >             else Info
> │ >         traceLevel
> │ >         |> to_trace_level
> │ >         |> set_trace_level
> │ >         use _ = (new_disposable (fun () ->
> │ >             oldLevel |> set_trace_level
> │ >         ))
> │ > 
> │ >         evalAsync 1
> │ >             {|
> │ >                 rawCellCode = rawCellCode
> │ >                 lines = lines
> │ >                 isReal = isReal
> │ >                 builderCommands = builderCommands
> │ >                 isCache = isCache
> │ >                 timeout = timeout
> │ >                 cancellationToken = cancellationToken
> │ >                 printCode = printCode
> │ >                 traceLevel = traceLevel
> │ >                 fsi_eval = fsi_eval
> │ >             |}
> │ >         |> Async.runWithTimeout timeout
> │ >         |> (fun x ->
> │ >             match x with
> │ >             | Some ((Ok x), a) -> Some ((Ok x), a)
> │ >             | Some ((Error x), a) ->
> │ >                 trace Info (fun () -> $"Eval.eval / error /
> exception: 
> │ > {x.GetType().FullName} / a: %A{a} / x: %A{x}") (fun () -> 
> "")
> │ >                 Some ((Error x), a)
> │ >             | _ -> None
> │ >         )
> │ >         |> Option.defaultWith (fun () -> (
> │ >             let lines = lines |> SpiralSm.concat (string 
> '\n') |> 
> │ > SpiralSm.ellipsis_end 1500
> │ >             in
> │ >             Error (Exception $"Eval.eval / 
> Async.runWithTimeout / Exception / 
> │ > timeout: {timeout} / timeout_continue: {timeout_continue} /
> lines: {lines}"),
> │ >             [[|
> │ >                 (
> │ >                     TraceLevel.Critical, $"Eval.eval / 
> Async.runWithTimeout / 
> │ > errors[[0]] / timeout: {timeout} / lines: {lines}", 0, ("",
> (0, 0), (0, 0))
> │ >                 )
> │ >             |]]
> │ >         ))
> │ 00:02:33 v #3 runtime.execute_with_options / result / {
> exit_code = 0; std_trace_length = 56111 }
> │ 00:02:33 d #4 runtime.execute_with_options / { 
> file_name = jupyter; arguments = ["nbconvert", 
> "c:/home/git/polyglot/apps/spiral/Eval.dib.ipynb", "--to", "html", 
> "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert 
> "c:/home/git/polyglot/apps/spiral/Eval.dib.ipynb" --to html 
> --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = 
> Array(MutCell([])); on_line = None; stdin = None; trace = true; 
> working_directory = None } }
> │ 00:02:35 v #5 ! [NbConvertApp] Converting notebook 
> c:/home/git/polyglot/apps/spiral/Eval.dib.ipynb to html
> │ 00:02:35 v #6 ! 
> C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.
> py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a 
> hard error in future nbformat versions. You may want to use `normalize()` on 
> your notebooks before validations (available since nbformat 5.1.4). Previous 
> versions of nbformat are fixing this issue transparently, and will stop doing so
> in the future.
> │ 00:02:35 v #7 !   validate(nb)
> │ 00:02:35 v #8 ! 
> C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\
> highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python
> 3
> │ 00:02:35 v #9 !   return _pygments_highlight(
> │ 00:02:36 v #10 ! [NbConvertApp] Writing 463701 bytes to
> c:\home\git\polyglot\apps\spiral\Eval.dib.html
> │ 00:02:37 v #11 runtime.execute_with_options / result / 
> { exit_code = 0; std_trace_length = 852 }
> │ 00:02:37 d #12 spiral.run / dib / jupyter nbconvert / {
> exit_code = 0; jupyter_result_length = 852 }
> │ 00:02:37 d #13 runtime.execute_with_options / { 
> file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 
> 'c:/home/git/polyglot/apps/spiral/Eval.dib.html'; (Get-Content $path -Raw) 
> -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } 
> | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 
> 'c:/home/git/polyglot/apps/spiral/Eval.dib.html'; (Get-Content $path -Raw) 
> -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | 
> Set-Content $path"; cancellation_token = None; environment_variables = 
> Array(MutCell([])); on_line = None; stdin = None; trace = true; 
> working_directory = None } }
> │ 00:02:37 v #14 runtime.execute_with_options / result / 
> { exit_code = 0; std_trace_length = 0 }
> │ 00:02:37 d #15 spiral.run / dib / html cell ids / { 
> exit_code = 0; pwsh_replace_html_result_length = 0 }
> │ 00:02:37 d #16 spiral.run / dib / { exit_code = 0; 
> result_length = 57022 }
> │ 00:00:00 d #1 writeDibCode / output: Fs / path: Eval.dib
> │ 00:00:00 d #2 parseDibCode / output: Fs / file: Eval.dib
> │ polyglot/apps/spiral/build.ps1 / $env:CI:''
> │ 
> 
> ── pwsh ────────────────────────────────────────────────────────────────────────
> { pwsh ../lib/fsharp/build.ps1 -sequential 1 } | Invoke-Block
> 
> ── [ 2.59m - stdout ] ──────────────────────────────────────────────────────────
> │ 00:00:00 d #1 runtime.execute_with_options_async / { 
> file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = 
> US5_0 "dib --path Async.dib --retries 3"; options = { command = 
> ../../deps/spiral/workspace/target/release/spiral.exe dib --path Async.dib 
> --retries 3; cancellation_token = Some System.Threading.CancellationToken; 
> environment_variables = [||]; on_line = None; stdin = None; trace = true; 
> working_directory = None } }
> │ 00:00:23 d #2 runtime.execute_with_options_async / { 
> exit_code = 0; output_length = 19529; options = { command = 
> ../../deps/spiral/workspace/target/release/spiral.exe dib --path Async.dib 
> --retries 3; cancellation_token = Some System.Threading.CancellationToken; 
> environment_variables = [||]; on_line = None; stdin = None; trace = true; 
> working_directory = None } }
> │ 00:00:23 d #1 main / executeCommand / exitCode: 0 / 
> command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path 
> Async.dib --retries 3
> │ 00:00:23 d #3 runtime.execute_with_options_async / { 
> file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = 
> US5_0 "dib --path AsyncSeq.dib --retries 3"; options = { command = 
> ../../deps/spiral/workspace/target/release/spiral.exe dib --path AsyncSeq.dib 
> --retries 3; cancellation_token = Some System.Threading.CancellationToken; 
> environment_variables = [||]; on_line = None; stdin = None; trace = true; 
> working_directory = None } }
> │ 00:00:46 d #4 runtime.execute_with_options_async / { 
> exit_code = 0; output_length = 11796; options = { command = 
> ../../deps/spiral/workspace/target/release/spiral.exe dib --path AsyncSeq.dib 
> --retries 3; cancellation_token = Some System.Threading.CancellationToken; 
> environment_variables = [||]; on_line = None; stdin = None; trace = true; 
> working_directory = None } }
> │ 00:00:46 d #2 main / executeCommand / exitCode: 0 / 
> command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path 
> AsyncSeq.dib --retries 3
> │ 00:00:46 d #5 runtime.execute_with_options_async / { 
> file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = 
> US5_0 "dib --path Common.dib --retries 3"; options = { command = 
> ../../deps/spiral/workspace/target/release/spiral.exe dib --path Common.dib 
> --retries 3; cancellation_token = Some System.Threading.CancellationToken; 
> environment_variables = [||]; on_line = None; stdin = None; trace = true; 
> working_directory = None } }
> │ 00:01:07 d #6 runtime.execute_with_options_async / { 
> exit_code = 0; output_length = 5506; options = { command = 
> ../../deps/spiral/workspace/target/release/spiral.exe dib --path Common.dib 
> --retries 3; cancellation_token = Some System.Threading.CancellationToken; 
> environment_variables = [||]; on_line = None; stdin = None; trace = true; 
> working_directory = None } }
> │ 00:01:07 d #3 main / executeCommand / exitCode: 0 / 
> command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path 
> Common.dib --retries 3
> │ 00:01:07 d #7 runtime.execute_with_options_async / { 
> file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = 
> US5_0 "dib --path CommonFSharp.dib --retries 3"; options = { command = 
> ../../deps/spiral/workspace/target/release/spiral.exe dib --path 
> CommonFSharp.dib --retries 3; cancellation_token = Some 
> System.Threading.CancellationToken; environment_variables = [||]; on_line = 
> None; stdin = None; trace = true; working_directory = None } }
> │ 00:01:27 d #8 runtime.execute_with_options_async / { 
> exit_code = 0; output_length = 4477; options = { command = 
> ../../deps/spiral/workspace/target/release/spiral.exe dib --path 
> CommonFSharp.dib --retries 3; cancellation_token = Some 
> System.Threading.CancellationToken; environment_variables = [||]; on_line = 
> None; stdin = None; trace = true; working_directory = None } }
> │ 00:01:27 d #4 main / executeCommand / exitCode: 0 / 
> command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path 
> CommonFSharp.dib --retries 3
> │ 00:01:27 d #9 runtime.execute_with_options_async / { 
> file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = 
> US5_0 "dib --path FileSystem.dib --retries 3"; options = { command = 
> ../../deps/spiral/workspace/target/release/spiral.exe dib --path FileSystem.dib 
> --retries 3; cancellation_token = Some System.Threading.CancellationToken; 
> environment_variables = [||]; on_line = None; stdin = None; trace = true; 
> working_directory = None } }
> │ 00:02:11 d #10 runtime.execute_with_options_async / { 
> exit_code = 0; output_length = 40425; options = { command = 
> ../../deps/spiral/workspace/target/release/spiral.exe dib --path FileSystem.dib 
> --retries 3; cancellation_token = Some System.Threading.CancellationToken; 
> environment_variables = [||]; on_line = None; stdin = None; trace = true; 
> working_directory = None } }
> │ 00:02:11 d #5 main / executeCommand / exitCode: 0 / 
> command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path 
> FileSystem.dib --retries 3
> │ 00:02:11 d #11 runtime.execute_with_options_async / { 
> file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = 
> US5_0 "dib --path Runtime.dib --retries 3"; options = { command = 
> ../../deps/spiral/workspace/target/release/spiral.exe dib --path Runtime.dib 
> --retries 3; cancellation_token = Some System.Threading.CancellationToken; 
> environment_variables = [||]; on_line = None; stdin = None; trace = true; 
> working_directory = None } }
> │ 00:02:34 d #12 runtime.execute_with_options_async / { 
> exit_code = 0; output_length = 9236; options = { command = 
> ../../deps/spiral/workspace/target/release/spiral.exe dib --path Runtime.dib 
> --retries 3; cancellation_token = Some System.Threading.CancellationToken; 
> environment_variables = [||]; on_line = None; stdin = None; trace = true; 
> working_directory = None } }
> │ 00:02:34 d #6 main / executeCommand / exitCode: 0 / 
> command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path 
> Runtime.dib --retries 3
> │ 00:00:00 d #1 writeDibCode / output: Fs / path: 
> Async.dib
> │ 00:00:00 d #1 writeDibCode / output: Fs / path: 
> FileSystem.dib
> │ 00:00:00 d #1 writeDibCode / output: Fs / path: 
> CommonFSharp.dib
> │ 00:00:00 d #1 writeDibCode / output: Fs / path: 
> AsyncSeq.dib
> │ 00:00:00 d #1 writeDibCode / output: Fs / path: 
> Common.dib
> │ 00:00:00 d #1 writeDibCode / output: Fs / path: 
> Runtime.dib
> │ 00:00:00 d #2 parseDibCode / output: Fs / file: 
> Runtime.dib
> │ 00:00:00 d #2 parseDibCode / output: Fs / file: 
> CommonFSharp.dib
> │ 00:00:00 d #4 parseDibCode / output: Fs / file: 
> Async.dib
> │ 00:00:00 d #5 parseDibCode / output: Fs / file: 
> FileSystem.dib
> │ 00:00:00 d #6 parseDibCode / output: Fs / file: 
> Common.dib
> │ 00:00:00 d #6 parseDibCode / output: Fs / file: 
> AsyncSeq.dib
> │ 
> 
> ── pwsh ────────────────────────────────────────────────────────────────────────
> { pwsh ../deps/spiral/apps/wasm/build.ps1 -SkipFsx 1 } | Invoke-Block
> 
> ── [ 2.65m - stdout ] ──────────────────────────────────────────────────────────
> │ 00:00:00 d #1 persistCodeProject / packages: 
> [Fable.Core] / modules: [deps/spiral/lib/spiral/common.fsx; 
> deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: 
> spiral_wasm / hash:  / code.Length: 241712
> │ spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: 
> C:\home\git\polyglot\target\Builder\spiral_wasm
> │ polyglot/scripts/core.ps1/ResolveLink #4 / Path: 
> C:\home\git\polyglot\deps\spiral\deps\polyglot\deps\spiral\lib\spiral/../../deps
> /polyglot / parent_target:  / path_target: C:\home\git\polyglot / parent: 
> C:\home\git\polyglot\deps\spiral\deps\polyglot\deps\spiral\lib\spiral\..\..\deps
> / End: polyglot
> │ spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: 
> C:\home\git\polyglot\target\Builder\spiral_wasm / ProjectName: spiral_wasm / 
> Language: rs / Runtime:  / root: C:\home\git\polyglot
> │ Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha)
> │ 
> │ Thanks to the contributor! @voronoipotato
> │ Stand with Ukraine! https://standwithukraine.com.ua/
> │ 
> │ Parsing target\Builder\spiral_wasm\spiral_wasm.fsproj...
> │ Retrieving project options from cache, in case of issues run 
> `dotnet fable clean` or try `--noCache` option.
> │ Project and references (14 source files) parsed in 165ms
> │ 
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this 
> assembly. Original error: The exception has been reported. This internal 
> exception should now be caught at an error recovery point on the stack. Original
> message: The type 'MetadataUpdateHandlerAttribute' is required here and is 
> unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping 
> this assembly. Original error: The exception has been reported. This internal 
> exception should now be caught at an error recovery point on the stack. Original
> message: The type 'MetadataUpdateHandlerAttribute' is required here and is 
> unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable 
> plugins, skipping this assembly. Original error: The exception has been 
> reported. This internal exception should now be caught at an error recovery 
> point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' 
> is required here and is unavailable. You must add a reference to assembly 
> 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, 
> PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, 
> skipping this assembly. Original error: The exception has been reported. This 
> internal exception should now be caught at an error recovery point on the stack.
> Original message: The type 'MetadataUpdateHandlerAttribute' is required here and
> is unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this 
> assembly. Original error: The exception has been reported. This internal 
> exception should now be caught at an error recovery point on the stack. Original
> message: The type 'MetadataUpdateHandlerAttribute' is required here and is 
> unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping 
> this assembly. Original error: The exception has been reported. This internal 
> exception should now be caught at an error recovery point on the stack. Original
> message: The type 'MetadataUpdateHandlerAttribute' is required here and is 
> unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, 
> skipping this assembly. Original error: The exception has been reported. This 
> internal exception should now be caught at an error recovery point on the stack.
> Original message: The type 'MetadataUpdateHandlerAttribute' is required here and
> is unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, 
> skipping this assembly. Original error: The exception has been reported. This 
> internal exception should now be caught at an error recovery point on the stack.
> Original message: The type 'MetadataUpdateHandlerAttribute' is required here and
> is unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable 
> plugins, skipping this assembly. Original error: The exception has been 
> reported. This internal exception should now be caught at an error recovery 
> point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' 
> is required here and is unavailable. You must add a reference to assembly 
> 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, 
> PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping
> this assembly. Original error: The exception has been reported. This internal 
> exception should now be caught at an error recovery point on the stack. Original
> message: The type 'MetadataUpdateHandlerAttribute' is required here and is 
> unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ 
> │ Started Fable compilation...
> │ 
> │ Fable compilation finished in 11559ms
> │ 
> │ .\deps\spiral\lib\spiral\common.fsx(2193,0): (2193,2) warning
> FABLE: For Rust, support for F# static and module do bindings is disabled by 
> default. It can be enabled with the 'static_do_bindings' feature. Use at your 
> own risk!
> │ .\deps\spiral\lib\spiral\sm.fsx(560,0): (560,2) warning 
> FABLE: For Rust, support for F# static and module do bindings is disabled by 
> default. It can be enabled with the 'static_do_bindings' feature. Use at your 
> own risk!
> │ .\deps\spiral\lib\spiral\async_.fsx(250,0): (250,2) warning 
> FABLE: For Rust, support for F# static and module do bindings is disabled by 
> default. It can be enabled with the 'static_do_bindings' feature. Use at your 
> own risk!
> │ .\deps\spiral\lib\spiral\crypto.fsx(2420,0): (2420,2) warning
> FABLE: For Rust, support for F# static and module do bindings is disabled by 
> default. It can be enabled with the 'static_do_bindings' feature. Use at your 
> own risk!
> │ .\deps\spiral\lib\spiral\threading.fsx(139,0): (139,2) 
> warning FABLE: For Rust, support for F# static and module do bindings is 
> disabled by default. It can be enabled with the 'static_do_bindings' feature. 
> Use at your own risk!
> │ .\deps\spiral\lib\spiral\date_time.fsx(2546,0): (2546,2) 
> warning FABLE: For Rust, support for F# static and module do bindings is 
> disabled by default. It can be enabled with the 'static_do_bindings' feature. 
> Use at your own risk!
> │ .\deps\spiral\lib\spiral\platform.fsx(121,0): (121,2) warning
> FABLE: For Rust, support for F# static and module do bindings is disabled by 
> default. It can be enabled with the 'static_do_bindings' feature. Use at your 
> own risk!
> │ .\deps\spiral\lib\spiral\networking.fsx(5011,0): (5011,2) 
> warning FABLE: For Rust, support for F# static and module do bindings is 
> disabled by default. It can be enabled with the 'static_do_bindings' feature. 
> Use at your own risk!
> │ .\deps\spiral\lib\spiral\trace.fsx(2226,0): (2226,2) warning 
> FABLE: For Rust, support for F# static and module do bindings is disabled by 
> default. It can be enabled with the 'static_do_bindings' feature. Use at your 
> own risk!
> │ .\deps\spiral\lib\spiral\runtime.fsx(7234,0): (7234,2) 
> warning FABLE: For Rust, support for F# static and module do bindings is 
> disabled by default. It can be enabled with the 'static_do_bindings' feature. 
> Use at your own risk!
> │ .\deps\spiral\lib\spiral\file_system.fsx(18760,0): (18760,2) 
> warning FABLE: For Rust, support for F# static and module do bindings is 
> disabled by default. It can be enabled with the 'static_do_bindings' feature. 
> Use at your own risk!
> │ spiral/apps/wasm/build.ps1 / path: 
> C:\home\git\polyglot\target\Builder\spiral_wasm/target/rs/spiral_wasm.rs
> │ spiral/apps/wasm/build.ps1 / $targetDir = 
> C:\home\git\polyglot\target\Builder\spiral_wasm / $projectName: spiral_wasm / 
> $env:CI:''
> │    Compiling fable_library_rust v0.1.0 
> (/mnt/c/home/git/spiral/deps/polyglot/lib/rust/fable/fable_modules/fable-library
> -rust)
> │    Compiling spiral_wasm v0.0.1 
> (/mnt/c/home/git/spiral/apps/wasm)
> │     Finished `release` profile [optimized] target(s) in 
> 2m 15s
> │ 
> 
> ── pwsh ────────────────────────────────────────────────────────────────────────
> { pwsh ../lib/math/build.ps1 } | Invoke-Block
> 
> ── [ 2.63m - stdout ] ──────────────────────────────────────────────────────────
> │ 00:00:00 d #1 spiral.main / { args = 
> Array(MutCell(["dib", "--path", "math.dib", "--retries", "1"])) }
> │ 00:00:00 d #2 runtime.execute_with_options / { 
> file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", 
> "c:/home/git/polyglot/lib/math/math.dib", "--output-path", 
> "c:/home/git/polyglot/lib/math/math.dib.ipynb"]; options = { command = dotnet 
> repl --exit-after-run --run "c:/home/git/polyglot/lib/math/math.dib" 
> --output-path "c:/home/git/polyglot/lib/math/math.dib.ipynb"; cancellation_token
> = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), 
> ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; 
> working_directory = None } }
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ # math
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > open testing
> │ > open rust.rust_operators
> │ > open rust
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## complex
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > nominal complex t =
> │ >     `(
> │ >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 
> │ > 
> Fable.Core.Emit(\"num_complex::Complex<$0>\")>]]\n#endif\ntype 
> │ > num_complex_Complex<'T> = class end"
> │ >         $'' : $'num_complex_Complex<`t>'
> │ >     )
> │ > 
> │ > inl complex forall t. ((re : t), (im : t)) : complex t =
> │ >     !\\((re, im), $'"num_complex::Complex::new($0, $1)"')
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > ///! rust -d num-complex
> │ > 
> │ > complex (0f64, 0f64)
> │ > |> sm'.format'
> │ > |> sm'.from_std_string
> │ > |> _assert_eq "0+0i"
> │ > 
> │ > ── [ 8.74s - return value ] 
> ────────────────────────────────────────────────────
> │ > │ __assert_eq / actual: "0+0i" / expected:
> "0+0i"
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## re
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl re forall t. (c : complex t) : t =
> │ >     !\\(c, $'"$0.re"')
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## im
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl im forall t. (c : complex t) : t =
> │ >     !\\(c, $'"$0.im"')
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## complex_unbox
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl complex_unbox forall t. (c : complex t) =
> │ >     re c, im c
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## (~.^)
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl (~.^) c = complex c
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## complex_eq
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl complex_eq forall t. (a : complex t) (b : complex t) : 
> bool =
> │ >     !\\((a, b), $'"$0 == $1"')
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## (.=)
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl (.=) a b = complex_eq a b
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## equable complex
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > instance equable complex t = complex_eq
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## complex_add
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl complex_add forall t. (a : complex t) (b : complex t) :
> complex t =
> │ >     !\\((a, b), $'"$0 + $1"')
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## (.+)
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl (.+) a b = complex_add a b
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## complex_sub
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl complex_sub forall t. (a : complex t) (b : complex t) :
> complex t =
> │ >     !\\((a, b), $'"$0 - $1"')
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## (.-)
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl (.-) a b = complex_sub a b
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## complex_mult
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl complex_mult forall t. (a : complex t) (b : complex t) 
> : complex t =
> │ >     !\\((a, b), $'"$0 * $1"')
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## (.*)
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl (.*) a b = complex_mult a b
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## complex_div
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl complex_div forall t. (a : complex t) (b : complex t) :
> complex t =
> │ >     !\\((a, b), $'"$0 / $1"')
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## (./)
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl (./) a b = complex_div a b
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## powc
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl powc forall t. (s : complex t) (c : complex t) : 
> complex t =
> │ >     !\\((c, s), $'"num_complex::Complex::powc($0, $1)"')
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## (.**)
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl (.**) a b = powc b a
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## complex_sin
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl complex_sin forall t. (c : complex t) : complex t =
> │ >     !\\(c, $'"$0.sin()"')
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## conj
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl conj forall t. (c : complex t) : complex t =
> │ >     !\\(c, $'"$0.conj()"')
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## zeta
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl zeta log (gamma : complex f64 -> complex f64) (s : 
> complex f64) : complex 
> │ > f64 =
> │ >     inl rec zeta count gamma s =
> │ >         if log then
> │ >             !\\((count, s), $'"println\!(\\\"zeta / count: 
> {:?} / s: {:?}\\\", 
> │ > $0, $1)"')
> │ >         if re s > 1 then
> │ >             (.^(0, 0), (am.init 10000i32 id : a i32 _))
> │ >             ||> am.fold fun acc n =>
> │ >                 acc .+ (.^(1, 0) ./ (.^(f64 n, 0) .** s))
> │ >         else
> │ >             inl gamma_term = gamma (.^(1, 0) .- s)
> │ >             inl sin_term = .^(pi, 0) .* s ./ .^(2, 0) |> 
> complex_sin
> │ >             inl one_minus_s = .^(1 - re s, -(im s))
> │ >             inl mirror_term =
> │ >                 if re one_minus_s <= 1
> │ >                 then .^(0, 0)
> │ >                 else
> │ >                     if count <= 3
> │ >                     then zeta (count + 1) gamma one_minus_s
> │ >                     else one_minus_s
> │ >             inl reflection_formula =
> │ >                 .^(2, 0) .* (.^(pi, 0) .** s) .* sin_term 
> .* gamma_term .* 
> │ > mirror_term
> │ >             reflection_formula
> │ >     join zeta 0i32 gamma s
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## bound
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > nominal bound t =
> │ >     `(
> │ >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 
> │ > Fable.Core.Emit(\"pyo3::Bound<$0>\")>]]\n#endif\ntype 
> pyo3_Bound<'T> = class 
> │ > end"
> │ >         $'' : $'pyo3_Bound<`t>'
> │ >     )
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## python
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > nominal python =
> │ >     `(
> │ >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 
> │ > Fable.Core.Emit(\"pyo3::Python\")>]]\n#endif\ntype 
> pyo3_Python = class end"
> │ >         $'' : $'pyo3_Python'
> │ >     )
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## pymodule
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > nominal pymodule =
> │ >     `(
> │ >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 
> │ > Fable.Core.Emit(\"pyo3::types::PyModule\")>]]\n#endif\ntype
> pyo3_types_PyModule 
> │ > = class end"
> │ >         $'' : $'pyo3_types_PyModule'
> │ >     )
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## pyany
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > nominal pyany =
> │ >     `(
> │ >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 
> │ > Fable.Core.Emit(\"pyo3::PyAny\")>]]\n#endif\ntype 
> pyo3_PyAny = class end"
> │ >         $'' : $'pyo3_PyAny'
> │ >     )
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## pyerr
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > nominal pyerr =
> │ >     `(
> │ >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 
> │ > Fable.Core.Emit(\"pyo3::PyErr\")>]]\n#endif\ntype 
> pyo3_PyErr = class end"
> │ >         $'' : $'pyo3_PyErr'
> │ >     )
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## eval
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl module_from_code (py : python) (code : string) : _ 
> (bound pymodule) _ =
> │ >     inl py = join py
> │ >     inl code = code |> sm'.to_std_string |> 
> sm'.new_c_string
> │ >     inl empty = "" |> sm'.to_std_string |> sm'.new_c_string
> │ >     !\\(code, $'"pyo3::types::PyModule::from_code(!py, &$0,
> &!empty, &!empty)"')
> │ >     |> resultm.map_error'' fun (x : pyerr) => x |> 
> sm'.format'
> │ > 
> │ > inl use_pyanymethods () =
> │ >     global "Fable.Core.RustInterop.emitRustExpr () 
> \");\nuse 
> │ > pyo3::prelude::PyAnyMethods;\n//\""
> │ > 
> │ > inl getattr (attr : string) (module : bound pymodule) : _ 
> (bound pyany) _ =
> │ >     inl attr = join attr
> │ >     inl attr = attr |> sm'.as_str
> │ >     inl module = join module
> │ >     use_pyanymethods ()
> │ >     !\\(attr, $'"!module.getattr($0)"')
> │ >     |> resultm.map_error'' fun (x : pyerr) => x |> 
> sm'.format'
> │ > 
> │ > inl call forall t. (args : t) (module : bound pyany) : _ 
> (bound pyany) _ =
> │ >     inl args = join args
> │ >     inl module = join module
> │ >     !\($'"pyo3::prelude::PyAnyMethods::call(&!module, 
> ((*!args).0, *(*!args).1),
> │ > None)"')
> │ >     |> resultm.map_error'' fun (x : pyerr) => x |> 
> sm'.format'
> │ > 
> │ > inl extract forall t. (result : bound pyany) : _ t _ =
> │ >     inl result = join result
> │ >     use_pyanymethods ()
> │ >     !\($'"!result.extract()"')
> │ >     |> resultm.map_error'' fun (x : pyerr) => x |> 
> sm'.format'
> │ > 
> │ > inl eval py code (args : pair bool (pair f64 f64)) : _ (_ 
> f64) sm'.std_string =
> │ >     inl code =
> │ >         code
> │ >         |> module_from_code py
> │ >         |> resultm.unwrap'
> │ >     inl fn =
> │ >         code
> │ >         |> getattr "fn"
> │ >         |> resultm.unwrap'
> │ > 
> │ >     fn
> │ >     |> call args
> │ >     |> resultm.try'
> │ >     |> extract
> │ >     |> resultm.try'
> │ >     |> complex
> │ >     |> Ok
> │ >     |> resultm.box
> │ > 
> │ > inl call1_ log py s code =
> │ >     inl code = join (a code : _ i32 _) |> sm'.concat_array 
> "\n"
> │ > 
> │ >     inl s = new_pair (re s) (im s)
> │ >     inl args = new_pair log s
> │ > 
> │ >     eval py code args
> │ > 
> │ > inl call1_ log name py s line =
> │ >     inl s = join s
> │ >     join
> │ >         ;[[
> │ >             $'$"import sys"'
> │ >             $'$"import traceback"'
> │ >             $'$"import re"'
> │ >             $'$"count = 0"'
> │ >             $'$"memory_address_pattern = re.compile(r\' at 
> 0x[[0-9a-fA-F]]+\')"'
> │ >             $'$"def trace_calls(frame, event, arg):"'
> │ >             $'$"    global count"'
> │ >             $'$"    count += 1"'
> │ >             $'$"    if count < 200:"'
> │ >             $'$"        try:"'
> │ >             $'$"            args = {{ k: v for k, v in 
> frame.f_locals.items() if
> │ > frame.f_code.co_name \!= \'make_mpc\' and k not in 
> [[\'ctx\']] and not 
> │ > callable(v) }}"'
> │ >             $'$"            args_str = \', \'.join([[ 
> │ > f\\\"{{k}}={{re.sub(memory_address_pattern, \' at 0x<?>\', 
> repr(v))}}\\\" for k,
> │ > v in args.items() ]])"'
> │ >             $'$"            print(f\\\"{{event}}({!name}) /
> f_code.co_name: 
> │ > {{frame.f_code.co_name}} / f_locals: {{args_str}} / 
> f_lineno: {{frame.f_lineno}}
> │ > / f_code.co_filename: 
> │ > {{frame.f_code.co_filename.split(\'site-packages\')[[-1]]}}
> / f_back.f_lineno: 
> │ > {{ \'\' if frame.f_back is None else frame.f_back.f_lineno 
> }} / 
> │ > f_back.f_code.co_filename: {{ \'\' if frame.f_back is None 
> else 
> │ > 
> frame.f_back.f_code.co_filename.split(\'site-packages\')[[-1]] }} / arg: 
> │ > {{re.sub(memory_address_pattern, \' at 0x<?>\', 
> repr(arg))}}\\\", flush=True)"'
> │ >             $'$"        except ValueError as e:"'
> │ >             $'$"            print(f\'{!name} / e: {{e}}\', 
> flush=True)"'
> │ >             $'$"        return trace_calls"'
> │ >             $'$"import mpmath"'
> │ >             $'$"def fn(log, s):"'
> │ >             $'$"    global count"'
> │ >             $'$"    if log:"'
> │ >             $'$"        print(f\'{!name} / s: {{s}} / 
> count: {{count}}\', 
> │ > flush=True)"'
> │ >             $'$"    s = complex(*s)"'
> │ >             $'$"    try:"'
> │ >             $'$"        if log: sys.settrace(trace_calls)"'
> │ >             line
> │ >             $'$"        if log:"'
> │ >             $'$"            sys.settrace(None)"'
> │ >             $'$"            print(f\'{!name} / result: 
> {{s}} / count: 
> │ > {{count}}\', flush=True)"'
> │ >             $'$"    except ValueError as e:"'
> │ >             $'$"        if s.real == 1:"'
> │ >             $'$"            s = complex(float(\'inf\'), 
> 0)"'
> │ >             $'$"    return (s.real, s.imag)"'
> │ >         ]]
> │ >         |> call1_ log py s
> │ > 
> │ > inl gamma_ log py s =
> │ >     call1_ log "gamma_" py s $'$"        s = 
> mpmath.gamma(s)"'
> │ > 
> │ > inl zeta_ log py s =
> │ >     call1_ log "zeta_" py s $'$"        s = 
> mpmath.zeta(s)"'
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## run_test
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl run_test log (fn : (complex f64 -> complex f64) * 
> (complex f64 -> complex 
> │ > f64) -> ()) =
> │ >     inl fn_ (py : python) : resultm.result' () pyerr =
> │ >         inl nan () =
> │ >             !\($'"f64::NAN"')
> │ >         inl gamma__ = fun (s : complex f64) =>
> │ >             inl result = gamma_ log py s
> │ >             if log then
> │ >                 inl s = join s
> │ >                 !\($'"println\!(\\\"gamma__ / s: {:?} / 
> result: {:?}\\\", !s, 
> │ > !result)"')
> │ >             result |> resultm.ok' |> optionm'.unbox |> 
> optionm'.default_value 
> │ > .^(nan (), nan ())
> │ >         inl zeta__ = fun (s : complex f64) =>
> │ >             inl result = zeta_ log py s
> │ > 
> │ >             inl z = zeta true gamma__ s
> │ > 
> │ >             if log then
> │ >                 inl s = join s
> │ >                 !\($'"println\!(\\\"zeta__ / s: {:?} / 
> result: {:?} / z: 
> │ > {:?}\\\", !s, !result, !z)"')
> │ > 
> │ >     //             re result - re x |> abs
> │ >     //             |> _assert_lt 0.001
> │ > 
> │ >     //             im result - im x |> abs
> │ >     //             |> _assert_lt 0.001
> │ > 
> │ >             result |> resultm.ok' |> optionm'.unbox |> 
> optionm'.default_value 
> │ > .^(nan (), nan ())
> │ >         join fn (zeta__, gamma__)
> │ > 
> │ >         Ok ()
> │ >         |> resultm.box
> │ > 
> │ >     join
> │ >         !\($'"pyo3::prepare_freethreaded_python()"') : ()
> │ > 
> │ >         !\($'"let __run_test = pyo3::Python::with_gil(|py| 
> -> pyo3::PyResult<()>
> │ > { //"')
> │ > 
> │ >         let x' = fn_ (!\($'"py"') : python)
> │ >         inl x' = join x'
> │ > 
> │ >         inl closure_fix = 2u8, 1u8
> │ >         x' |> rust.fix_closure closure_fix
> │ > 
> │ >         (!\($'"__run_test"') : _ () pyerr)
> │ >         |> resultm.unwrap'
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## test_zeta_at_known_values_
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl test_zeta_at_known_values_ log = run_test log fun zeta,
> gamma =>
> │ >     ;[[
> │ >         .^(2, 0), pi ** 2 / 6
> │ >         .^(-1, 0), -1 / 12
> │ >     ]]
> │ >     |> fun x => a x : _ i32 _
> │ >     |> am.iter fun s, e =>
> │ >         inl result = zeta s
> │ > 
> │ >         result |> im |> _assert_eq 0
> │ >         re result - e |> abs |> _assert_lt 0.0001
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > ///! rust -d num-complex pyo3
> │ > 
> │ > test_zeta_at_known_values_ true
> │ > 
> │ > ── [ 3.92s - return value ] 
> ────────────────────────────────────────────────────
> │ > │ zeta_ / s: (2.0, 0.0) / count: 0
> │ > │ call(zeta_) / f_code.co_name: zeta / 
> f_locals: s=(2+0j), a=1,
> │ > derivative=0, method=None, kwargs={} / f_lineno: 528 / 
> f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / 
> │ > arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: s=(2+0j), a=1,
> │ > derivative=0, method=None, kwargs={} / f_lineno: 530 / 
> f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / 
> │ > arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: s=(2+0j), a=1,
> │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 /
> f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / 
> │ > arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: s=(2+0j), a=1,
> │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 /
> f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / 
> │ > arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: s=(2+0j), a=1,
> │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 /
> f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / 
> │ > arg: None
> │ > │ call(zeta_) / f_code.co_name: f / 
> f_locals: x=(2+0j), 
> │ > kwargs={}, name='zeta' / f_lineno: 989 / 
> f_code.co_filename: 
> │ > \mpmath\ctx_mp_python.py / f_back.f_lineno: 533 / 
> f_back.f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / arg: None
> │ > │ line(zeta_) / f_code.co_name: f / 
> f_locals: x=(2+0j), 
> │ > kwargs={}, name='zeta' / f_linen...me: make_mpc / f_locals:
> / f_lineno: 603 / 
> │ > f_code.co_filename: \mpmath\ctx_mp_python.py / 
> f_back.f_lineno: 1007 / 
> │ > f_back.f_code.co_filename: \mpmath\ctx_mp_python.py / arg: 
> None
> │ > │ line(gamma_) / f_code.co_name: make_mpc 
> / f_locals:  / 
> │ > f_lineno: 604 / f_code.co_filename: 
> \mpmath\ctx_mp_python.py / f_back.f_lineno: 
> │ > 1007 / f_back.f_code.co_filename: \mpmath\ctx_mp_python.py 
> / arg: None
> │ > │ line(gamma_) / f_code.co_name: make_mpc 
> / f_locals:  / 
> │ > f_lineno: 605 / f_code.co_filename: 
> \mpmath\ctx_mp_python.py / f_back.f_lineno: 
> │ > 1007 / f_back.f_code.co_filename: \mpmath\ctx_mp_python.py 
> / arg: None
> │ > │ return(gamma_) / f_code.co_name: 
> make_mpc / f_locals:  / 
> │ > f_lineno: 605 / f_code.co_filename: 
> \mpmath\ctx_mp_python.py / f_back.f_lineno: 
> │ > 1007 / f_back.f_code.co_filename: \mpmath\ctx_mp_python.py 
> / arg: 
> │ > mpc(real='1.0', imag='0.0')
> │ > │ return(gamma_) / f_code.co_name: f / 
> f_locals: 
> │ > x=mpc(real='2.0', imag='0.0'), kwargs={}, name='gamma', 
> prec=53, rounding='n' / 
> │ > f_lineno: 1007 / f_code.co_filename: 
> \mpmath\ctx_mp_python.py / f_back.f_lineno:
> │ > 25 / f_back.f_code.co_filename:  / arg: mpc(real='1.0', 
> imag='0.0')
> │ > │ gamma_ / result: (1.0 + 0.0j) / count: 
> 140
> │ > │ gamma__ / s: Complex { re: 2.0, im: 0.0 
> } / result: 
> │ > Ok(Complex { re: 1.0, im: 0.0 })
> │ > │ zeta / count: 1 / s: Complex { re: 2.0, 
> im: -0.0 }
> │ > │ zeta__ / s: Complex { re: -1.0, im: 0.0 
> } / result: 
> │ > Ok(Complex { re: -0.08333333333333333, im: 0.0 }) / z: 
> Complex { re: NaN, im: 
> │ > NaN }
> │ > │ __assert_eq / actual: 0.0 / expected: 
> 0.0
> │ > │ __assert_lt / actual: 0.0 / expected: 
> 0.0001
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## test_zeta_at_2_minus2
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl test_zeta_at_2_minus2 log = run_test log fun zeta, 
> gamma =>
> │ >     inl s = .^(2, -2)
> │ >     inl result = zeta s
> │ > 
> │ >     (re result - 0.8673) |> abs |> _assert_lt 0.001
> │ >     (im result - 0.2750) |> abs |> _assert_lt 0.001
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > ///! rust -d num-complex pyo3
> │ > 
> │ > test_zeta_at_2_minus2 true
> │ > 
> │ > ── [ 3.50s - return value ] 
> ────────────────────────────────────────────────────
> │ > │ zeta_ / s: (2.0, -2.0) / count: 0
> │ > │ call(zeta_) / f_code.co_name: zeta / 
> f_locals: s=(2-2j), a=1,
> │ > derivative=0, method=None, kwargs={} / f_lineno: 528 / 
> f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / 
> │ > arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: s=(2-2j), a=1,
> │ > derivative=0, method=None, kwargs={} / f_lineno: 530 / 
> f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / 
> │ > arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: s=(2-2j), a=1,
> │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 /
> f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / 
> │ > arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: s=(2-2j), a=1,
> │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 /
> f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / 
> │ > arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: s=(2-2j), a=1,
> │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 /
> f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / 
> │ > arg: None
> │ > │ call(zeta_) / f_code.co_name: f / 
> f_locals: x=(2-2j), 
> │ > kwargs={}, name='zeta' / f_lineno: 989 / 
> f_code.co_filename: 
> │ > \mpmath\ctx_mp_python.py / f_back.f_lineno: 533 / 
> f_back.f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / arg: None
> │ > │ line(zeta_) / f_code.co_name: f / 
> f_locals: x=(2-2j), 
> │ > kwargs={}, name='zeta' / f_line.../ arg: None
> │ > │ call(zeta_) / f_code.co_name: 
> python_bitcount / f_locals: n=2
> │ > / f_lineno: 91 / f_code.co_filename: 
> \mpmath\libmp\libintmath.py / 
> │ > f_back.f_lineno: 778 / f_back.f_code.co_filename: 
> \mpmath\libmp\libmpf.py / arg:
> │ > None
> │ > │ line(zeta_) / f_code.co_name: 
> python_bitcount / f_locals: n=2
> │ > / f_lineno: 93 / f_code.co_filename: 
> \mpmath\libmp\libintmath.py / 
> │ > f_back.f_lineno: 778 / f_back.f_code.co_filename: 
> \mpmath\libmp\libmpf.py / arg:
> │ > None
> │ > │ line(zeta_) / f_code.co_name: 
> python_bitcount / f_locals: 
> │ > n=2, bc=2 / f_lineno: 94 / f_code.co_filename: 
> \mpmath\libmp\libintmath.py / 
> │ > f_back.f_lineno: 778 / f_back.f_code.co_filename: 
> \mpmath\libmp\libmpf.py / arg:
> │ > None
> │ > │ line(zeta_) / f_code.co_name: 
> python_bitcount / f_locals: 
> │ > n=2, bc=2 / f_lineno: 95 / f_code.co_filename: 
> \mpmath\libmp\libintmath.py / 
> │ > f_back.f_lineno: 778 / f_back.f_code.co_filename: 
> \mpmath\libmp\libmpf.py / arg:
> │ > None
> │ > │ return(zeta_) / f_code.co_name: 
> python_bitcount / f_locals: 
> │ > n=2, bc=2 / f_lineno: 95 / f_code.co_filename: 
> \mpmath\libmp\libintmath.py / 
> │ > f_back.f_lineno: 778 / f_back.f_code.co_filename: 
> \mpmath\libmp\libmpf.py / arg:
> │ > 2
> │ > │ zeta_ / result: (0.867351829635993 + 
> 0.275127238807858j) / 
> │ > count: 1812
> │ > │ zeta / count: 0 / s: Complex { re: 2.0, 
> im: -2.0 }
> │ > │ zeta__ / s: Complex { re: 2.0, im: -2.0 
> } / result: 
> │ > Ok(Complex { re: 0.8673518296359931, im: 
> 0.27512723880785767 }) / z: Complex { 
> │ > re: NaN, im: NaN }
> │ > │ __assert_lt / actual: 
> 5.182963599315027e-5 / expected: 0.001
> │ > │ __assert_lt / actual: 
> 0.00012723880785764363 / expected: 
> │ > 0.001
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## 
> test_trivial_zero_at_negative_even___
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl test_trivial_zero_at_negative_even___ log = run_test 
> log fun zeta, gamma =>
> │ >     (join listm'.init_series -2f64 -40 -2)
> │ >     |> listm.iter fun n =>
> │ >         inl s = .^(n, 0)
> │ >         inl result = zeta s
> │ > 
> │ >         result |> re |> _assert_eq 0
> │ >         result |> im |> _assert_eq 0
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > ///! rust -d num-complex pyo3
> │ > 
> │ > test_trivial_zero_at_negative_even___ true
> │ > 
> │ > ── [ 4.22s - return value ] 
> ────────────────────────────────────────────────────
> │ > │ zeta_ / s: (-2.0, 0.0) / count: 0
> │ > │ call(zeta_) / f_code.co_name: zeta / 
> f_locals: s=(-2+0j), 
> │ > a=1, derivative=0, method=None, kwargs={} / f_lineno: 528 /
> f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / 
> │ > arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: s=(-2+0j), 
> │ > a=1, derivative=0, method=None, kwargs={} / f_lineno: 530 /
> f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / 
> │ > arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: s=(-2+0j), 
> │ > a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 
> 531 / 
> │ > f_code.co_filename: \mpmath\functions\zeta.py / 
> f_back.f_lineno: 25 / 
> │ > f_back.f_code.co_filename:  / arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: s=(-2+0j), 
> │ > a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 
> 532 / 
> │ > f_code.co_filename: \mpmath\functions\zeta.py / 
> f_back.f_lineno: 25 / 
> │ > f_back.f_code.co_filename:  / arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: s=(-2+0j), 
> │ > a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 
> 533 / 
> │ > f_code.co_filename: \mpmath\functions\zeta.py / 
> f_back.f_lineno: 25 / 
> │ > f_back.f_code.co_filename:  / arg: None
> │ > │ call(zeta_) / f_code.co_name: f / 
> f_locals: x=(-2+0j), 
> │ > kwargs={}, name='zeta' / f_lineno: 989 / 
> f_code.co_filename: 
> │ > \mpmath\ctx_mp_python.py / f_back.f_lineno: 533 / 
> f_back.f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / arg: None
> │ > │ line(zeta_) / f_code.co_name: f / 
> f_locals: x=(-2+0j), 
> │ > kwargs={}, name='zeta' /...lename: \mpmath\ctx_mp_python.py
> / f_back.f_lineno: 
> │ > 1007 / f_back.f_code.co_filename: \mpmath\ctx_mp_python.py 
> / arg: None
> │ > │ line(gamma_) / f_code.co_name: make_mpc 
> / f_locals:  / 
> │ > f_lineno: 604 / f_code.co_filename: 
> \mpmath\ctx_mp_python.py / f_back.f_lineno: 
> │ > 1007 / f_back.f_code.co_filename: \mpmath\ctx_mp_python.py 
> / arg: None
> │ > │ line(gamma_) / f_code.co_name: make_mpc 
> / f_locals:  / 
> │ > f_lineno: 605 / f_code.co_filename: 
> \mpmath\ctx_mp_python.py / f_back.f_lineno: 
> │ > 1007 / f_back.f_code.co_filename: \mpmath\ctx_mp_python.py 
> / arg: None
> │ > │ return(gamma_) / f_code.co_name: 
> make_mpc / f_locals:  / 
> │ > f_lineno: 605 / f_code.co_filename: 
> \mpmath\ctx_mp_python.py / f_back.f_lineno: 
> │ > 1007 / f_back.f_code.co_filename: \mpmath\ctx_mp_python.py 
> / arg: 
> │ > mpc(real='8.1591528324789768e+47', imag='0.0')
> │ > │ return(gamma_) / f_code.co_name: f / 
> f_locals: 
> │ > x=mpc(real='41.0', imag='0.0'), kwargs={}, name='gamma', 
> prec=53, rounding='n' /
> │ > f_lineno: 1007 / f_code.co_filename: 
> \mpmath\ctx_mp_python.py / f_back.f_lineno:
> │ > 25 / f_back.f_code.co_filename:  / arg: 
> mpc(real='8.1591528324789768e+47', 
> │ > imag='0.0')
> │ > │ gamma_ / result: (8.15915283247898e+47 +
> 0.0j) / count: 149
> │ > │ gamma__ / s: Complex { re: 41.0, im: 0.0
> } / result: 
> │ > Ok(Complex { re: 8.159152832478977e47, im: 0.0 })
> │ > │ zeta / count: 1 / s: Complex { re: 41.0,
> im: -0.0 }
> │ > │ zeta__ / s: Complex { re: -40.0, im: 0.0
> } / result: 
> │ > Ok(Complex { re: 0.0, im: 0.0 }) / z: Complex { re: NaN, 
> im: NaN }
> │ > │ __assert_eq / actual: 0.0 / expected: 
> 0.0
> │ > │ __assert_eq / actual: 0.0 / expected: 
> 0.0
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## test_non_trivial_zero___
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl test_non_trivial_zero___ log = run_test log fun zeta, 
> gamma =>
> │ >     ;[[
> │ >         .^(0.5, 14.134725)
> │ >         .^(0.5, 21.022040)
> │ >         .^(0.5, 25.010857)
> │ >         .^(0.5, 30.424876)
> │ >         .^(0.5, 32.935062)
> │ >         .^(0.5, 37.586178)
> │ >     ]]
> │ >     |> fun x => a x : _ i32 _
> │ >     |> am.iter fun x =>
> │ >             inl result = zeta x
> │ >             result |> re |> abs |> _assert_lt 0.0001
> │ >             result |> im |> abs |> _assert_lt 0.0001
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > ///! rust -d num-complex pyo3
> │ > 
> │ > test_non_trivial_zero___ true
> │ > 
> │ > ── [ 3.79s - return value ] 
> ────────────────────────────────────────────────────
> │ > │ zeta_ / s: (0.5, 14.134725) / count: 0
> │ > │ call(zeta_) / f_code.co_name: zeta / 
> f_locals: 
> │ > s=(0.5+14.134725j), a=1, derivative=0, method=None, 
> kwargs={} / f_lineno: 528 / 
> │ > f_code.co_filename: \mpmath\functions\zeta.py / 
> f_back.f_lineno: 25 / 
> │ > f_back.f_code.co_filename:  / arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: 
> │ > s=(0.5+14.134725j), a=1, derivative=0, method=None, 
> kwargs={} / f_lineno: 530 / 
> │ > f_code.co_filename: \mpmath\functions\zeta.py / 
> f_back.f_lineno: 25 / 
> │ > f_back.f_code.co_filename:  / arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: 
> │ > s=(0.5+14.134725j), a=1, derivative=0, method=None, 
> kwargs={}, d=0 / f_lineno: 
> │ > 531 / f_code.co_filename: \mpmath\functions\zeta.py / 
> f_back.f_lineno: 25 / 
> │ > f_back.f_code.co_filename:  / arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: 
> │ > s=(0.5+14.134725j), a=1, derivative=0, method=None, 
> kwargs={}, d=0 / f_lineno: 
> │ > 532 / f_code.co_filename: \mpmath\functions\zeta.py / 
> f_back.f_lineno: 25 / 
> │ > f_back.f_code.co_filename:  / arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: 
> │ > s=(0.5+14.134725j), a=1, derivative=0, method=None, 
> kwargs={}, d=0 / f_lineno: 
> │ > 533 / f_code.co_filename: \mpmath\functions\zeta.py / 
> f_back.f_lineno: 25 / 
> │ > f_back.f_code.co_filename:  / arg: None
> │ > │ call(zeta_) / f_code.co_name: f / 
> f_locals: 
> │ > x=(0.5+14.134725j), kwargs={}, name='zeta' / f_lineno: 989 
> / f_code.co_filename:
> │ > \mpmath\ctx_mp_python.py / f_back.f_lineno: 533 / 
> f_back.f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / arg: None
> │ > │ line(zeta_) / f_code... arg: None
> │ > │ line(gamma_) / f_code.co_name: 
> complex_stirling_series / 
> │ > f_locals: x=1208925819614629174706176, 
> y=-90877802089662679288381440, prec=81, 
> │ > _m=3416353708500640443578529333, tre=855591523614410863719,│ > tim=64316830603724894628746, ure=-1710577520534459139249, 
> │ > uim=45518868236127668552, sre=1013002518538853602038572, 
> │ > sim=90883161825546323029600502 / f_lineno: 1637 / 
> f_code.co_filename: 
> │ > \mpmath\libmp\gammazeta.py / f_back.f_lineno: 2050 / 
> f_back.f_code.co_filename: 
> │ > \mpmath\libmp\gammazeta.py / arg: None
> │ > │ line(gamma_) / f_code.co_name: 
> complex_stirling_series / 
> │ > f_locals: x=1208925819614629174706176, 
> y=-90877802089662679288381440, prec=81, 
> │ > _m=3416353708500640443578529333, tre=-1816151534455075068, 
> │ > tim=-45486653225747820096, ure=-1710577520534459139249, 
> │ > uim=45518868236127668552, sre=1013002518538853602038572, 
> │ > sim=90883161825546323029600502 / f_lineno: 1638 / 
> f_code.co_filename: 
> │ > \mpmath\libmp\gammazeta.py / f_back.f_lineno: 2050 / 
> f_back.f_code.co_filename: 
> │ > \mpmath\libmp\gammazeta.py / arg: None
> │ > │ gamma_ / result: (-1.32798420042152e-26 
> + 
> │ > 5.5751975252688e-26j) / count: 309
> │ > │ gamma__ / s: Complex { re: 0.5, im: 
> -37.586178 } / result: 
> │ > Ok(Complex { re: -1.3279842004215153e-26, im: 
> 5.575197525268802e-26 })
> │ > │ zeta__ / s: Complex { re: 0.5, im: 
> 37.586178 } / result: 
> │ > Ok(Complex { re: -8.910186507947958e-8, im: 
> -2.943780446402868e-7 }) / z: 
> │ > Complex { re: -0.0, im: 0.0 }
> │ > │ __assert_lt / actual: 
> 8.910186507947958e-8 / expected: 0.0001
> │ > │ __assert_lt / actual: 
> 2.943780446402868e-7 / expected: 0.0001
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## test_real_part_greater_than_one___
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl test_real_part_greater_than_one___ log = run_test log 
> fun zeta, gamma =>
> │ >     inl points = ;[[ 2; 3; 4; 5; 10; 20; 50 ]]
> │ >     (a points : _ i32 _)
> │ >     |> am.iter fun point =>
> │ >         inl s = .^(point, 0)
> │ >         inl result = zeta s
> │ >         result |> re |> _assert_gt 0
> │ >         result |> im |> _assert_eq 0
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > ///! rust -d num-complex pyo3
> │ > 
> │ > test_real_part_greater_than_one___ true
> │ > 
> │ > ── [ 3.84s - return value ] 
> ────────────────────────────────────────────────────
> │ > │ zeta_ / s: (2.0, 0.0) / count: 0
> │ > │ call(zeta_) / f_code.co_name: zeta / 
> f_locals: s=(2+0j), a=1,
> │ > derivative=0, method=None, kwargs={} / f_lineno: 528 / 
> f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / 
> │ > arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: s=(2+0j), a=1,
> │ > derivative=0, method=None, kwargs={} / f_lineno: 530 / 
> f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / 
> │ > arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: s=(2+0j), a=1,
> │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 /
> f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / 
> │ > arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: s=(2+0j), a=1,
> │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 /
> f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / 
> │ > arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: s=(2+0j), a=1,
> │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 /
> f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / 
> │ > arg: None
> │ > │ call(zeta_) / f_code.co_name: f / 
> f_locals: x=(2+0j), 
> │ > kwargs={}, name='zeta' / f_lineno: 989 / 
> f_code.co_filename: 
> │ > \mpmath\ctx_mp_python.py / f_back.f_lineno: 533 / 
> f_back.f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / arg: None
> │ > │ line(zeta_) / f_code.co_name: f / 
> f_locals: x=(2+0j), 
> │ > kwargs={}, name='zeta' / f_linen...f_code.co_filename: 
> \mpmath\ctx_mp_python.py 
> │ > / f_back.f_lineno: 1007 / f_back.f_code.co_filename: 
> \mpmath\ctx_mp_python.py / 
> │ > arg: None
> │ > │ line(zeta_) / f_code.co_name: make_mpc /
> f_locals:  / 
> │ > f_lineno: 605 / f_code.co_filename: 
> \mpmath\ctx_mp_python.py / f_back.f_lineno: 
> │ > 1007 / f_back.f_code.co_filename: \mpmath\ctx_mp_python.py 
> / arg: None
> │ > │ return(zeta_) / f_code.co_name: make_mpc
> / f_locals:  / 
> │ > f_lineno: 605 / f_code.co_filename: 
> \mpmath\ctx_mp_python.py / f_back.f_lineno: 
> │ > 1007 / f_back.f_code.co_filename: \mpmath\ctx_mp_python.py 
> / arg: 
> │ > mpc(real='1.0000000000000009', imag='0.0')
> │ > │ return(zeta_) / f_code.co_name: f / 
> f_locals: 
> │ > x=mpc(real='50.0', imag='0.0'), kwargs={}, name='zeta', 
> prec=53, rounding='n' / 
> │ > f_lineno: 1007 / f_code.co_filename: 
> \mpmath\ctx_mp_python.py / f_back.f_lineno:
> │ > 533 / f_back.f_code.co_filename: \mpmath\functions\zeta.py 
> / arg: 
> │ > mpc(real='1.0000000000000009', imag='0.0')
> │ > │ return(zeta_) / f_code.co_name: zeta / 
> f_locals: s=(50+0j), 
> │ > a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 
> 533 / 
> │ > f_code.co_filename: \mpmath\functions\zeta.py / 
> f_back.f_lineno: 25 / 
> │ > f_back.f_code.co_filename:  / arg: 
> mpc(real='1.0000000000000009', imag='0.0')
> │ > │ zeta_ / result: (1.0 + 0.0j) / count: 
> 181
> │ > │ zeta / count: 0 / s: Complex { re: 50.0,
> im: 0.0 }
> │ > │ zeta__ / s: Complex { re: 50.0, im: 0.0 
> } / result: 
> │ > Ok(Complex { re: 1.0000000000000009, im: 0.0 }) / z: 
> Complex { re: NaN, im: NaN 
> │ > }
> │ > │ __assert_gt / actual: 1.0000000000000009
> / expected: 0.0
> │ > │ __assert_eq / actual: 0.0 / expected: 
> 0.0
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## test_zeta_at_1___
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl test_zeta_at_1___ log = run_test log fun zeta, gamma =>
> │ >     inl s = .^(1, 0)
> │ >     inl result = zeta s
> │ >     result |> re |> _assert_eq limit.max
> │ >     result |> im |> _assert_eq 0
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > ///! rust -d num-complex pyo3
> │ > 
> │ > test_zeta_at_1___ true
> │ > 
> │ > ── [ 3.67s - return value ] 
> ────────────────────────────────────────────────────
> │ > │ zeta_ / s: (1.0, 0.0) / count: 0
> │ > │ call(zeta_) / f_code.co_name: zeta / 
> f_locals: s=(1+0j), a=1,
> │ > derivative=0, method=None, kwargs={} / f_lineno: 528 / 
> f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / 
> │ > arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: s=(1+0j), a=1,
> │ > derivative=0, method=None, kwargs={} / f_lineno: 530 / 
> f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / 
> │ > arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: s=(1+0j), a=1,
> │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 /
> f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / 
> │ > arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: s=(1+0j), a=1,
> │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 /
> f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / 
> │ > arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: s=(1+0j), a=1,
> │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 /
> f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / 
> │ > arg: None
> │ > │ call(zeta_) / f_code.co_name: f / 
> f_locals: x=(1+0j), 
> │ > kwargs={}, name='zeta' / f_lineno: 989 / 
> f_code.co_filename: 
> │ > \mpmath\ctx_mp_python.py / f_back.f_lineno: 533 / 
> f_back.f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / arg: None
> │ > │ line(zeta_) / f_code.co_name: f / 
> f_locals: x=(1+0j), 
> │ > kwargs={}, name='zeta' / f_linen...back object at 0x<?>>)
> │ > │ return(gamma_) / f_code.co_name: f / 
> f_locals: 
> │ > x=mpc(real='0.0', imag='0.0'), kwargs={}, name='gamma', 
> prec=53, rounding='n' / 
> │ > f_lineno: 1007 / f_code.co_filename: 
> \mpmath\ctx_mp_python.py / f_back.f_lineno:
> │ > 25 / f_back.f_code.co_filename:  / arg: None
> │ > │ exception(gamma_) / f_code.co_name: fn /
> f_locals: log=True, 
> │ > s=0j / f_lineno: 25 / f_code.co_filename:  / 
> f_back.f_lineno:  / 
> │ > f_back.f_code.co_filename:  / arg: (<class 'ValueError'>, 
> ValueError('gamma 
> │ > function pole'), <traceback object at 0x<?>>)
> │ > │ line(gamma_) / f_code.co_name: fn / 
> f_locals: log=True, s=0j 
> │ > / f_lineno: 29 / f_code.co_filename:  / f_back.f_lineno:  /│ > f_back.f_code.co_filename:  / arg: None
> │ > │ line(gamma_) / f_code.co_name: fn / 
> f_locals: log=True, s=0j,
> │ > e=ValueError('gamma function pole') / f_lineno: 30 / 
> f_code.co_filename:  / 
> │ > f_back.f_lineno:  / f_back.f_code.co_filename:  / arg: None
> │ > │ line(gamma_) / f_code.co_name: fn / 
> f_locals: log=True, s=0j 
> │ > / f_lineno: 32 / f_code.co_filename:  / f_back.f_lineno:  /│ > f_back.f_code.co_filename:  / arg: None
> │ > │ return(gamma_) / f_code.co_name: fn / 
> f_locals: log=True, 
> │ > s=0j / f_lineno: 32 / f_code.co_filename:  / 
> f_back.f_lineno:  / 
> │ > f_back.f_code.co_filename:  / arg: (0.0, 0.0)
> │ > │ gamma__ / s: Complex { re: 0.0, im: 0.0 
> } / result: 
> │ > Ok(Complex { re: 0.0, im: 0.0 })
> │ > │ zeta__ / s: Complex { re: 1.0, im: 0.0 }
> / result: Ok(Complex
> │ > { re: inf, im: 0.0 }) / z: Complex { re: 0.0, im: 0.0 }
> │ > │ __assert_eq / actual: inf / expected: 
> inf
> │ > │ __assert_eq / actual: 0.0 / expected: 
> 0.0
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## test_symmetry_across_real_axis___
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl test_symmetry_across_real_axis___ log = run_test log 
> fun zeta, gamma =>
> │ >     inl s = .^(2, 10)
> │ >     inl result_positive_im = zeta s
> │ >     inl result_negative_im = zeta .^(re s, -(im s))
> │ >     inl conj = result_negative_im |> conj
> │ >     result_positive_im |> re |> _assert_eq (conj |> re)
> │ >     result_positive_im |> im |> _assert_eq (conj |> im)
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > ///! rust -d num-complex pyo3
> │ > 
> │ > test_symmetry_across_real_axis___ true
> │ > 
> │ > ── [ 3.92s - return value ] 
> ────────────────────────────────────────────────────
> │ > │ zeta_ / s: (2.0, 10.0) / count: 0
> │ > │ call(zeta_) / f_code.co_name: zeta / 
> f_locals: s=(2+10j), 
> │ > a=1, derivative=0, method=None, kwargs={} / f_lineno: 528 /
> f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / 
> │ > arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: s=(2+10j), 
> │ > a=1, derivative=0, method=None, kwargs={} / f_lineno: 530 /
> f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / 
> │ > arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: s=(2+10j), 
> │ > a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 
> 531 / 
> │ > f_code.co_filename: \mpmath\functions\zeta.py / 
> f_back.f_lineno: 25 / 
> │ > f_back.f_code.co_filename:  / arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: s=(2+10j), 
> │ > a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 
> 532 / 
> │ > f_code.co_filename: \mpmath\functions\zeta.py / 
> f_back.f_lineno: 25 / 
> │ > f_back.f_code.co_filename:  / arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: s=(2+10j), 
> │ > a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 
> 533 / 
> │ > f_code.co_filename: \mpmath\functions\zeta.py / 
> f_back.f_lineno: 25 / 
> │ > f_back.f_code.co_filename:  / arg: None
> │ > │ call(zeta_) / f_code.co_name: f / 
> f_locals: x=(2+10j), 
> │ > kwargs={}, name='zeta' / f_lineno: 989 / 
> f_code.co_filename: 
> │ > \mpmath\ctx_mp_python.py / f_back.f_lineno: 533 / 
> f_back.f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / arg: None
> │ > │ line(zeta_) / f_code.co_name: f / 
> f_locals: x=(2+10j), 
> │ > kwargs={}, name='zeta' /.../ f_back.f_code.co_filename: 
> \mpmath\libmp\libmpf.py 
> │ > / arg: None
> │ > │ line(zeta_) / f_code.co_name: 
> python_bitcount / f_locals: 
> │ > n=26, bc=5 / f_lineno: 94 / f_code.co_filename: 
> \mpmath\libmp\libintmath.py / 
> │ > f_back.f_lineno: 778 / f_back.f_code.co_filename: 
> \mpmath\libmp\libmpf.py / arg:
> │ > None
> │ > │ line(zeta_) / f_code.co_name: 
> python_bitcount / f_locals: 
> │ > n=26, bc=5 / f_lineno: 95 / f_code.co_filename: 
> \mpmath\libmp\libintmath.py / 
> │ > f_back.f_lineno: 778 / f_back.f_code.co_filename: 
> \mpmath\libmp\libmpf.py / arg:
> │ > None
> │ > │ return(zeta_) / f_code.co_name: 
> python_bitcount / f_locals: 
> │ > n=26, bc=5 / f_lineno: 95 / f_code.co_filename: 
> \mpmath\libmp\libintmath.py / 
> │ > f_back.f_lineno: 778 / f_back.f_code.co_filename: 
> \mpmath\libmp\libmpf.py / arg:
> │ > 5
> │ > │ line(zeta_) / f_code.co_name: mpf_add / 
> f_locals: s=(0, 1, 2,
> │ > 1), t=(0, 25, 2, 5), prec=14, rnd='d', _sub=0, ssign=0, 
> sman=1, sexp=2, sbc=1, 
> │ > tsign=0, tman=25, texp=2, tbc=5, offset=0, man=26, bc=5 / 
> f_lineno: 779 / 
> │ > f_code.co_filename: \mpmath\libmp\libmpf.py / 
> f_back.f_lineno: 1401 / 
> │ > f_back.f_code.co_filename: \mpmath\libmp\libmpf.py / arg: 
> None
> │ > │ zeta_ / result: (1.19798250067418 + 
> 0.0791704917205257j) / 
> │ > count: 1174
> │ > │ zeta / count: 0 / s: Complex { re: 2.0, 
> im: -10.0 }
> │ > │ zeta__ / s: Complex { re: 2.0, im: -10.0
> } / result: 
> │ > Ok(Complex { re: 1.1979825006741847, im: 
> 0.07917049172052575 }) / z: Complex { 
> │ > re: NaN, im: NaN }
> │ > │ __assert_eq / actual: 1.1979825006741847
> / expected: 
> │ > 1.1979825006741847
> │ > │ __assert_eq / actual: 
> -0.07917049172052575 / expected: 
> │ > -0.07917049172052575
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## test_behavior_near_origin___
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl test_behavior_near_origin___ log = run_test log fun 
> zeta, gamma =>
> │ >     inl s = .^(0.01, 0.01)
> │ >     inl result = zeta s
> │ >     result |> re |> _assert_lt limit.max
> │ >     result |> im |> _assert_lt limit.max
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > ///! rust -d num-complex pyo3
> │ > 
> │ > test_behavior_near_origin___ true
> │ > 
> │ > ── [ 3.47s - return value ] 
> ────────────────────────────────────────────────────
> │ > │ zeta_ / s: (0.01, 0.01) / count: 0
> │ > │ call(zeta_) / f_code.co_name: zeta / 
> f_locals: 
> │ > s=(0.01+0.01j), a=1, derivative=0, method=None, kwargs={} /
> f_lineno: 528 / 
> │ > f_code.co_filename: \mpmath\functions\zeta.py / 
> f_back.f_lineno: 25 / 
> │ > f_back.f_code.co_filename:  / arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: 
> │ > s=(0.01+0.01j), a=1, derivative=0, method=None, kwargs={} /
> f_lineno: 530 / 
> │ > f_code.co_filename: \mpmath\functions\zeta.py / 
> f_back.f_lineno: 25 / 
> │ > f_back.f_code.co_filename:  / arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: 
> │ > s=(0.01+0.01j), a=1, derivative=0, method=None, kwargs={}, 
> d=0 / f_lineno: 531 /
> │ > f_code.co_filename: \mpmath\functions\zeta.py / 
> f_back.f_lineno: 25 / 
> │ > f_back.f_code.co_filename:  / arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: 
> │ > s=(0.01+0.01j), a=1, derivative=0, method=None, kwargs={}, 
> d=0 / f_lineno: 532 /
> │ > f_code.co_filename: \mpmath\functions\zeta.py / 
> f_back.f_lineno: 25 / 
> │ > f_back.f_code.co_filename:  / arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: 
> │ > s=(0.01+0.01j), a=1, derivative=0, method=None, kwargs={}, 
> d=0 / f_lineno: 533 /
> │ > f_code.co_filename: \mpmath\functions\zeta.py / 
> f_back.f_lineno: 25 / 
> │ > f_back.f_code.co_filename:  / arg: None
> │ > │ call(zeta_) / f_code.co_name: f / 
> f_locals: x=(0.01+0.01j), 
> │ > kwargs={}, name='zeta' / f_lineno: 989 / 
> f_code.co_filename: 
> │ > \mpmath\ctx_mp_python.py / f_back.f_lineno: 533 / 
> f_back.f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / arg: None
> │ > │ line(zeta_) / f_code.co_name: f / 
> f_locals: x=(0...py / 
> │ > f_back.f_lineno: 1007 / f_back.f_code.co_filename: 
> \mpmath\ctx_mp_python.py / 
> │ > arg: None
> │ > │ line(gamma_) / f_code.co_name: mpc_gamma
> / f_locals: z=((0, 
> │ > 4458563631096791, -52, 52), (1, 5764607523034235, -59, 
> 53)), prec=53, rnd='n', 
> │ > type=0, a=(0, 4458563631096791, -52, 52), b=(1, 
> 5764607523034235, -59, 53), 
> │ > asign=0, aman=4458563631096791, aexp=-52, abc=52, bsign=1, 
> │ > bman=5764607523034235, bexp=-59, bbc=53, wp=73, amag=0, 
> bmag=-6, mag=0, an=0, 
> │ > bn=0, absn=0j, gamma_size=0, need_reflection=0, zorig=((0, 
> 4458563631096791, 
> │ > -52, 52), (1, 5764607523034235, -59, 53)), yfinal=0, 
> balance_prec=0, 
> │ > n_for_stirling=14, need_reduction=True, 
> afix=132131814190692672995328, 
> │ > bfix=-94447329657392906240, r=0, zprered=((0, 
> 4458563631096791, -52, 52), (1, 
> │ > 5764607523034235, -59, 53)), d=14, 
> rre=56942610883563778729574216337150, 
> │ > one=9444732965739290427392, 
> rim=-1820461636508155576115177658065, k=12 / 
> │ > f_lineno: 2043 / f_code.co_filename: 
> \mpmath\libmp\gammazeta.py / 
> │ > f_back.f_lineno: 1007 / f_back.f_code.co_filename: 
> \mpmath\ctx_mp_python.py / 
> │ > arg: None
> │ > │ gamma_ / result: (1.00577030202902 + 
> 0.0059717824054102j) / 
> │ > count: 383
> │ > │ gamma__ / s: Complex { re: 0.99, im: 
> -0.01 } / result: 
> │ > Ok(Complex { re: 1.005770302029023, im: 
> 0.005971782405410201 })
> │ > │ zeta__ / s: Complex { re: 0.01, im: 0.01
> } / result: 
> │ > Ok(Complex { re: -0.5091873433665667, im: 
> -0.00939202213994577 }) / z: Complex {
> │ > re: 0.0, im: 0.0 }
> │ > │ __assert_lt / actual: 
> -0.5091873433665667 / expected: inf
> │ > │ __assert_lt / actual: 
> -0.00939202213994577 / expected: inf
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## test_imaginary_axis
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl test_imaginary_axis log = run_test log fun zeta, gamma 
> =>
> │ >     (join [[ 10; 20; 30; 40; 50; 60; 70; 80; 90; 100 ]])
> │ >     |> listm.iter fun s =>
> │ >         inl s = .^(0, s)
> │ >         inl result = zeta s
> │ >         result |> re |> _assert_ne 0
> │ >         result |> im |> _assert_ne 0
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > ///! rust -d num-complex pyo3
> │ > 
> │ > test_imaginary_axis true
> │ > 
> │ > ── [ 4.02s - return value ] 
> ────────────────────────────────────────────────────
> │ > │ zeta_ / s: (0.0, 10.0) / count: 0
> │ > │ call(zeta_) / f_code.co_name: zeta / 
> f_locals: s=10j, a=1, 
> │ > derivative=0, method=None, kwargs={} / f_lineno: 528 / 
> f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / 
> │ > arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: s=10j, a=1, 
> │ > derivative=0, method=None, kwargs={} / f_lineno: 530 / 
> f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / 
> │ > arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: s=10j, a=1, 
> │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 /
> f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / 
> │ > arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: s=10j, a=1, 
> │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 /
> f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / 
> │ > arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: s=10j, a=1, 
> │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 /
> f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / 
> │ > arg: None
> │ > │ call(zeta_) / f_code.co_name: f / 
> f_locals: x=10j, kwargs={},
> │ > name='zeta' / f_lineno: 989 / f_code.co_filename: 
> \mpmath\ctx_mp_python.py / 
> │ > f_back.f_lineno: 533 / f_back.f_code.co_filename: 
> \mpmath\functions\zeta.py / 
> │ > arg: None
> │ > │ line(zeta_) / f_code.co_name: f / 
> f_locals: x=10j, kwargs={},
> │ > name='zeta' / f_lineno: 990 / f_code.co_f...g: None
> │ > │ line(gamma_) / f_code.co_name: to_fixed 
> / f_locals: s=(0, 1, 
> │ > 0, 1), prec=83 / f_lineno: 511 / f_code.co_filename: 
> \mpmath\libmp\libmpf.py / 
> │ > f_back.f_lineno: 2031 / f_back.f_code.co_filename: 
> \mpmath\libmp\gammazeta.py / 
> │ > arg: None
> │ > │ line(gamma_) / f_code.co_name: to_fixed 
> / f_locals: s=(0, 1, 
> │ > 0, 1), prec=83, sign=0, man=1, exp=0, bc=1 / f_lineno: 512 
> / f_code.co_filename:
> │ > \mpmath\libmp\libmpf.py / f_back.f_lineno: 2031 / 
> f_back.f_code.co_filename: 
> │ > \mpmath\libmp\gammazeta.py / arg: None
> │ > │ line(gamma_) / f_code.co_name: to_fixed 
> / f_locals: s=(0, 1, 
> │ > 0, 1), prec=83, sign=0, man=1, exp=0, bc=1, offset=83 / 
> f_lineno: 513 / 
> │ > f_code.co_filename: \mpmath\libmp\libmpf.py / 
> f_back.f_lineno: 2031 / 
> │ > f_back.f_code.co_filename: \mpmath\libmp\gammazeta.py / 
> arg: None
> │ > │ line(gamma_) / f_code.co_name: to_fixed 
> / f_locals: s=(0, 1, 
> │ > 0, 1), prec=83, sign=0, man=1, exp=0, bc=1, offset=83 / 
> f_lineno: 517 / 
> │ > f_code.co_filename: \mpmath\libmp\libmpf.py / 
> f_back.f_lineno: 2031 / 
> │ > f_back.f_code.co_filename: \mpmath\libmp\gammazeta.py / 
> arg: None
> │ > │ gamma_ / result: (-1.51425318049776e-67 
> + 
> │ > 2.79082155561748e-69j) / count: 289
> │ > │ gamma__ / s: Complex { re: 1.0, im: 
> -100.0 } / result: 
> │ > Ok(Complex { re: -1.514253180497756e-67, im: 
> 2.7908215556174775e-69 })
> │ > │ zeta__ / s: Complex { re: 0.0, im: 100.0
> } / result: 
> │ > Ok(Complex { re: 6.51721042625301, im: 0.18128842533791736 
> }) / z: Complex { re:
> │ > 0.0, im: 0.0 }
> │ > │ __assert_ne / actual: 6.51721042625301 /
> expected: 0.0
> │ > │ __assert_ne / actual: 
> 0.18128842533791736 / expected: 0.0
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## test_critical_strip
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl test_critical_strip log = run_test log fun zeta, gamma 
> =>
> │ >     (join [[
> │ >         .^(0.5, 14.134725)
> │ >         .^(0.75, 20.5)
> │ >         .^(1.25, 30.1)
> │ >         .^(0.25, 40.0)
> │ >         .^(1.0, 50.0)
> │ >     ]])
> │ >     |> listm.iter fun s =>
> │ >         inl result = zeta s
> │ >         result |> re |> _assert_ne 0
> │ >         result |> im |> _assert_ne 0
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > ///! rust -d num-complex pyo3
> │ > 
> │ > test_critical_strip true
> │ > 
> │ > ── [ 3.67s - return value ] 
> ────────────────────────────────────────────────────
> │ > │ zeta_ / s: (0.5, 14.134725) / count: 0
> │ > │ call(zeta_) / f_code.co_name: zeta / 
> f_locals: 
> │ > s=(0.5+14.134725j), a=1, derivative=0, method=None, 
> kwargs={} / f_lineno: 528 / 
> │ > f_code.co_filename: \mpmath\functions\zeta.py / 
> f_back.f_lineno: 25 / 
> │ > f_back.f_code.co_filename:  / arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: 
> │ > s=(0.5+14.134725j), a=1, derivative=0, method=None, 
> kwargs={} / f_lineno: 530 / 
> │ > f_code.co_filename: \mpmath\functions\zeta.py / 
> f_back.f_lineno: 25 / 
> │ > f_back.f_code.co_filename:  / arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: 
> │ > s=(0.5+14.134725j), a=1, derivative=0, method=None, 
> kwargs={}, d=0 / f_lineno: 
> │ > 531 / f_code.co_filename: \mpmath\functions\zeta.py / 
> f_back.f_lineno: 25 / 
> │ > f_back.f_code.co_filename:  / arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: 
> │ > s=(0.5+14.134725j), a=1, derivative=0, method=None, 
> kwargs={}, d=0 / f_lineno: 
> │ > 532 / f_code.co_filename: \mpmath\functions\zeta.py / 
> f_back.f_lineno: 25 / 
> │ > f_back.f_code.co_filename:  / arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: 
> │ > s=(0.5+14.134725j), a=1, derivative=0, method=None, 
> kwargs={}, d=0 / f_lineno: 
> │ > 533 / f_code.co_filename: \mpmath\functions\zeta.py / 
> f_back.f_lineno: 25 / 
> │ > f_back.f_code.co_filename:  / arg: None
> │ > │ call(zeta_) / f_code.co_name: f / 
> f_locals: 
> │ > x=(0.5+14.134725j), kwargs={}, name='zeta' / f_lineno: 989 
> / f_code.co_filename:
> │ > \mpmath\ctx_mp_python.py / f_back.f_lineno: 533 / 
> f_back.f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / arg: None
> │ > │ line(zeta_) / f_code...210, 
> sim=241793223535862290161314995 /
> │ > f_lineno: 1648 / f_code.co_filename: 
> \mpmath\libmp\gammazeta.py / 
> │ > f_back.f_lineno: 2050 / f_back.f_code.co_filename: 
> \mpmath\libmp\gammazeta.py / 
> │ > arg: None
> │ > │ line(gamma_) / f_code.co_name: 
> complex_stirling_series / 
> │ > f_locals: x=0, y=-241785163922925834941235200, prec=82, 
> │ > _m=12089258196146291747061760000, tre=0, tim=396, 
> ure=-1934281311383406679530, 
> │ > uim=0, sre=4443714077719696485012210, 
> sim=241793223535862290161314995 / 
> │ > f_lineno: 1649 / f_code.co_filename: 
> \mpmath\libmp\gammazeta.py / 
> │ > f_back.f_lineno: 2050 / f_back.f_code.co_filename: 
> \mpmath\libmp\gammazeta.py / 
> │ > arg: None
> │ > │ line(gamma_) / f_code.co_name: 
> complex_stirling_series / 
> │ > f_locals: x=0, y=-241785163922925834941235200, prec=82, 
> │ > _m=12089258196146291747061760000, tre=0, tim=396, 
> ure=-1934281311383406679530, 
> │ > uim=0, sre=4443714077719696485012210, 
> sim=241793223535862290161314997 / 
> │ > f_lineno: 1650 / f_code.co_filename: 
> \mpmath\libmp\gammazeta.py / 
> │ > f_back.f_lineno: 2050 / f_back.f_code.co_filename: 
> \mpmath\libmp\gammazeta.py / 
> │ > arg: None
> │ > │ gamma_ / result: (2.63173210619768e-35 -│ > 8.16464935465334e-36j) / count: 262
> │ > │ gamma__ / s: Complex { re: 0.0, im: 
> -50.0 } / result: 
> │ > Ok(Complex { re: 2.6317321061976804e-35, im: 
> -8.164649354653339e-36 })
> │ > │ zeta__ / s: Complex { re: 1.0, im: 50.0 
> } / result: 
> │ > Ok(Complex { re: 0.44103873082309397, im: 0.281582455029683
> }) / z: Complex { 
> │ > re: 0.0, im: 0.0 }
> │ > │ __assert_ne / actual: 
> 0.44103873082309397 / expected: 0.0
> │ > │ __assert_ne / actual: 0.281582455029683 
> / expected: 0.0
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## 
> test_reflection_formula_for_specific_value
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl test_reflection_formula_for_specific_value log = 
> run_test log fun zeta, 
> │ > gamma =>
> │ >     (join [[
> │ >         .^(3, 4)
> │ >         .^(2.5, -3.5)
> │ >         .^(1.5, 2.5)
> │ >         .^(0.5, 14.134725)
> │ >     ]])
> │ >     |> listm.iter fun s =>
> │ >         inl lhs = zeta s
> │ >         inl reflection_coefficient =
> │ >             (.^(2, 0) .** s)
> │ >             .* (.^(pi, 0) .** (s .- .^(1, 0)))
> │ >             .* (.^(pi, 0) .* s ./ .^(2, 0) |> complex_sin)
> │ >             .* gamma (.^(1, 0) .- s)
> │ > 
> │ >         inl one_minus_s = .^(1 - re s, -(im s))
> │ >         inl rhs = reflection_coefficient .* zeta 
> one_minus_s
> │ > 
> │ >         re lhs - re rhs |> abs |> _assert_lt 0.0001
> │ >         im lhs - im rhs |> abs |> _assert_lt 0.0001
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > ///! rust -d num-complex pyo3
> │ > 
> │ > test_reflection_formula_for_specific_value true
> │ > 
> │ > ── [ 4.01s - return value ] 
> ────────────────────────────────────────────────────
> │ > │ zeta_ / s: (3.0, 4.0) / count: 0
> │ > │ call(zeta_) / f_code.co_name: zeta / 
> f_locals: s=(3+4j), a=1,
> │ > derivative=0, method=None, kwargs={} / f_lineno: 528 / 
> f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / 
> │ > arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: s=(3+4j), a=1,
> │ > derivative=0, method=None, kwargs={} / f_lineno: 530 / 
> f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / 
> │ > arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: s=(3+4j), a=1,
> │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 /
> f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / 
> │ > arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: s=(3+4j), a=1,
> │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 /
> f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / 
> │ > arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: s=(3+4j), a=1,
> │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 /
> f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / 
> │ > arg: None
> │ > │ call(zeta_) / f_code.co_name: f / 
> f_locals: x=(3+4j), 
> │ > kwargs={}, name='zeta' / f_lineno: 989 / 
> f_code.co_filename: 
> │ > \mpmath\ctx_mp_python.py / f_back.f_lineno: 533 / 
> f_back.f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / arg: None
> │ > │ line(zeta_) / f_code.co_name: f / 
> f_locals: x=(3+4j), 
> │ > kwargs={}, name='zeta' / f_linen...045 / 
> f_code.co_filename: 
> │ > \mpmath\libmp\gammazeta.py / f_back.f_lineno: 1007 / 
> f_back.f_code.co_filename: 
> │ > \mpmath\ctx_mp_python.py / arg: None
> │ > │ line(gamma_) / f_code.co_name: mpc_gamma
> / f_locals: z=((0, 
> │ > 1, -1, 1), (0, 3978571390186527, -48, 52)), prec=53, 
> rnd='n', type=0, a=(0, 1, 
> │ > -1, 1), b=(0, 3978571390186527, -48, 52), asign=0, aman=1, 
> aexp=-1, abc=1, 
> │ > bsign=0, bman=3978571390186527, bexp=-48, bbc=52, wp=79, 
> amag=0, bmag=4, mag=4, 
> │ > an=0, bn=14, absn=14j, gamma_size=56, need_reflection=0, 
> zorig=((0, 1, -1, 1), 
> │ > (0, 3978571390186527, -48, 52)), yfinal=0, balance_prec=0, 
> n_for_stirling=15, 
> │ > need_reduction=True, afix=2115620184325601055735808, 
> │ > bfix=8543917002826194402410496, r=0, zprered=((0, 1, -1, 
> 1), (0, 
> │ > 3978571390186527, -48, 52)), d=5, 
> rre=-542313259704087430481959845, 
> │ > one=604462909807314587353088, 
> rim=-1657865507045117397880679064, k=2 / f_lineno:
> │ > 2043 / f_code.co_filename: \mpmath\libmp\gammazeta.py / 
> f_back.f_lineno: 1007 / 
> │ > f_back.f_code.co_filename: \mpmath\ctx_mp_python.py / arg: 
> None
> │ > │ gamma_ / result: (-1.4455538437607e-10 -│ > 5.52278876877407e-10j) / count: 318
> │ > │ gamma__ / s: Complex { re: 0.5, im: 
> 14.134725 } / result: 
> │ > Ok(Complex { re: -1.4455538437606964e-10, im: 
> -5.522788768774066e-10 })
> │ > │ zeta__ / s: Complex { re: 0.5, im: 
> -14.134725 } / result: 
> │ > Ok(Complex { re: 1.7674298413849186e-8, im: 
> 1.1102028930923156e-7 }) / z: 
> │ > Complex { re: 0.0, im: 0.0 }
> │ > │ __assert_lt / actual: 
> 4.499862532288471e-22 / expected: 
> │ > 0.0001
> │ > │ __assert_lt / actual: 
> 1.4558378780933287e-22 / expected: 
> │ > 0.0001
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## test_euler_product_formula
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl test_euler_product_formula log = run_test log fun zeta,
> gamma =>
> │ >     inl s_values = join [[ 2; 2.5; 3; 3.5; 4; 4.5; 5 ]]
> │ >     inl primes = join [[ 2; 3; 5; 7; 11; 13; 17; 19; 23; 
> 29; 31; 37; 41; 43; 47;
> │ > 53; 59; 61; 67; 71 ]]
> │ >     s_values
> │ >     |> listm.iter fun s_re =>
> │ >         inl s = .^(s_re, 0)
> │ >         inl product =
> │ >             (1, primes)
> │ >             ||> listm.fold fun acc x =>
> │ >                 acc * 1 / (1 - x ** -s_re)
> │ > 
> │ >         inl result = zeta s
> │ >         re result - product |> abs |> _assert_lt 0.01
> │ >         result |> im |> _assert_lt 0.01
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > ///! rust -d num-complex pyo3
> │ > 
> │ > test_euler_product_formula true
> │ > 
> │ > ── [ 3.57s - return value ] 
> ────────────────────────────────────────────────────
> │ > │ zeta_ / s: (2.0, 0.0) / count: 0
> │ > │ call(zeta_) / f_code.co_name: zeta / 
> f_locals: s=(2+0j), a=1,
> │ > derivative=0, method=None, kwargs={} / f_lineno: 528 / 
> f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / 
> │ > arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: s=(2+0j), a=1,
> │ > derivative=0, method=None, kwargs={} / f_lineno: 530 / 
> f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / 
> │ > arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: s=(2+0j), a=1,
> │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 /
> f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / 
> │ > arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: s=(2+0j), a=1,
> │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 /
> f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / 
> │ > arg: None
> │ > │ line(zeta_) / f_code.co_name: zeta / 
> f_locals: s=(2+0j), a=1,
> │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 /
> f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / 
> │ > arg: None
> │ > │ call(zeta_) / f_code.co_name: f / 
> f_locals: x=(2+0j), 
> │ > kwargs={}, name='zeta' / f_lineno: 989 / 
> f_code.co_filename: 
> │ > \mpmath\ctx_mp_python.py / f_back.f_lineno: 533 / 
> f_back.f_code.co_filename: 
> │ > \mpmath\functions\zeta.py / arg: None
> │ > │ line(zeta_) / f_code.co_name: f / 
> f_locals: x=(2+0j), 
> │ > kwargs={}, name='zeta' / f_linen...k.f_lineno: 985 / 
> f_back.f_code.co_filename: 
> │ > \mpmath\libmp\gammazeta.py / arg: None
> │ > │ line(zeta_) / f_code.co_name: 
> mpf_zeta_int / f_locals: s=5, 
> │ > prec=53, rnd='n', wp=73, m=19.25, needed_terms=623488, 
> n=33, d=[1, 2179, 792067,
> │ > 115062531, 8930212611, 429314925315, 13983537177347, 
> 327666966438659, 
> │ > 5764846406968067, 78615943485956867, 851604426176701187, 
> 7470527451121689347, 
> │ > 53898915046387983107, 323897845985013506819, 
> 1638178356374090130179, 
> │ > 7034281785235908174595, 25833609859980306522883, 
> 81661917475887913739011, 
> │ > 223448095548034217779971, 532029677981012660429571, 
> 1108048631855905753375491, 
> │ > 2029946562680066824315651, 3292927237466655352791811, 
> 4769455369342763680768771,
> │ > 6235511670496346417767171, 7463408621503347142796035, 
> 8322751284048216428487427,
> │ > 8818779962777819524211459, 9050689474911140452082435, 
> 9136270117622166323831555,
> │ > 9160252037839493347779331, 9165045885455648617505539, 
> 9165654628010081032708867,
> │ > 9165691521498228451812099], 
> t=-84153986440240940095109733900764881301998910956, 
> │ > k=26 / f_lineno: 954 / f_code.co_filename: 
> \mpmath\libmp\gammazeta.py / 
> │ > f_back.f_lineno: 985 / f_back.f_code.co_filename: 
> \mpmath\libmp\gammazeta.py / 
> │ > arg: None
> │ > │ zeta_ / result: (1.03692775514337 + 
> 0.0j) / count: 228
> │ > │ zeta / count: 0 / s: Complex { re: 5.0, 
> im: 0.0 }
> │ > │ zeta__ / s: Complex { re: 5.0, im: 0.0 }
> / result: Ok(Complex
> │ > { re: 1.03692775514337, im: 0.0 }) / z: Complex { re: NaN, 
> im: NaN }
> │ > │ __assert_lt / actual: 
> 2.0033654735129858e-9 / expected: 0.01
> │ > │ __assert_lt / actual: 0.0 / expected: 
> 0.01
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## graph
> │ > 
> │ > ── mermaid 
> ─────────────────────────────────────────────────────────────────────
> │ > │ <div class="mermaidMarkdownContainer" 
> │ > style="background-color:white">
> │ > │ <link rel="stylesheet" 
> │ > 
> href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.min.css"
> │ > >
> │ > │ <div 
> id="c53c709775fc4e3e8482017fa5138fb4"></div>
> │ > │ <script type="module">
> │ > │ 
> │ > │             import mermaid from 
> │ > 
> 'https://cdn.jsdelivr.net/npm/mermaid@10.6.1/dist/mermaid.esm.min.mjs';
> │ > │             let renderTarget = 
> │ > 
> document.getElementById('c53c709775fc4e3e8482017fa5138fb4');
> │ > │             try {
> │ > │                 const {svg, 
> bindFunctions} = await 
> │ > mermaid.mermaidAPI.render( 
> │ > │                     
> │ > 'mermaid_c53c709775fc4e3e8482017fa5138fb4', 
> │ > │                     `graph TD
> │ > │     zeta("zeta()") --> convert
> │ > │     zeta --> f["f()"]
> │ > │     f --> mpc_f["mpc_zeta()"]
> │ > │     f --> mpf_f["mpf_zeta()"]
> │ > │     convert --> from_float
> │ > │     from_float --> from_man_exp
> │ > │     from_man_exp --> python_bitcount
> │ > │     python_bitcount --> _normalize
> │ > │     _normalize --> make_mpc
> │ > │     make_mpc --> 
> mpc_zeta["mpc_zeta()"]
> │ > │     mpc_zeta --> 
> mpf_zeta["mpf_zeta()"]
> │ > │     mpf_zeta --> to_int
> │ > │     to_int --> 
> mpf_zeta_int["mpf_zeta_int()"]
> │ > │     mpf_zeta_int --> 
> borwein_coefficients
> │ > │     borwein_coefficients --> 
> │ > from_man_exp_2("from_man_exp()")
> │ > │     from_man_exp_2 --> 
> │ > python_bitcount_2("python_bitcount()")
> │ > │     python_bitcount_2 --> 
> _normalize_2("_normalize()")
> │ > │     _normalize_2 --> 
> make_mpc_2("make_mpc()")
> │ > │     make_mpc_2 --> stop_trace
> │ > │     mpf_zeta_int --> mpf_bernoulli
> │ > │     mpf_bernoulli --> bernoulli_size
> │ > │     bernoulli_size --> mpf_rdiv_int
> │ > │     mpf_rdiv_int --> 
> python_bitcount_3("python_bitcount()")
> │ > │     python_bitcount_3 --> _normalize1
> │ > │     _normalize1 --> 
> from_man_exp_3("from_man_exp()")
> │ > │     from_man_exp_3 --> 
> _normalize_3("_normalize()")
> │ > │     _normalize_3 --> mpf_sub
> │ > │     mpf_sub --> mpf_add
> │ > │     mpf_add --> mpf_neg
> │ > │     mpf_neg --> 
> _normalize1_2("_normalize1()")
> │ > │     _normalize1_2 --> from_int
> │ > │     from_int --> mpf_div
> │ > │     mpf_div --> 
> python_bitcount_4("python_bitcount()")
> │ > │     python_bitcount_4 --> 
> _normalize1_3("_normalize1()")
> │ > │     _normalize1_3 --> 
> make_mpc_3("make_mpc()")
> │ > │     make_mpc_3 --> 
> final_stop["stop_trace()"]`);
> │ > │                 renderTarget.innerHTML
> = svg;
> │ > │                 
> bindFunctions?.(renderTarget);
> │ > │             }
> │ > │             catch (error) {
> │ > │                 console.log(error);
> │ > │             }
> │ > │ </script>
> │ > │ </div>
> │ > │ 
> │ > 
> │ > ── mermaid 
> ─────────────────────────────────────────────────────────────────────
> │ > │ <div class="mermaidMarkdownContainer" 
> │ > style="background-color:white">
> │ > │ <link rel="stylesheet" 
> │ > 
> href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.min.css"
> │ > >
> │ > │ <div 
> id="b52d043ff3d94c57b8ff436643e31fb9"></div>
> │ > │ <script type="module">
> │ > │ 
> │ > │             import mermaid from 
> │ > 
> 'https://cdn.jsdelivr.net/npm/mermaid@10.6.1/dist/mermaid.esm.min.mjs';
> │ > │             let renderTarget = 
> │ > 
> document.getElementById('b52d043ff3d94c57b8ff436643e31fb9');
> │ > │             try {
> │ > │                 const {svg, 
> bindFunctions} = await 
> │ > mermaid.mermaidAPI.render( 
> │ > │                     
> │ > 'mermaid_b52d043ff3d94c57b8ff436643e31fb9', 
> │ > │                     `graph TD
> │ > │     zeta_rust("zeta() - Rust") --> 
> num_traits("num-traits")
> │ > │     zeta_rust --> 
> num_bigint("num-bigint")
> │ > │     zeta_rust --> 
> rust_decimal("rust_decimal for 
> │ > precision")
> │ > │     zeta_rust --> error_handling("Rust
> Error Handling")
> │ > │ 
> │ > │     num_traits --> 
> num_traits_usage("Use for common 
> │ > traits")
> │ > │     num_bigint --> 
> bigint_operations("Arbitrary-precision 
> │ > arithmetic operations")
> │ > │     rust_decimal --> 
> decimal_operations("High-precision 
> │ > decimal operations")
> │ > │     error_handling --> 
> result_type("Use Result<T, E> for 
> │ > error handling")
> │ > │ 
> │ > │     bigint_operations --> 
> convert_rust("convert() - Rust")
> │ > │     bigint_operations --> 
> normalize_rust("_normalize() - 
> │ > Rust")
> │ > │ 
> │ > │     convert_rust --> 
> from_float_rust("from_float() - Rust")
> │ > │     from_float_rust --> 
> from_man_exp_rust("from_man_exp() -
> │ > Rust")
> │ > │     from_man_exp_rust --> 
> bitcount_rust("bitcount() - 
> │ > Rust")
> │ > │     bitcount_rust --> normalize_rust
> │ > │     normalize_rust --> 
> mpc_zeta_rust("mpc_zeta() - Rust")
> │ > │     mpc_zeta_rust --> 
> mpf_zeta_rust("mpf_zeta() - Rust")
> │ > │     mpf_zeta_rust --> 
> to_int_rust("to_int() - Rust")
> │ > │     to_int_rust --> 
> mpf_zeta_int_rust("mpf_zeta_int() - 
> │ > Rust")
> │ > │ 
> │ > │     mpf_zeta_int_rust --> 
> │ > borwein_coefficients_rust("borwein_coefficients() - Rust")
> │ > │     borwein_coefficients_rust --> 
> │ > from_man_exp_rust_2("from_man_exp() - Rust")
> │ > │     from_man_exp_rust_2 --> 
> bitcount_rust_2("bitcount() - 
> │ > Rust")
> │ > │     bitcount_rust_2 --> 
> normalize_rust_2("_normalize() - 
> │ > Rust")
> │ > │     normalize_rust_2 --> 
> make_mpc_rust("make_mpc() - Rust")
> │ > │ 
> │ > │     mpf_zeta_int_rust --> 
> │ > mpf_bernoulli_rust("mpf_bernoulli() - Rust")
> │ > │     mpf_bernoulli_rust --> 
> │ > bernoulli_size_rust("bernoulli_size() - Rust")
> │ > │     bernoulli_size_rust --> 
> │ > mpf_rdiv_int_rust("mpf_rdiv_int() - Rust")
> │ > │     mpf_rdiv_int_rust --> 
> bitcount_rust_3("bitcount() - 
> │ > Rust")
> │ > │     bitcount_rust_3 --> 
> normalize1_rust("_normalize1() - 
> │ > Rust")
> │ > │     normalize1_rust --> 
> from_man_exp_rust_3("from_man_exp()
> │ > - Rust")
> │ > │     from_man_exp_rust_3 --> 
> normalize_rust_3("_normalize() 
> │ > - Rust")
> │ > │     normalize_rust_3 --> 
> mpf_sub_rust("mpf_sub() - Rust")
> │ > │     mpf_sub_rust --> 
> mpf_add_rust("mpf_add() - Rust")
> │ > │     mpf_add_rust --> 
> mpf_neg_rust("mpf_neg() - Rust")
> │ > │     mpf_neg_rust --> 
> normalize1_rust_2("_normalize1() - 
> │ > Rust")
> │ > │     normalize1_rust_2 --> 
> from_int_rust("from_int() - 
> │ > Rust")
> │ > │     from_int_rust --> 
> mpf_div_rust("mpf_div() - Rust")
> │ > │     mpf_div_rust --> 
> bitcount_rust_4("bitcount() - Rust")
> │ > │     bitcount_rust_4 --> 
> normalize1_rust_3("_normalize1() - 
> │ > Rust")
> │ > │ 
> │ > │     style zeta_rust 
> fill:#f9f,stroke:#333,stroke-width:4px
> │ > │     style num_traits 
> fill:#bbf,stroke:#333,stroke-width:2px
> │ > │     style num_bigint 
> fill:#bbf,stroke:#333,stroke-width:2px
> │ > │     style rust_decimal 
> │ > fill:#bbf,stroke:#333,stroke-width:2px
> │ > │     style error_handling 
> │ > fill:#bbf,stroke:#333,stroke-width:2px
> │ > │     style bigint_operations 
> │ > fill:#bfb,stroke:#333,stroke-width:2px
> │ > │     style decimal_operations 
> │ > fill:#bfb,stroke:#333,stroke-width:2px
> │ > │     style result_type 
> │ > fill:#bfb,stroke:#333,stroke-width:2px`);
> │ > │                 renderTarget.innerHTML
> = svg;
> │ > │                 
> bindFunctions?.(renderTarget);
> │ > │             }
> │ > │             catch (error) {
> │ > │                 console.log(error);
> │ > │             }
> │ > │ </script>
> │ > │ </div>
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## tests
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl tests () =
> │ >     testing.run_tests_log {
> │ >         test_zeta_at_known_values_
> │ >         test_zeta_at_2_minus2
> │ >         test_trivial_zero_at_negative_even___
> │ >         test_non_trivial_zero___
> │ >         test_real_part_greater_than_one___
> │ >         test_zeta_at_1___
> │ >         test_symmetry_across_real_axis___
> │ >         test_behavior_near_origin___
> │ >         test_imaginary_axis
> │ >         test_critical_strip
> │ >         test_reflection_formula_for_specific_value
> │ >         test_euler_product_formula
> │ >     }
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > ///! _
> │ > 
> │ > inl main (_args : array_base string) =
> │ >     inl value = 1i32
> │ >     console.write_line ($'$"value: {!value}"' : string)
> │ >     0i32
> │ > 
> │ > inl main () =
> │ >     $'let tests () = !tests ()' : ()
> │ >     $'let main args = !main args' : ()
> │ 00:01:14 v #3 runtime.execute_with_options / result / {
> exit_code = 0; std_trace_length = 76866 }
> │ 00:01:14 d #4 runtime.execute_with_options / { 
> file_name = jupyter; arguments = ["nbconvert", 
> "c:/home/git/polyglot/lib/math/math.dib.ipynb", "--to", "html", 
> "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert 
> "c:/home/git/polyglot/lib/math/math.dib.ipynb" --to html 
> --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = 
> Array(MutCell([])); on_line = None; stdin = None; trace = true; 
> working_directory = None } }
> │ 00:01:15 v #5 ! [NbConvertApp] Converting notebook 
> c:/home/git/polyglot/lib/math/math.dib.ipynb to html
> │ 00:01:15 v #6 ! 
> C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.
> py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a 
> hard error in future nbformat versions. You may want to use `normalize()` on 
> your notebooks before validations (available since nbformat 5.1.4). Previous 
> versions of nbformat are fixing this issue transparently, and will stop doing so
> in the future.
> │ 00:01:15 v #7 !   validate(nb)
> │ 00:01:16 v #8 ! 
> C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\
> highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python
> 3
> │ 00:01:16 v #9 !   return _pygments_highlight(
> │ 00:01:18 v #10 ! [NbConvertApp] Writing 7171318 bytes 
> to c:\home\git\polyglot\lib\math\math.dib.html
> │ 00:01:18 v #11 runtime.execute_with_options / result / 
> { exit_code = 0; std_trace_length = 847 }
> │ 00:01:18 d #12 spiral.run / dib / jupyter nbconvert / {
> exit_code = 0; jupyter_result_length = 847 }
> │ 00:01:18 d #13 runtime.execute_with_options / { 
> file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 
> 'c:/home/git/polyglot/lib/math/math.dib.html'; (Get-Content $path -Raw) -replace
> '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | 
> Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 
> 'c:/home/git/polyglot/lib/math/math.dib.html'; (Get-Content $path -Raw) -replace
> '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | 
> Set-Content $path"; cancellation_token = None; environment_variables = 
> Array(MutCell([])); on_line = None; stdin = None; trace = true; 
> working_directory = None } }
> │ 00:01:19 v #14 runtime.execute_with_options / result / 
> { exit_code = 0; std_trace_length = 0 }
> │ 00:01:19 d #15 spiral.run / dib / html cell ids / { 
> exit_code = 0; pwsh_replace_html_result_length = 0 }
> │ 00:01:19 d #16 spiral.run / dib / { exit_code = 0; 
> result_length = 77772 }
> │ 00:00:00 d #1 writeDibCode / output: Spi / path: 
> math.dib
> │ 00:00:00 d #2 parseDibCode / output: Spi / file: 
> math.dib
> │ 00:00:00 d #1 persistCodeProject / packages: 
> [Fable.Core] / modules: [deps/spiral/lib/spiral/common.fsx; 
> deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: 
> math / hash:  / code.Length: 217639
> │ 00:00:00 d #2 buildProject / fullPath: 
> c:\home\git\polyglot\target\Builder\math\math.fsproj
> │ 00:00:00 d #1 runtime.execute_with_options_async / { 
> file_name = dotnet; arguments = US5_0
> │   "publish 
> "c:/home/git\polyglot\target/Builder\math\math.fsproj" --configuration Release 
> --output "C:\home\git\polyglot\lib\math\dist" --runtime linux-x64"; options = { 
> command = dotnet publish "c:/home/git\polyglot\target/Builder\math\math.fsproj" 
> --configuration Release --output "C:\home\git\polyglot\lib\math\dist" --runtime 
> linux-x64; cancellation_token = None; environment_variables = [||]; on_line = 
> None; stdin = None; trace = true; working_directory = Some 
> "c:\home\git\polyglot\target\Builder\math" } }
> │ 00:00:01 v #2 >   Determining projects to restore...
> │ 00:00:01 v #3 >   Paket version 
> 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
> │ 00:00:01 v #4 >   The last full restore is still up to 
> date. Nothing left to do.
> │ 00:00:01 v #5 >   Total time taken: 0 milliseconds
> │ 00:00:02 v #6 >   Restored 
> c:\home\git\polyglot\target\Builder\math\math.fsproj (in 252 ms).
> │ 00:00:15 v #7 >   math -> 
> c:\home\git\polyglot\target\Builder\math\bin\Release\net9.0\linux-x64\math.dll
> │ 00:00:17 v #8 >   math -> 
> C:\home\git\polyglot\lib\math\dist\
> │ 00:00:17 d #9 runtime.execute_with_options_async / { 
> exit_code = 0; output_length = 411; options = { command = dotnet publish 
> "c:/home/git\polyglot\target/Builder\math\math.fsproj" --configuration Release 
> --output "C:\home\git\polyglot\lib\math\dist" --runtime linux-x64; 
> cancellation_token = None; environment_variables = [||]; on_line = None; stdin =
> None; trace = true; working_directory = Some 
> "c:\home\git\polyglot\target\Builder\math" } }
> │ 00:00:17 d #10 runtime.execute_with_options_async / { 
> file_name = dotnet; arguments = US5_0
> │   "publish 
> "c:/home/git\polyglot\target/Builder\math\math.fsproj" --configuration Release 
> --output "C:\home\git\polyglot\lib\math\dist" --runtime win-x64"; options = { 
> command = dotnet publish "c:/home/git\polyglot\target/Builder\math\math.fsproj" 
> --configuration Release --output "C:\home\git\polyglot\lib\math\dist" --runtime 
> win-x64; cancellation_token = None; environment_variables = [||]; on_line = 
> None; stdin = None; trace = true; working_directory = Some 
> "c:\home\git\polyglot\target\Builder\math" } }
> │ 00:00:18 v #11 >   Determining projects to restore...
> │ 00:00:18 v #12 >   Paket version 
> 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
> │ 00:00:19 v #13 >   The last full restore is still up to 
> date. Nothing left to do.
> │ 00:00:19 v #14 >   Total time taken: 0 milliseconds
> │ 00:00:19 v #15 >   Restored 
> c:\home\git\polyglot\target\Builder\math\math.fsproj (in 240 ms).
> │ 00:00:32 v #16 >   math -> 
> c:\home\git\polyglot\target\Builder\math\bin\Release\net9.0\win-x64\math.dll
> │ 00:00:34 v #17 >   math -> 
> C:\home\git\polyglot\lib\math\dist\
> │ 00:00:34 d #18 runtime.execute_with_options_async / { 
> exit_code = 0; output_length = 409; options = { command = dotnet publish 
> "c:/home/git\polyglot\target/Builder\math\math.fsproj" --configuration Release 
> --output "C:\home\git\polyglot\lib\math\dist" --runtime win-x64; 
> cancellation_token = None; environment_variables = [||]; on_line = None; stdin =
> None; trace = true; working_directory = Some 
> "c:\home\git\polyglot\target\Builder\math" } }
> │ spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: 
> C:\home\git\polyglot\target\Builder\math
> │ polyglot/scripts/core.ps1/ResolveLink #4 / Path: 
> C:\home\git\polyglot\deps\spiral\lib\spiral/../../deps/polyglot / parent_target:
> / path_target: C:\home\git\polyglot / parent: 
> C:\home\git\polyglot\deps\spiral\lib\spiral\..\..\deps / End: polyglot
> │ spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: 
> C:\home\git\polyglot\target\Builder\math / ProjectName: math / Language: rs / 
> Runtime:  / root: C:\home\git\polyglot
> │ Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha)
> │ 
> │ Thanks to the contributor! @davidtme
> │ Stand with Ukraine! https://standwithukraine.com.ua/
> │ 
> │ Parsing target\Builder\math\math.fsproj...
> │ Retrieving project options from cache, in case of issues run 
> `dotnet fable clean` or try `--noCache` option.
> │ Project and references (14 source files) parsed in 165ms
> │ 
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this 
> assembly. Original error: The exception has been reported. This internal 
> exception should now be caught at an error recovery point on the stack. Original
> message: The type 'MetadataUpdateHandlerAttribute' is required here and is 
> unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping 
> this assembly. Original error: The exception has been reported. This internal 
> exception should now be caught at an error recovery point on the stack. Original
> message: The type 'MetadataUpdateHandlerAttribute' is required here and is 
> unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable 
> plugins, skipping this assembly. Original error: The exception has been 
> reported. This internal exception should now be caught at an error recovery 
> point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' 
> is required here and is unavailable. You must add a reference to assembly 
> 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, 
> PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, 
> skipping this assembly. Original error: The exception has been reported. This 
> internal exception should now be caught at an error recovery point on the stack.
> Original message: The type 'MetadataUpdateHandlerAttribute' is required here and
> is unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this 
> assembly. Original error: The exception has been reported. This internal 
> exception should now be caught at an error recovery point on the stack. Original
> message: The type 'MetadataUpdateHandlerAttribute' is required here and is 
> unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping 
> this assembly. Original error: The exception has been reported. This internal 
> exception should now be caught at an error recovery point on the stack. Original
> message: The type 'MetadataUpdateHandlerAttribute' is required here and is 
> unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, 
> skipping this assembly. Original error: The exception has been reported. This 
> internal exception should now be caught at an error recovery point on the stack.
> Original message: The type 'MetadataUpdateHandlerAttribute' is required here and
> is unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, 
> skipping this assembly. Original error: The exception has been reported. This 
> internal exception should now be caught at an error recovery point on the stack.
> Original message: The type 'MetadataUpdateHandlerAttribute' is required here and
> is unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable 
> plugins, skipping this assembly. Original error: The exception has been 
> reported. This internal exception should now be caught at an error recovery 
> point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' 
> is required here and is unavailable. You must add a reference to assembly 
> 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, 
> PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping
> this assembly. Original error: The exception has been reported. This internal 
> exception should now be caught at an error recovery point on the stack. Original
> message: The type 'MetadataUpdateHandlerAttribute' is required here and is 
> unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ 
> │ Started Fable compilation...
> │ 
> │ Fable compilation finished in 12092ms
> │ 
> │ .\deps\spiral\lib\spiral\sm.fsx(560,0): (560,2) warning 
> FABLE: For Rust, support for F# static and module do bindings is disabled by 
> default. It can be enabled with the 'static_do_bindings' feature. Use at your 
> own risk!
> │ .\deps\spiral\lib\spiral\common.fsx(2193,0): (2193,2) warning
> FABLE: For Rust, support for F# static and module do bindings is disabled by 
> default. It can be enabled with the 'static_do_bindings' feature. Use at your 
> own risk!
> │ .\deps\spiral\lib\spiral\async_.fsx(250,0): (250,2) warning 
> FABLE: For Rust, support for F# static and module do bindings is disabled by 
> default. It can be enabled with the 'static_do_bindings' feature. Use at your 
> own risk!
> │ .\deps\spiral\lib\spiral\crypto.fsx(2420,0): (2420,2) warning
> FABLE: For Rust, support for F# static and module do bindings is disabled by 
> default. It can be enabled with the 'static_do_bindings' feature. Use at your 
> own risk!
> │ .\deps\spiral\lib\spiral\threading.fsx(139,0): (139,2) 
> warning FABLE: For Rust, support for F# static and module do bindings is 
> disabled by default. It can be enabled with the 'static_do_bindings' feature. 
> Use at your own risk!
> │ .\deps\spiral\lib\spiral\date_time.fsx(2546,0): (2546,2) 
> warning FABLE: For Rust, support for F# static and module do bindings is 
> disabled by default. It can be enabled with the 'static_do_bindings' feature. 
> Use at your own risk!
> │ .\deps\spiral\lib\spiral\platform.fsx(121,0): (121,2) warning
> FABLE: For Rust, support for F# static and module do bindings is disabled by 
> default. It can be enabled with the 'static_do_bindings' feature. Use at your 
> own risk!
> │ .\deps\spiral\lib\spiral\networking.fsx(5011,0): (5011,2) 
> warning FABLE: For Rust, support for F# static and module do bindings is 
> disabled by default. It can be enabled with the 'static_do_bindings' feature. 
> Use at your own risk!
> │ .\deps\spiral\lib\spiral\trace.fsx(2226,0): (2226,2) warning 
> FABLE: For Rust, support for F# static and module do bindings is disabled by 
> default. It can be enabled with the 'static_do_bindings' feature. Use at your 
> own risk!
> │ .\deps\spiral\lib\spiral\runtime.fsx(7234,0): (7234,2) 
> warning FABLE: For Rust, support for F# static and module do bindings is 
> disabled by default. It can be enabled with the 'static_do_bindings' feature. 
> Use at your own risk!
> │ .\deps\spiral\lib\spiral\file_system.fsx(18760,0): (18760,2) 
> warning FABLE: For Rust, support for F# static and module do bindings is 
> disabled by default. It can be enabled with the 'static_do_bindings' feature. 
> Use at your own risk!
> │ .\target\Builder\math\math.fs(46,0): (48,3) warning FABLE: 
> For Rust, support for F# static and module do bindings is disabled by default. 
> It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
> │ polyglot/lib/math/build.ps1 / path: 
> C:\home\git\polyglot\target\Builder\math/target/rs/math.rs
> │    Compiling fable_library_rust v0.1.0 
> (C:\home\git\polyglot\lib\rust\fable\fable_modules\fable-library-rust)
> │    Compiling math v0.0.1 
> (C:\home\git\polyglot\lib\math)
> │     Finished `release` profile [optimized] target(s) in 
> 21.14s
> │      Running unittests math.rs 
> (C:\home\git\polyglot\workspace\target\release\deps\math-7035482ad4544907.exe)
> │ 
> │ running 12 tests
> │ test module_728458a3::Math::test_behavior_near_origin___ ... 
> ok
> │ test 
> module_728458a3::Math::test_reflection_formula_for_specific_value ... ok
> │ test module_728458a3::Math::test_euler_product_formula ... ok
> │ test module_728458a3::Math::test_symmetry_across_real_axis___
> ... ok
> │ test module_728458a3::Math::test_non_trivial_zero___ ... ok
> │ test module_728458a3::Math::test_critical_strip ... ok
> │ test 
> module_728458a3::Math::test_real_part_greater_than_one___ ... ok
> │ test module_728458a3::Math::test_zeta_at_2_minus2 ... ok
> │ test module_728458a3::Math::test_imaginary_axis ... ok
> │ test module_728458a3::Math::test_zeta_at_1___ ... ok
> │ test module_728458a3::Math::test_zeta_at_known_values_ ... ok
> │ test 
> module_728458a3::Math::test_trivial_zero_at_negative_even___ ... ok
> │ 
> │ test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 
> 0 filtered out; finished in 0.96s
> │ 
> │ polyglot/lib/math/build.ps1 / $targetDir: 
> C:\home\git\polyglot\target\Builder\math / $projectName: math / $env:CI:''
> │ 
> 
> ── pwsh ────────────────────────────────────────────────────────────────────────
> { pwsh ../apps/plot/build.ps1 } | Invoke-Block
> 
> ── [ 28.41s - stdout ] ─────────────────────────────────────────────────────────
> │    Compiling fable_library_rust v0.1.0 
> (C:\home\git\polyglot\lib\rust\fable\fable_modules\fable-library-rust)
> │    Compiling plot v0.0.1 
> (C:\home\git\polyglot\apps\plot)
> │ warning: unnecessary parentheses around function 
> argument
> │    --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:668:
> 33
> │     |
> │ 668 |         let v3: string = 
> append((v0_1.l0.get().clone()), (v1_1));
> │     |                                 ^
> ^
> │     |
> │     = note: `#[warn(unused_parens)]` on by default
> │ help: remove these parentheses
> │     |
> │ 668 -         let v3: string = 
> append((v0_1.l0.get().clone()), (v1_1));
> │ 668 +         let v3: string = 
> append(v0_1.l0.get().clone(), (v1_1));
> │     |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │    --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:668:
> 58
> │     |
> │ 668 |         let v3: string = 
> append((v0_1.l0.get().clone()), (v1_1));
> │     |
> ^    ^
> │     |
> │ help: remove these parentheses
> │     |
> │ 668 -         let v3: string = 
> append((v0_1.l0.get().clone()), (v1_1));
> │ 668 +         let v3: string = 
> append((v0_1.l0.get().clone()), v1_1);
> │     |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │    --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:837:33[0
> m
> │     |
> │ 837 |         let v3: string = 
> append((v0_1.l0.get().clone()), (v1_1));
> │     |                                 ^
> ^
> │     |
> │ help: remove these parentheses
> │     |
> │ 837 -         let v3: string = 
> append((v0_1.l0.get().clone()), (v1_1));
> │ 837 +         let v3: string = 
> append(v0_1.l0.get().clone(), (v1_1));
> │     |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │    --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:837:58[0
> m
> │     |
> │ 837 |         let v3: string = 
> append((v0_1.l0.get().clone()), (v1_1));
> │     |
> ^    ^
> │     |
> │ help: remove these parentheses
> │     |
> │ 837 -         let v3: string = 
> append((v0_1.l0.get().clone()), (v1_1));
> │ 837 +         let v3: string = 
> append((v0_1.l0.get().clone()), v1_1);
> │     |
> │ 
> │ warning: unnecessary parentheses around `break` value
> │     --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1098:30[
> 0m
> │      |
> │ 1098 |             break '_method28 (match 
> v0_1.get().clone().as_ref() {
> │      |                              ^
> │ ...
> │ 1136 |             });
> │      |              ^
> │      |
> │ help: remove these parentheses
> │      |
> │ 1098 ~             break '_method28 match 
> v0_1.get().clone().as_ref() {
> │ 1099 |                 Runtime::UH0::UH0_0 => 
> (v1_1.get().clone(), v2_1.get().clone(), v3.get().clone()),
> │  ...
> │ 1135 |                 }
> │ 1136 ~             };
> │      |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │     --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1143:62[
> 0m
> │      |
> │ 1143 |             (Runtime::method29(v0_1, (v1_1) + 
> 1_i32))(append((v2_1), string(" ")))
> │      |
> ^    ^
> │      |
> │ help: remove these parentheses
> │      |
> │ 1143 -             (Runtime::method29(v0_1, (v1_1) + 
> 1_i32))(append((v2_1), string(" ")))
> │ 1143 +             (Runtime::method29(v0_1, (v1_1) + 
> 1_i32))(append(v2_1, string(" ")))
> │      |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │     --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1209:25[
> 0m
> │      |
> │ 1209 |                         ((Runtime::method29((v3) 
> - 1_i32, 0_i32))(string(""))),
> │      |                         ^
> ^
> │      |
> │ help: remove these parentheses
> │      |
> │ 1209 -                         ((Runtime::method29((v3) 
> - 1_i32, 0_i32))(string(""))),
> │ 1209 +                         (Runtime::method29((v3) -
> 1_i32, 0_i32))(string("")),
> │      |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │     --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1273:25[
> 0m
> │      |
> │ 1273 |                         ((Runtime::method29((v3) 
> - 1_i32, 0_i32))(string(""))),
> │      |                         ^
> ^
> │      |
> │ help: remove these parentheses
> │      |
> │ 1273 -                         ((Runtime::method29((v3) 
> - 1_i32, 0_i32))(string(""))),
> │ 1273 +                         (Runtime::method29((v3) -
> 1_i32, 0_i32))(string("")),
> │      |
> │ 
> │ warning: unnecessary parentheses around `break` value
> │     --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1290:30[
> 0m
> │      |
> │ 1290 |             break '_method30 (match 
> v2_1.get().clone().as_ref() {
> │      |                              ^
> │ ...
> │ 1322 |             });
> │      |              ^
> │      |
> │ help: remove these parentheses
> │      |
> │ 1290 ~             break '_method30 match 
> v2_1.get().clone().as_ref() {
> │ 1291 |                 Runtime::UH1::UH1_0 => {
> │  ...
> │ 1321 |                 }
> │ 1322 ~             };
> │      |
> │ 
> │ warning: unnecessary parentheses around `break` value
> │     --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1329:30[
> 0m
> │      |
> │ 1329 |             break '_method31 (if 
> (v1_1.get().clone()) >= 2_i64 {
> │      |                              ^
> │ ...
> │ 1360 |             });
> │      |              ^
> │      |
> │ help: remove these parentheses
> │      |
> │ 1329 ~             break '_method31 if 
> (v1_1.get().clone()) >= 2_i64 {
> │ 1330 |                 false
> │  ...
> │ 1359 |                 }
> │ 1360 ~             };
> │      |
> │ 
> │ warning: unnecessary parentheses around `break` value
> │     --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1376:30[
> 0m
> │      |
> │ 1376 |             break '_method32 ({
> │      |                              ^
> │ ...
> │ 1450 |             });
> │      |              ^
> │      |
> │ help: remove these parentheses
> │      |
> │ 1376 ~             break '_method32 {
> │ 1377 |                 let v98: Runtime::US7 = if 
> string("") == (v1_1.get().clone()) {
> │  ...
> │ 1449 |                 }
> │ 1450 ~             };
> │      |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │     --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1430:36[
> 0m
> │      |
> │ 1430 | ...                   
> append((v0_1.get().clone()), (ofChar(v110_0_0.clone())));
> │      |                              ^                  
> ^
> │      |
> │ help: remove these parentheses
> │      |
> │ 1430 -                             
> append((v0_1.get().clone()), (ofChar(v110_0_0.clone())));
> │ 1430 +                             
> append(v0_1.get().clone(), (ofChar(v110_0_0.clone())));
> │      |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │     --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1430:58[
> 0m
> │      |
> │ 1430 | ...                   
> append((v0_1.get().clone()), (ofChar(v110_0_0.clone())));
> │      |
> ^                        ^
> │      |
> │ help: remove these parentheses
> │      |
> │ 1430 -                             
> append((v0_1.get().clone()), (ofChar(v110_0_0.clone())));
> │ 1430 +                             
> append((v0_1.get().clone()), ofChar(v110_0_0.clone()));
> │      |
> │ 
> │ warning: unnecessary parentheses around `break` value
> │     --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1466:30[
> 0m
> │      |
> │ 1466 |             break '_method33 (match 
> v4.get().clone().as_ref() {
> │      |                              ^
> │ ...
> │ 1501 |             });
> │      |              ^
> │      |
> │ help: remove these parentheses
> │      |
> │ 1466 ~             break '_method33 match 
> v4.get().clone().as_ref() {
> │ 1467 |                 Runtime::UH1::UH1_0 => {
> │  ...
> │ 1500 |                 }
> │ 1501 ~             };
> │      |
> │ 
> │ warning: unnecessary parentheses around `break` value
> │     --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1508:30[
> 0m
> │      |
> │ 1508 |             break '_method34 (if 
> (v1_1.get().clone()) >= 3_i64 {
> │      |                              ^
> │ ...
> │ 1544 |             });
> │      |              ^
> │      |
> │ help: remove these parentheses
> │      |
> │ 1508 ~             break '_method34 if 
> (v1_1.get().clone()) >= 3_i64 {
> │ 1509 |                 false
> │  ...
> │ 1543 |                 }
> │ 1544 ~             };
> │      |
> │ 
> │ warning: unnecessary parentheses around `break` value
> │     --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1560:30[
> 0m
> │      |
> │ 1560 |             break '_method35 ({
> │      |                              ^
> │ ...
> │ 1634 |             });
> │      |              ^
> │      |
> │ help: remove these parentheses
> │      |
> │ 1560 ~             break '_method35 {
> │ 1561 |                 let v106: Runtime::US7 = if 
> string("") == (v1_1.get().clone()) {
> │  ...
> │ 1633 |                 }
> │ 1634 ~             };
> │      |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │     --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1614:36[
> 0m
> │      |
> │ 1614 | ...                   
> append((v0_1.get().clone()), (ofChar(v118_0_0.clone())));
> │      |                              ^                  
> ^
> │      |
> │ help: remove these parentheses
> │      |
> │ 1614 -                             
> append((v0_1.get().clone()), (ofChar(v118_0_0.clone())));
> │ 1614 +                             
> append(v0_1.get().clone(), (ofChar(v118_0_0.clone())));
> │      |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │     --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1614:58[
> 0m
> │      |
> │ 1614 | ...                   
> append((v0_1.get().clone()), (ofChar(v118_0_0.clone())));
> │      |
> ^                        ^
> │      |
> │ help: remove these parentheses
> │      |
> │ 1614 -                             
> append((v0_1.get().clone()), (ofChar(v118_0_0.clone())));
> │ 1614 +                             
> append((v0_1.get().clone()), ofChar(v118_0_0.clone()));
> │      |
> │ 
> │ warning: unnecessary parentheses around `break` value
> │     --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1641:30[
> 0m
> │      |
> │ 1641 |             break '_method36 (if 
> (v1_1.get().clone()) >= (length(v0_1.get().clone())) {
> │      |                              ^
> │ ...
> │ 1653 |             });
> │      |              ^
> │      |
> │ help: remove these parentheses
> │      |
> │ 1641 ~             break '_method36 if 
> (v1_1.get().clone()) >= (length(v0_1.get().clone())) {
> │ 1642 |                 v1_1.get().clone()
> │  ...
> │ 1652 |                 }
> │ 1653 ~             };
> │      |
> │ 
> │ warning: unnecessary parentheses around `break` value
> │     --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1669:30[
> 0m
> │      |
> │ 1669 |             break '_method37 ({
> │      |                              ^
> │ ...
> │ 1720 |             });
> │      |              ^
> │      |
> │ help: remove these parentheses
> │      |
> │ 1669 ~             break '_method37 {
> │ 1670 |                 let v66: Runtime::US7 = if 
> string("") == (v1_1.get().clone()) {
> │  ...
> │ 1719 |                 }
> │ 1720 ~             };
> │      |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │     --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1700:36[
> 0m
> │      |
> │ 1700 | ...                   
> append((v0_1.get().clone()), (ofChar(v66_0_0.clone())));
> │      |                              ^                  
> ^
> │      |
> │ help: remove these parentheses
> │      |
> │ 1700 -                             
> append((v0_1.get().clone()), (ofChar(v66_0_0.clone())));
> │ 1700 +                             
> append(v0_1.get().clone(), (ofChar(v66_0_0.clone())));
> │      |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │     --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1700:58[
> 0m
> │      |
> │ 1700 | ...                   
> append((v0_1.get().clone()), (ofChar(v66_0_0.clone())));
> │      |
> ^                       ^
> │      |
> │ help: remove these parentheses
> │      |
> │ 1700 -                             
> append((v0_1.get().clone()), (ofChar(v66_0_0.clone())));
> │ 1700 +                             
> append((v0_1.get().clone()), ofChar(v66_0_0.clone()));
> │      |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │     --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2079:37[
> 0m
> │      |
> │ 2079 | ...                   ((Runtime::method29((v421) 
> - 1_i32, 0_i32))(string(""))),
> │      |                       ^
> ^
> │      |
> │ help: remove these parentheses
> │      |
> │ 2079 -                                     
> ((Runtime::method29((v421) - 1_i32, 0_i32))(string(""))),
> │ 2079 +                                     
> (Runtime::method29((v421) - 1_i32, 0_i32))(string("")),
> │      |
> │ 
> │ warning: unnecessary parentheses around `break` value
> │     --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3150:30[
> 0m
> │      |
> │ 3150 |             break '_method62 (if 
> (v1_1.get().clone()) >= 4_i64 {
> │      |                              ^
> │ ...
> │ 3191 |             });
> │      |              ^
> │      |
> │ help: remove these parentheses
> │      |
> │ 3150 ~             break '_method62 if 
> (v1_1.get().clone()) >= 4_i64 {
> │ 3151 |                 false
> │  ...
> │ 3190 |                 }
> │ 3191 ~             };
> │      |
> │ 
> │ warning: unnecessary parentheses around `break` value
> │     --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3207:30[
> 0m
> │      |
> │ 3207 |             break '_method63 ({
> │      |                              ^
> │ ...
> │ 3268 |             });
> │      |              ^
> │      |
> │ help: remove these parentheses
> │      |
> │ 3207 ~             break '_method63 {
> │ 3208 |                 let v114: Runtime::US7 = if 
> string("") == (v1_1.get().clone()) {
> │  ...
> │ 3267 |                 }
> │ 3268 ~             };
> │      |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │     --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3248:36[
> 0m
> │      |
> │ 3248 | ...                   
> append((v0_1.get().clone()), (ofChar(v114_0_0.clone())));
> │      |                              ^                  
> ^
> │      |
> │ help: remove these parentheses
> │      |
> │ 3248 -                             
> append((v0_1.get().clone()), (ofChar(v114_0_0.clone())));
> │ 3248 +                             
> append(v0_1.get().clone(), (ofChar(v114_0_0.clone())));
> │      |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │     --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3248:58[
> 0m
> │      |
> │ 3248 | ...                   
> append((v0_1.get().clone()), (ofChar(v114_0_0.clone())));
> │      |
> ^                        ^
> │      |
> │ help: remove these parentheses
> │      |
> │ 3248 -                             
> append((v0_1.get().clone()), (ofChar(v114_0_0.clone())));
> │ 3248 +                             
> append((v0_1.get().clone()), ofChar(v114_0_0.clone()));
> │      |
> │ 
> │ warning: unnecessary parentheses around `break` value
> │     --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3275:30[
> 0m
> │      |
> │ 3275 |             break '_method65 (if 
> (v1_1.get().clone()) >= 3_i64 {
> │      |                              ^
> │ ...
> │ 3311 |             });
> │      |              ^
> │      |
> │ help: remove these parentheses
> │      |
> │ 3275 ~             break '_method65 if 
> (v1_1.get().clone()) >= 3_i64 {
> │ 3276 |                 false
> │  ...
> │ 3310 |                 }
> │ 3311 ~             };
> │      |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │     --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3370:25[
> 0m
> │      |
> │ 3370 |                         ((Runtime::method29((v3) 
> - 1_i32, 0_i32))(string(""))),
> │      |                         ^
> ^
> │      |
> │ help: remove these parentheses
> │      |
> │ 3370 -                         ((Runtime::method29((v3) 
> - 1_i32, 0_i32))(string(""))),
> │ 3370 +                         (Runtime::method29((v3) -
> 1_i32, 0_i32))(string("")),
> │      |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │     --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3413:28[
> 0m
> │      |
> │ 3413 |                     append((ofChar('\\')), 
> (ofChar(v196_0_0.clone()))),
> │      |                            ^            ^
> │      |
> │ help: remove these parentheses
> │      |
> │ 3413 -                     append((ofChar('\\')), 
> (ofChar(v196_0_0.clone()))),
> │ 3413 +                     append(ofChar('\\'), 
> (ofChar(v196_0_0.clone()))),
> │      |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │     --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3413:44[
> 0m
> │      |
> │ 3413 |                     append((ofChar('\\')), 
> (ofChar(v196_0_0.clone()))),
> │      |                                            ^
> ^
> │      |
> │ help: remove these parentheses
> │      |
> │ 3413 -                     append((ofChar('\\')), 
> (ofChar(v196_0_0.clone()))),
> │ 3413 +                     append((ofChar('\\')), 
> ofChar(v196_0_0.clone())),
> │      |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │     --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3479:25[
> 0m
> │      |
> │ 3479 |                         ((Runtime::method29((v3) 
> - 1_i32, 0_i32))(string(""))),
> │      |                         ^
> ^
> │      |
> │ help: remove these parentheses
> │      |
> │ 3479 -                         ((Runtime::method29((v3) 
> - 1_i32, 0_i32))(string(""))),
> │ 3479 +                         (Runtime::method29((v3) -
> 1_i32, 0_i32))(string("")),
> │      |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │     --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3522:28[
> 0m
> │      |
> │ 3522 |                     append((ofChar('`')), 
> (ofChar(v196_0_0.clone()))),
> │      |                            ^           ^
> │      |
> │ help: remove these parentheses
> │      |
> │ 3522 -                     append((ofChar('`')), 
> (ofChar(v196_0_0.clone()))),
> │ 3522 +                     append(ofChar('`'), 
> (ofChar(v196_0_0.clone()))),
> │      |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │     --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3522:43[
> 0m
> │      |
> │ 3522 |                     append((ofChar('`')), 
> (ofChar(v196_0_0.clone()))),
> │      |                                           ^
> ^
> │      |
> │ help: remove these parentheses
> │      |
> │ 3522 -                     append((ofChar('`')), 
> (ofChar(v196_0_0.clone()))),
> │ 3522 +                     append((ofChar('`')), 
> ofChar(v196_0_0.clone())),
> │      |
> │ 
> │ warning: unnecessary parentheses around `break` value
> │     --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3545:30[
> 0m
> │      |
> │ 3545 |             break '_method66 (match 
> v4.get().clone().as_ref() {
> │      |                              ^
> │ ...
> │ 3580 |             });
> │      |              ^
> │      |
> │ help: remove these parentheses
> │      |
> │ 3545 ~             break '_method66 match 
> v4.get().clone().as_ref() {
> │ 3546 |                 Runtime::UH3::UH3_0 => {
> │  ...
> │ 3579 |                 }
> │ 3580 ~             };
> │      |
> │ 
> │ warning: unnecessary parentheses around `break` value
> │     --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3590:30[
> 0m
> │      |
> │ 3590 |             break '_method67 (match 
> v0_1.get().clone().as_ref() {
> │      |                              ^
> │ ...
> │ 3610 |             });
> │      |              ^
> │      |
> │ help: remove these parentheses
> │      |
> │ 3590 ~             break '_method67 match 
> v0_1.get().clone().as_ref() {
> │ 3591 |                 Runtime::UH2::UH2_0 => 
> v1_1.get().clone(),
> │  ...
> │ 3609 |                 }
> │ 3610 ~             };
> │      |
> │ 
> │ warning: unnecessary parentheses around `break` value
> │     --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3626:30[
> 0m
> │      |
> │ 3626 |             break '_method64 ({
> │      |                              ^
> │ ...
> │ 3730 |             });
> │      |              ^
> │      |
> │ help: remove these parentheses
> │      |
> │ 3626 ~             break '_method64 {
> │ 3627 |                 let v106: Runtime::US7 = if 
> string("") == (v1_1.get().clone()) {
> │  ...
> │ 3729 |                 }
> │ 3730 ~             };
> │      |
> │ 
> │ warning: unnecessary parentheses around `break` value
> │     --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3766:30[
> 0m
> │      |
> │ 3766 |             break '_method69 ({
> │      |                              ^
> │ ...
> │ 3839 |             });
> │      |              ^
> │      |
> │ help: remove these parentheses
> │      |
> │ 3766 ~             break '_method69 {
> │ 3767 |                 let v106: Runtime::US7 = if 
> string("") == (v1_1.get().clone()) {
> │  ...
> │ 3838 |                 }
> │ 3839 ~             };
> │      |
> │ 
> │ warning: unnecessary parentheses around `break` value
> │     --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3855:30[
> 0m
> │      |
> │ 3855 |             break '_method61 ({
> │      |                              ^
> │ ...
> │ 4316 |             });
> │      |              ^
> │      |
> │ help: remove these parentheses
> │      |
> │ 3855 ~             break '_method61 {
> │ 3856 |                 let v5: bool = string("") == 
> (v1_1.get().clone());
> │  ...
> │ 4315 |                 }
> │ 4316 ~             };
> │      |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │     --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3972:96[
> 0m
> │      |
> │ 3972 | ...                   
> append(((Runtime::method29((v4.get().clone())
> │      |                              ^
> │ ...
> │ 3975 | ...                                              
> 0_i32))(string(""))),
> │      |
> ^
> │      |
> │ help: remove these parentheses
> │      |
> │ 3972 ~
>                                                                                 
> append((Runtime::method29((v4.get().clone())
> │ 3973 |
>                                                                                 
> -
> │ 3974 |
>                                                                                 
> 1_i32,
> │ 3975 ~
>                                                                                 
> 0_i32))(string("")),
> │      |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │     --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:4100:11
> 6
> │      |
> │ 4100 | ...                   
> append(((Runtime::method29((v306)
> │      |                              ^
> │ ...
> │ 4103 | ...                                              
> 0_i32))(string(""))),
> │      |
> ^
> │      |
> │ help: remove these parentheses
> │      |
> │ 4100 ~
>                                                                                 
> append((Runtime::method29((v306)
> │ 4101 |
>                                                                                 
> -
> │ 4102 |
>                                                                                 
> 1_i32,
> │ 4103 ~
>                                                                                 
> 0_i32))(string("")),
> │      |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │    --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\trace.rs:610:33
> │     |
> │ 610 |         let v3: string = 
> append((v0_1.l0.get().clone()), (v1_1));
> │     |                                 ^
> ^
> │     |
> │ help: remove these parentheses
> │     |
> │ 610 -         let v3: string = 
> append((v0_1.l0.get().clone()), (v1_1));
> │ 610 +         let v3: string = 
> append(v0_1.l0.get().clone(), (v1_1));
> │     |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │    --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\trace.rs:610:58
> │     |
> │ 610 |         let v3: string = 
> append((v0_1.l0.get().clone()), (v1_1));
> │     |
> ^    ^
> │     |
> │ help: remove these parentheses
> │     |
> │ 610 -         let v3: string = 
> append((v0_1.l0.get().clone()), (v1_1));
> │ 610 +         let v3: string = 
> append((v0_1.l0.get().clone()), v1_1);
> │     |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │    --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:892
> :33
> │     |
> │ 892 |         let v3: string = 
> append((v0_1.l0.get().clone()), (v1_1));
> │     |                                 ^
> ^
> │     |
> │ help: remove these parentheses
> │     |
> │ 892 -         let v3: string = 
> append((v0_1.l0.get().clone()), (v1_1));
> │ 892 +         let v3: string = 
> append(v0_1.l0.get().clone(), (v1_1));
> │     |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │    --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:892
> :58
> │     |
> │ 892 |         let v3: string = 
> append((v0_1.l0.get().clone()), (v1_1));
> │     |
> ^    ^
> │     |
> │ help: remove these parentheses
> │     |
> │ 892 -         let v3: string = 
> append((v0_1.l0.get().clone()), (v1_1));
> │ 892 +         let v3: string = 
> append((v0_1.l0.get().clone()), v1_1);
> │     |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │     --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:271
> 1:81
> │      |
> │ 2711 |             (File_system::method109(v0_1, 
> v1_1.clone(), (v2_1) + 1_i32))(append((v3), (v1_1)))
> │      |
>                                                                                 
> ^  ^
> │      |
> │ help: remove these parentheses
> │      |
> │ 2711 -             (File_system::method109(v0_1, 
> v1_1.clone(), (v2_1) + 1_i32))(append((v3), (v1_1)))
> │ 2711 +             (File_system::method109(v0_1, 
> v1_1.clone(), (v2_1) + 1_i32))(append(v3, (v1_1)))
> │      |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │     --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:271
> 1:87
> │      |
> │ 2711 |             (File_system::method109(v0_1, 
> v1_1.clone(), (v2_1) + 1_i32))(append((v3), (v1_1)))
> │      |
>                                                                                 
> ^    ^
> │      |
> │ help: remove these parentheses
> │      |
> │ 2711 -             (File_system::method109(v0_1, 
> v1_1.clone(), (v2_1) + 1_i32))(append((v3), (v1_1)))
> │ 2711 +             (File_system::method109(v0_1, 
> v1_1.clone(), (v2_1) + 1_i32))(append((v3), v1_1))
> │      |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │     --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:272
> 5:13
> │      |
> │ 2725 |             ((File_system::method109(32_i32 - 
> (length(v0_1.clone())), v3, 0_i32))(string(""))),
> │      |             ^
> ^
> │      |
> │ help: remove these parentheses
> │      |
> │ 2725 -             ((File_system::method109(32_i32 - 
> (length(v0_1.clone())), v3, 0_i32))(string(""))),
> │ 2725 +             (File_system::method109(32_i32 - 
> (length(v0_1.clone())), v3, 0_i32))(string("")),
> │      |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │     --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:272
> 6:13
> │      |
> │ 2726 |             (v0_1),
> │      |             ^    ^
> │      |
> │ help: remove these parentheses
> │      |
> │ 2726 -             (v0_1),
> │ 2726 +             v0_1,
> │      |
> │ 
> │ warning: unnecessary parentheses around `break` value
> │     --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:354
> 0:31
> │      |
> │ 3540 |             break '_method141 (if 
> v3(File_system::method90(v4.get().clone(), v0_1.get().clone())) {
> │      |                               ^
> │ ...
> │ 3581 |             });
> │      |              ^
> │      |
> │ help: remove these parentheses
> │      |
> │ 3540 ~             break '_method141 if 
> v3(File_system::method90(v4.get().clone(), v0_1.get().clone())) {
> │ 3541 |                 
> File_system::US17::US17_0(v4.get().clone())
> │  ...
> │ 3580 |                 }
> │ 3581 ~             };
> │      |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │     --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:356
> 5:25
> │      |
> │ 3565 |                         (concat(new_array(&[
> │      |                         ^
> │ ...
> │ 3572 |                         ]))),
> │      |                            ^
> │      |
> │ help: remove these parentheses
> │      |
> │ 3565 ~                         concat(new_array(&[
> │ 3566 |                             
> string("file_system.find_parent / No parent for "),
> │  ...
> │ 3571 |                             },
> │ 3572 ~                         ])),
> │      |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │     --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:360
> 9:21
> │      |
> │ 3609 |                     (concat(new_array(&[
> │      |                     ^
> │ ...
> │ 3612 |                     ]))),
> │      |                        ^
> │      |
> │ help: remove these parentheses
> │      |
> │ 3609 ~                     concat(new_array(&[
> │ 3610 |                         
> string("file_system.find_parent / No parent for "),
> │ 3611 |                         if v2_1 { string("file") 
> } else { string("dir") },
> │ 3612 ~                     ])),
> │      |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │   --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:94:70
> │    |
> │ 94 |             (Sm::method0(v0_1, v1_1.clone(), (v2_1)
> + 1_i32))(append((v3_1), (v1_1)))
> │    |
> ^    ^
> │    |
> │ help: remove these parentheses
> │    |
> │ 94 -             (Sm::method0(v0_1, v1_1.clone(), (v2_1)
> + 1_i32))(append((v3_1), (v1_1)))
> │ 94 +             (Sm::method0(v0_1, v1_1.clone(), (v2_1)
> + 1_i32))(append(v3_1, (v1_1)))
> │    |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │   --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:94:78
> │    |
> │ 94 |             (Sm::method0(v0_1, v1_1.clone(), (v2_1)
> + 1_i32))(append((v3_1), (v1_1)))
> │    |
> ^    ^
> │    |
> │ help: remove these parentheses
> │    |
> │ 94 -             (Sm::method0(v0_1, v1_1.clone(), (v2_1)
> + 1_i32))(append((v3_1), (v1_1)))
> │ 94 +             (Sm::method0(v0_1, v1_1.clone(), (v2_1)
> + 1_i32))(append((v3_1), v1_1))
> │    |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │    --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:108:13
> │     |
> │ 108 |             ((Sm::method0((v0_1) - 
> (length(v2_1.clone())), v5_1, 0_i32))(string(""))),
> │     |             ^
> ^
> │     |
> │ help: remove these parentheses
> │     |
> │ 108 -             ((Sm::method0((v0_1) - 
> (length(v2_1.clone())), v5_1, 0_i32))(string(""))),
> │ 108 +             (Sm::method0((v0_1) - 
> (length(v2_1.clone())), v5_1, 0_i32))(string("")),
> │     |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │    --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:109:13
> │     |
> │ 109 |             (v2_1),
> │     |             ^    ^
> │     |
> │ help: remove these parentheses
> │     |
> │ 109 -             (v2_1),
> │ 109 +             v2_1,
> │     |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │    --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:128:13
> │     |
> │ 128 |             (v2_1.clone()),
> │     |             ^            ^
> │     |
> │ help: remove these parentheses
> │     |
> │ 128 -             (v2_1.clone()),
> │ 128 +             v2_1.clone(),
> │     |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │    --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:129:13
> │     |
> │ 129 |             ((Sm::method0((v0_1) - (length(v2_1)),
> v5_1, 0_i32))(string(""))),
> │     |             ^
> ^
> │     |
> │ help: remove these parentheses
> │     |
> │ 129 -             ((Sm::method0((v0_1) - (length(v2_1)),
> v5_1, 0_i32))(string(""))),
> │ 129 +             (Sm::method0((v0_1) - (length(v2_1)), 
> v5_1, 0_i32))(string("")),
> │     |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │    --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:345:17
> │     |
> │ 345 |                 (getSlice(v1_1, Some(0_i32), 
> Some((v0_1) - 1_i32))),
> │     |                 ^
> ^
> │     |
> │ help: remove these parentheses
> │     |
> │ 345 -                 (getSlice(v1_1, Some(0_i32), 
> Some((v0_1) - 1_i32))),
> │ 345 +                 getSlice(v1_1, Some(0_i32), 
> Some((v0_1) - 1_i32)),
> │     |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │    --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:410:17
> │     |
> │ 410 |                 
> (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))),
> │     |                 ^
> ^
> │     |
> │ help: remove these parentheses
> │     |
> │ 410 -                 
> (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))),
> │ 410 +                 
> append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue)),
> │     |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │    --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:410:25
> │     |
> │ 410 |                 
> (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))),
> │     |                         ^
> ^
> │     |
> │ help: remove these parentheses
> │     |
> │ 410 -                 
> (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))),
> │ 410 +                 
> (append(append((v1_1[v9_1].clone()), (matchValue_1)), (matchValue))),
> │     |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │    --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:410:73
> │     |
> │ 410 |                 
> (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))),
> │     |
> ^          ^
> │     |
> │ help: remove these parentheses
> │     |
> │ 410 -                 
> (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))),
> │ 410 +                 
> (append((append((v1_1[v9_1].clone()), (matchValue_1))), matchValue)),
> │     |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │    --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:410:33
> │     |
> │ 410 |                 
> (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))),
> │     |                                 ^
> ^
> │     |
> │ help: remove these parentheses
> │     |
> │ 410 -                 
> (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))),
> │ 410 +                 
> (append((append(v1_1[v9_1].clone(), (matchValue_1))), (matchValue))),
> │     |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │    --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:410:55
> │     |
> │ 410 |                 
> (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))),
> │     |
> ^            ^
> │     |
> │ help: remove these parentheses
> │     |
> │ 410 -                 
> (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))),
> │ 410 +                 
> (append((append((v1_1[v9_1].clone()), matchValue_1)), (matchValue))),
> │     |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │    --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\crypto.rs:758:33
> │     |
> │ 758 |         let v3: string = 
> append((v0_1.l0.get().clone()), (v1_1));
> │     |                                 ^
> ^
> │     |
> │ help: remove these parentheses
> │     |
> │ 758 -         let v3: string = 
> append((v0_1.l0.get().clone()), (v1_1));
> │ 758 +         let v3: string = 
> append(v0_1.l0.get().clone(), (v1_1));
> │     |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │    --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\crypto.rs:758:58
> │     |
> │ 758 |         let v3: string = 
> append((v0_1.l0.get().clone()), (v1_1));
> │     |
> ^    ^
> │     |
> │ help: remove these parentheses
> │     |
> │ 758 -         let v3: string = 
> append((v0_1.l0.get().clone()), (v1_1));
> │ 758 +         let v3: string = 
> append((v0_1.l0.get().clone()), v1_1);
> │     |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │    --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\common.rs:690:33
> │     |
> │ 690 |         let v3: string = 
> append((v0_1.l0.get().clone()), (v1_1));
> │     |                                 ^
> ^
> │     |
> │ help: remove these parentheses
> │     |
> │ 690 -         let v3: string = 
> append((v0_1.l0.get().clone()), (v1_1));
> │ 690 +         let v3: string = 
> append(v0_1.l0.get().clone(), (v1_1));
> │     |
> │ 
> │ warning: unnecessary parentheses around function 
> argument
> │    --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\common.rs:690:58
> │     |
> │ 690 |         let v3: string = 
> append((v0_1.l0.get().clone()), (v1_1));
> │     |
> ^    ^
> │     |
> │ help: remove these parentheses
> │     |
> │ 690 -         let v3: string = 
> append((v0_1.l0.get().clone()), (v1_1));
> │ 690 +         let v3: string = 
> append((v0_1.l0.get().clone()), v1_1);
> │     |
> │ 
> │ warning: unnecessary parentheses around `break` value
> │    --> 
> C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\common.rs:867:29
> │     |
> │ 867 |             break '_method8 ({
> │     |                             ^
> │ ...
> │ 904 |             });
> │     |              ^
> │     |
> │ help: remove these parentheses
> │     |
> │ 867 ~             break '_method8 {
> │ 868 |                 let result: 
> LrcPtr<MutCell<Common::US7>> = refCell(Common::US7::US7_1);
> │ ...
> │ 903 |                 }
> │ 904 ~             };
> │     |
> │ 
> │ warning: `plot` (lib) generated 69 warnings (run `cargo 
> fix --lib -p plot` to apply 69 suggestions)
> │     Finished `release` profile [optimized] target(s) in 
> 27.92s
> │ 
> 
> ── pwsh ────────────────────────────────────────────────────────────────────────
> { pwsh ../apps/perf/build.ps1 } | Invoke-Block
> 
> ── [ 1.43m - stdout ] ──────────────────────────────────────────────────────────
> │ 00:00:00 d #1 spiral.main / { args = 
> Array(MutCell(["dib", "--path", "Perf.dib", "--retries", "3"])) }
> │ 00:00:00 d #2 runtime.execute_with_options / { 
> file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", 
> "c:/home/git/polyglot/apps/perf/Perf.dib", "--output-path", 
> "c:/home/git/polyglot/apps/perf/Perf.dib.ipynb"]; options = { command = dotnet 
> repl --exit-after-run --run "c:/home/git/polyglot/apps/perf/Perf.dib" 
> --output-path "c:/home/git/polyglot/apps/perf/Perf.dib.ipynb"; 
> cancellation_token = None; environment_variables = 
> Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = 
> None; stdin = None; trace = false; working_directory = None } }
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ # Perf (Polyglot)
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > open testing
> │ > open benchmark
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > #if !INTERACTIVE
> │ > open Lib
> │ > #endif
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## TestCaseResult
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > type TestCaseResult =
> │ >     {
> │ >         Input: string
> │ >         Expected: string
> │ >         Result: string
> │ >         TimeList: int64 list
> │ >     }
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## run
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let run count (solutions: (string * ('TInput -> 
> 'TExpected)) list) (input, 
> │ > expected) =
> │ >     let inputStr =
> │ >         match box input with
> │ >         | :? System.Collections.ICollection as input ->
> │ >             System.Linq.Enumerable.Cast<obj> input
> │ >             |> Seq.map string
> │ >             |> SpiralSm.concat ","
> │ >         | _ -> input.ToString ()
> │ > 
> │ >     printfn ""
> │ >     printfn $"Solution: {inputStr}  "
> │ > 
> │ >     let performanceInvoke (fn: unit -> 'T) =
> │ >         GC.Collect ()
> │ >         let stopwatch = System.Diagnostics.Stopwatch ()
> │ >         stopwatch.Start ()
> │ >         let time1 = stopwatch.ElapsedMilliseconds
> │ > 
> │ >         let result =
> │ >             [[| 0 .. count |]]
> │ >             |> Array.Parallel.map (fun _ ->
> │ >                 fn ()
> │ >             )
> │ >             |> Array.last
> │ > 
> │ >         let time2 = stopwatch.ElapsedMilliseconds - time1
> │ > 
> │ >         result, time2
> │ > 
> │ >     let resultsWithTime =
> │ >         solutions
> │ >         |> List.mapi (fun i (testName, solution) ->
> │ >             let result, time = performanceInvoke (fun () ->
> solution input)
> │ >             printfn $"Test case %d{i + 1}. %s{testName}. 
> Time: %A{time}  "
> │ >             result, time
> │ >         )
> │ > 
> │ > 
> │ >     match resultsWithTime |> List.map fst with
> │ >     | ([[]] | [[ _ ]]) -> ()
> │ >     | (head :: tail) when tail |> List.forall ((=) head) ->
> ()
> │ >     | results -> failwithf $"Challenge error: %A{results}"
> │ > 
> │ >     {
> │ >         Input = inputStr
> │ >         Expected = expected.ToString ()
> │ >         Result = resultsWithTime |> Seq.map fst |> Seq.head
> |> _.ToString()
> │ >         TimeList = resultsWithTime |> List.map snd
> │ >     }
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## runAll
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let runAll testName count (solutions: (string * ('TInput ->
> 'TExpected)) list) 
> │ > testCases =
> │ >     printfn ""
> │ >     printfn ""
> │ >     printfn $"Test: {testName}"
> │ >     testCases
> │ >     |> Seq.map (run count solutions)
> │ >     |> Seq.toList
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## sortResultList
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let sortResultList resultList =
> │ >     let table =
> │ >         let rows =
> │ >             resultList
> │ >             |> List.map (fun result ->
> │ >                 let best =
> │ >                     result.TimeList
> │ >                     |> List.mapi (fun i time ->
> │ >                         i + 1, time
> │ >                     )
> │ >                     |> List.sortBy snd
> │ >                     |> List.head
> │ >                     |> _.ToString()
> │ >                 let row =
> │ >                     [[
> │ >                         result.Input
> │ >                         result.Expected
> │ >                         result.Result
> │ >                         best
> │ >                     ]]
> │ >                 let color =
> │ >                     match result.Expected = result.Result 
> with
> │ >                     | true -> Some ConsoleColor.DarkGreen
> │ >                     | false -> Some ConsoleColor.DarkRed
> │ >                 row, color
> │ >             )
> │ >         let header =
> │ >             [[
> │ >                 [[
> │ >                     "Input"
> │ >                     "Expected"
> │ >                     "Result"
> │ >                     "Best"
> │ >                 ]]
> │ >                 [[
> │ >                     "---"
> │ >                     "---"
> │ >                     "---"
> │ >                     "---"
> │ >                 ]]
> │ >             ]]
> │ >             |> List.map (fun row -> row, None)
> │ >         header @ rows
> │ > 
> │ >     let formattedTable =
> │ >         let lengthMap =
> │ >             table
> │ >             |> List.map fst
> │ >             |> List.transpose
> │ >             |> List.map (fun column ->
> │ >                 column
> │ >                 |> List.map String.length
> │ >                 |> List.sortDescending
> │ >                 |> List.tryHead
> │ >                 |> Option.defaultValue 0
> │ >             )
> │ >             |> List.indexed
> │ >             |> Map.ofList
> │ >         table
> │ >         |> List.map (fun (row, color) ->
> │ >             let newRow =
> │ >                 row
> │ >                 |> List.mapi (fun i cell ->
> │ >                     cell.PadRight lengthMap.[[i]]
> │ >                 )
> │ >             newRow, color
> │ >         )
> │ > 
> │ >     printfn ""
> │ >     formattedTable
> │ >     |> List.iter (fun (row, color) ->
> │ >         match color with
> │ >         | Some color -> Console.ForegroundColor <- color
> │ >         | None -> Console.ResetColor ()
> │ > 
> │ >         printfn "%s" (String.Join ("\t| ", row))
> │ > 
> │ >         Console.ResetColor ()
> │ >     )
> │ > 
> │ >     let averages =
> │ >         resultList
> │ >         |> List.map (fun result -> result.TimeList |> 
> List.map float)
> │ >         |> List.transpose
> │ >         |> List.map List.average
> │ >         |> List.map int64
> │ >         |> List.indexed
> │ > 
> │ >     printfn ""
> │ >     printfn "Average Ranking  "
> │ >     averages
> │ >     |> List.sortBy snd
> │ >     |> List.iter (fun (i, avg) ->
> │ >         printfn $"Test case %d{i + 1}. Average Time: 
> %A{avg}  "
> │ >     )
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let mutable _count =
> │ >     if ("CI" |> System.Environment.GetEnvironmentVariable 
> |> fun x -> $"%A{x}") 
> │ > <> "<null>"
> │ >     then 2000000
> │ >     else 2000
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl is_fast () =
> │ >     false
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## empty3Tests
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ Test: Empty3
> │ > │ 
> │ > │ Solution: (a, a)
> │ > │ Test case 1. A. Time: 91L
> │ > │ 
> │ > │ Solution: (a, a)
> │ > │ Test case 1. A. Time: 56L
> │ > │ 
> │ > │ Input  | Expected      | Result | Best
> │ > │ ---    | ---           | ---    | ---
> │ > │ (a, a) | a             | a      | (1, 
> 91)
> │ > │ (a, a) | a             | a      | (1, 
> 56)
> │ > │ 
> │ > │ Averages
> │ > │ Test case 1. Average Time: 73L
> │ > │ 
> │ > │ Ranking
> │ > │ Test case 1. Average Time: 73L
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > let solutions = [[
> │ >     "A",
> │ >     fun (a, _b) ->
> │ >         a
> │ > ]]
> │ > let testCases = seq {
> │ >     ("a", "a"), "a"
> │ >     ("a", "a"), "a"
> │ > }
> │ > let rec empty3Tests = runAll (nameof empty3Tests) _count 
> solutions testCases
> │ > empty3Tests
> │ > |> sortResultList
> │ > 
> │ > ── [ 456.03ms - stdout ] 
> ───────────────────────────────────────────────────────
> │ > │ 
> │ > │ 
> │ > │ Test: empty3Tests
> │ > │ 
> │ > │ Solution: (a, a)  
> │ > │ Test case 1. A. Time: 1L  
> │ > │ 
> │ > │ Solution: (a, a)  
> │ > │ Test case 1. A. Time: 0L  
> │ > │ 
> │ > │ Input 	| Expected	| Result	| Best  
> │ > │ ---   	| ---     	| ---   	| ---   
> │ > │ (a, a)	| a       	| a     	| (1, 1)
> │ > │ (a, a)	| a       	| a     	| (1, 0)
> │ > │ 
> │ > │ Average Ranking  
> │ > │ Test case 1. Average Time: 0L  
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## empty2Tests
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ Test: Empty2
> │ > │ 
> │ > │ Solution: (a, a)
> │ > │ Test case 1. A. Time: 59L
> │ > │ 
> │ > │ Solution: (a, a)
> │ > │ Test case 1. A. Time: 53L
> │ > │ 
> │ > │ Input   | Expected        | Result  | 
> Best
> │ > │ ---     | ---             | ---     | 
> ---
> │ > │ (a, a)  | a               | a       | 
> (1, 59)
> │ > │ (a, a)  | a               | a       | 
> (1, 53)
> │ > │ 
> │ > │ Averages
> │ > │ Test case 1. Average Time: 56L
> │ > │ 
> │ > │ Ranking
> │ > │ Test case 1. Average Time: 56L
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > let solutions = [[
> │ >     "A",
> │ >     fun (a, _b) ->
> │ >         a
> │ > ]]
> │ > let testCases = seq {
> │ >     ("a", "a"), "a"
> │ >     ("a", "a"), "a"
> │ > }
> │ > let rec empty2Tests = runAll (nameof empty2Tests) _count 
> solutions testCases
> │ > empty2Tests
> │ > |> sortResultList
> │ > 
> │ > ── [ 309.30ms - stdout ] 
> ───────────────────────────────────────────────────────
> │ > │ 
> │ > │ 
> │ > │ Test: empty2Tests
> │ > │ 
> │ > │ Solution: (a, a)  
> │ > │ Test case 1. A. Time: 0L  
> │ > │ 
> │ > │ Solution: (a, a)  
> │ > │ Test case 1. A. Time: 5L  
> │ > │ 
> │ > │ Input 	| Expected	| Result	| Best  
> │ > │ ---   	| ---     	| ---   	| ---   
> │ > │ (a, a)	| a       	| a     	| (1, 0)
> │ > │ (a, a)	| a       	| a     	| (1, 5)
> │ > │ 
> │ > │ Average Ranking  
> │ > │ Test case 1. Average Time: 2L  
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## emptyTests
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ Test: Empty
> │ > │ 
> │ > │ Solution: 0
> │ > │ Test case 1. A. Time: 61L
> │ > │ 
> │ > │ Solution: 2
> │ > │ Test case 1. A. Time: 62L
> │ > │ 
> │ > │ Solution: 5
> │ > │ Test case 1. A. Time: 70L
> │ > │ 
> │ > │ Input   | Expected        | Result  | 
> Best
> │ > │ ---     | ---             | ---     | 
> ---
> │ > │ 0       | 0               | 0       | 
> (1, 61)
> │ > │ 2       | 2               | 2       | 
> (1, 62)
> │ > │ 5       | 5               | 5       | 
> (1, 70)
> │ > │ 
> │ > │ Averages
> │ > │ Test case 1. Average Time: 64L
> │ > │ 
> │ > │ Ranking
> │ > │ Test case 1. Average Time: 64L
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > let solutions = [[
> │ >     "A",
> │ >     fun n ->
> │ >         n + 0
> │ > ]]
> │ > let testCases = seq {
> │ >     0, 0
> │ >     2, 2
> │ >     5, 5
> │ > }
> │ > let rec emptyTests = runAll (nameof emptyTests) _count 
> solutions testCases
> │ > emptyTests
> │ > |> sortResultList
> │ > 
> │ > ── [ 476.52ms - stdout ] 
> ───────────────────────────────────────────────────────
> │ > │ 
> │ > │ 
> │ > │ Test: emptyTests
> │ > │ 
> │ > │ Solution: 0  
> │ > │ Test case 1. A. Time: 1L  
> │ > │ 
> │ > │ Solution: 2  
> │ > │ Test case 1. A. Time: 0L  
> │ > │ 
> │ > │ Solution: 5  
> │ > │ Test case 1. A. Time: 0L  
> │ > │ 
> │ > │ Input	| Expected	| Result	| Best  
> │ > │ ---  	| ---     	| ---   	| ---   
> │ > │ 0    	| 0       	| 0     	| (1, 1)
> │ > │ 2    	| 2       	| 2     	| (1, 0)
> │ > │ 5    	| 5       	| 5     	| (1, 0)
> │ > │ 
> │ > │ Average Ranking  
> │ > │ Test case 1. Average Time: 0L  
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## uniqueLettersTests
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ Test: UniqueLetters
> │ > │ 
> │ > │ Solution: abc
> │ > │ Test case 1. A. Time: 1512L
> │ > │ Test case 2. B. Time: 1947L
> │ > │ Test case 3. C. Time: 2023L
> │ > │ Test case 4. D. Time: 1358L
> │ > │ Test case 5. E. Time: 1321L
> │ > │ Test case 6. F. Time: 1346L
> │ > │ Test case 7. G. Time: 1304L
> │ > │ Test case 8. H. Time: 1383L
> │ > │ Test case 9. I. Time: 1495L
> │ > │ Test case 10. J. Time: 1245L
> │ > │ Test case 11. K. Time: 1219L
> │ > │ 
> │ > │ Solution: accabb
> │ > │ Test case 1. A. Time: 1648L
> │ > │ Test case 2. B. Time: 2061L
> │ > │ Test case 3. C. Time: 2413L
> │ > │ Test case 4. D. Time: 1561L
> │ > │ Test case 5. E. Time: 1593L
> │ > │ Test case 6. F. Time: 1518L
> │ > │ Test case 7. G. Time: 1415L
> │ > │ Test case 8. H. Time: 1510L
> │ > │ Test case 9. I. Time: 1445L
> │ > │ Test case 10. J. Time: 1636L
> │ > │ Test case 11. K. Time: 1317L
> │ > │ 
> │ > │ Solution: pprrqqpp
> │ > │ Test case 1. A. Time: 2255L
> │ > │ Test case 2. B. Time: 2408L
> │ > │ Test case 3. C. Time: 2393L
> │ > │ Test case 4. D. Time: 1675L
> │ > │ Test case 5. E. Time: 1911L
> │ > │ Test case 6. F. Time: 2126L
> │ > │ Test case 7. G. Time: 1504L
> │ > │ Test case 8. H. Time: 1715L
> │ > │ Test case 9. I. Time: 1537L
> │ > │ Test case 10. J. Time: 1522L
> │ > │ Test case 11. K. Time: 1322L
> │ > │ 
> │ > │ Solution: 
> │ > 
> aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbbbbb
> │ > │ Test case 1. A. Time: 13073L
> │ > │ Test case 2. B. Time: 11519L
> │ > │ Test case 3. C. Time: 8373L
> │ > │ Test case 4. D. Time: 5860L
> │ > │ Test case 5. E. Time: 6490L
> │ > │ Test case 6. F. Time: 6325L
> │ > │ Test case 7. G. Time: 5799L
> │ > │ Test case 8. H. Time: 7099L
> │ > │ Test case 9. I. Time: 6133L
> │ > │ Test case 10. J. Time: 5993L
> │ > │ Test case 11. K. Time: 2040L
> │ > │ 
> │ > │ Input
> │ > | Expected        | Result  | Best
> │ > │ ---
> │ > | ---             | ---     | ---
> │ > │ abc
> │ > | abc             | abc     | (11, 1219)
> │ > │ accabb
> │ > | acb             | acb     | (11, 1317)
> │ > │ pprrqqpp
> │ > | prq             | prq     | (11, 1322)
> │ > │ 
> │ > 
> aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbbbbb 
> │ > | acb             | acb     | (11, 2040)
> │ > │ 
> │ > │ Averages
> │ > │ Test case 1. Average Time: 4622L
> │ > │ Test case 2. Average Time: 4483L
> │ > │ Test case 3. Average Time: 3800L
> │ > │ Test case 4. Average Time: 2613L
> │ > │ Test case 5. Average Time: 2828L
> │ > │ Test case 6. Average Time: 2828L
> │ > │ Test case 7. Average Time: 2505L
> │ > │ Test case 8. Average Time: 2926L
> │ > │ Test case 9. Average Time: 2652L
> │ > │ Test case 10. Average Time: 2599L
> │ > │ Test case 11. Average Time: 1474L
> │ > │ 
> │ > │ Ranking
> │ > │ Test case 1. Average Time: 4622L
> │ > │ Test case 2. Average Time: 4483L
> │ > │ Test case 3. Average Time: 3800L
> │ > │ Test case 8. Average Time: 2926L
> │ > │ Test case 5. Average Time: 2828L
> │ > │ Test case 6. Average Time: 2828L
> │ > │ Test case 9. Average Time: 2652L
> │ > │ Test case 4. Average Time: 2613L
> │ > │ Test case 10. Average Time: 2599L
> │ > │ Test case 7. Average Time: 2505L
> │ > │ Test case 11. Average Time: 1474L
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > let solutions = [[
> │ >     "A",
> │ >     fun input ->
> │ >         input
> │ >         |> Seq.toList
> │ >         |> List.fold (fun acc x -> if List.contains x acc 
> then acc else acc @ [[
> │ > x ]]) [[]]
> │ >         |> Seq.toArray
> │ >         |> String
> │ > 
> │ >     "B",
> │ >     fun input ->
> │ >         input
> │ >         |> Seq.rev
> │ >         |> fun list -> Seq.foldBack (fun x acc -> if 
> List.contains x acc then 
> │ > acc else x :: acc) list [[]]
> │ >         |> Seq.rev
> │ >         |> Seq.toArray
> │ >         |> String
> │ > 
> │ >     "C",
> │ >     fun input ->
> │ >         input
> │ >         |> Seq.rev
> │ >         |> fun list -> Seq.foldBack (fun x (set, acc) -> if
> Set.contains x set 
> │ > then set, acc else set.Add x, x :: acc) list (Set.empty, 
> [[]])
> │ >         |> snd
> │ >         |> Seq.rev
> │ >         |> Seq.toArray
> │ >         |> String
> │ > 
> │ >     "D",
> │ >     fun input ->
> │ >         input
> │ >         |> Seq.fold (fun (set, acc) x -> if Set.contains x 
> set then set, acc 
> │ > else set.Add x, Array.append acc [[| x |]]) (Set.empty, 
> [[||]])
> │ >         |> snd
> │ >         |> String
> │ > 
> │ >     "E",
> │ >     fun input ->
> │ >         input
> │ >         |> Seq.fold (fun (set, acc) x -> if Set.contains x 
> set then set, acc 
> │ > else set.Add x, x :: acc) (Set.empty, [[]])
> │ >         |> snd
> │ >         |> List.rev
> │ >         |> List.toArray
> │ >         |> String
> │ > 
> │ >     "F",
> │ >     fun input ->
> │ >         input
> │ >         |> Seq.fold (fun (set, acc) x -> if Set.contains x 
> set then set, acc 
> │ > else set.Add x, acc @ [[ x ]]) (Set.empty, [[]])
> │ >         |> snd
> │ >         |> List.toArray
> │ >         |> String
> │ > 
> │ >     "G",
> │ >     fun input ->
> │ >         input
> │ >         |> Seq.fold (fun (set, acc) x -> if Set.contains x 
> set then set, acc 
> │ > else set.Add x, x :: acc) (Set.empty, [[]])
> │ >         |> snd
> │ >         |> List.toArray
> │ >         |> Array.rev
> │ >         |> String
> │ > 
> │ >     "H",
> │ >     fun input ->
> │ >         input
> │ >         |> Seq.toList
> │ >         |> fun list ->
> │ >             let rec loop set = function
> │ >                 | head :: tail when Set.contains head set 
> -> loop set tail
> │ >                 | head :: tail -> (loop (set.Add head) 
> tail) @ [[ head ]]
> │ >                 | [[]] -> [[]]
> │ >             loop Set.empty list
> │ >             |> List.rev
> │ >         |> List.toArray
> │ >         |> String
> │ > 
> │ >     "I",
> │ >     fun input ->
> │ >         input
> │ >         |> Seq.toList
> │ >         |> fun list ->
> │ >             let rec loop set = function
> │ >                 | head :: tail when Set.contains head set 
> -> loop set tail
> │ >                 | head :: tail -> loop (set.Add head) tail 
> |> Array.append [[| 
> │ > head |]]
> │ >                 | [[]] -> [[||]]
> │ >             loop Set.empty list
> │ >         |> String
> │ > 
> │ >     "J",
> │ >     fun input ->
> │ >         input
> │ >         |> Seq.toList
> │ >         |> fun list ->
> │ >             let rec loop set = function
> │ >                 | head :: tail when Set.contains head set 
> -> loop set tail
> │ >                 | head :: tail -> head :: loop (set.Add 
> head) tail
> │ >                 | [[]] -> [[]]
> │ >             loop Set.empty list
> │ >         |> List.toArray
> │ >         |> String
> │ > 
> │ >     "K",
> │ >     fun input ->
> │ >         input
> │ >         |> Seq.distinct
> │ >         |> Seq.toArray
> │ >         |> String
> │ > ]]
> │ > let testCases = seq {
> │ >     "abc", "abc"
> │ >     "accabb", "acb"
> │ >     "pprrqqpp", "prq"
> │ >     
> │ > 
> "aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbbbbb
> │ > ", "acb"
> │ > }
> │ > let rec uniqueLettersTests = runAll (nameof 
> uniqueLettersTests) _count solutions
> │ > testCases
> │ > uniqueLettersTests
> │ > |> sortResultList
> │ > 
> │ > ── [ 6.14s - stdout ] 
> ──────────────────────────────────────────────────────────
> │ > │ 
> │ > │ 
> │ > │ Test: uniqueLettersTests
> │ > │ 
> │ > │ Solution: abc  
> │ > │ Test case 1. A. Time: 2L  
> │ > │ Test case 2. B. Time: 3L  
> │ > │ Test case 3. C. Time: 3L  
> │ > │ Test case 4. D. Time: 1L  
> │ > │ Test case 5. E. Time: 2L  
> │ > │ Test case 6. F. Time: 1L  
> │ > │ Test case 7. G. Time: 1L  
> │ > │ Test case 8. H. Time: 1L  
> │ > │ Test case 9. I. Time: 1L  
> │ > │ Test case 10. J. Time: 1L  
> │ > │ Test case 11. K. Time: 1L  
> │ > │ 
> │ > │ Solution: accabb  
> │ > │ Test case 1. A. Time: 1L  
> │ > │ Test case 2. B. Time: 1L  
> │ > │ Test case 3. C. Time: 1L  
> │ > │ Test case 4. D. Time: 0L  
> │ > │ Test case 5. E. Time: 0L  
> │ > │ Test case 6. F. Time: 0L  
> │ > │ Test case 7. G. Time: 0L  
> │ > │ Test case 8. H. Time: 0L  
> │ > │ Test case 9. I. Time: 0L  
> │ > │ Test case 10. J. Time: 0L  
> │ > │ Test case 11. K. Time: 0L  
> │ > │ 
> │ > │ Solution: pprrqqpp  
> │ > │ Test case 1. A. Time: 0L  
> │ > │ Test case 2. B. Time: 1L  
> │ > │ Test case 3. C. Time: 1L  
> │ > │ Test case 4. D. Time: 0L  
> │ > │ Test case 5. E. Time: 0L  
> │ > │ Test case 6. F. Time: 0L  
> │ > │ Test case 7. G. Time: 0L  
> │ > │ Test case 8. H. Time: 0L  
> │ > │ Test case 9. I. Time: 0L  
> │ > │ Test case 10. J. Time: 0L  
> │ > │ Test case 11. K. Time: 0L  
> │ > │ 
> │ > │ Solution: 
> │ > 
> aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbbbbb[3
> 8;2;38;140;38m│ Test case 1. A. Time: 4L  
> │ > │ Test case 2. B. Time: 5L  
> │ > │ Test case 3. C. Time: 7L  
> │ > │ Test case 4. D. Time: 4L  
> │ > │ Test case 5. E. Time: 4L  
> │ > │ Test case 6. F. Time: 4L  
> │ > │ Test case 7. G. Time: 4L  
> │ > │ Test case 8. H. Time: 3L  
> │ > │ Test case 9. I. Time: 8L  
> │ > │ Test case 10. J. Time: 4L  
> │ > │ Test case 11. K. Time: 2L  
> │ > │ 
> │ > │ Input
> │ > | Expected	| Result	| Best   
> │ > │ ---
> │ > | ---     	| ---   	| ---    
> │ > │ abc
> │ > | abc     	| abc   	| (4, 1) 
> │ > │ accabb
> │ > | acb     	| acb   	| (4, 0) 
> │ > │ pprrqqpp
> │ > | prq     	| prq   	| (1, 0) 
> │ > │ 
> │ > 
> aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbbbbb	| 
> │ > acb     	| acb   	| (11, 2)
> │ > │ 
> │ > │ Average Ranking  
> │ > │ Test case 11. Average Time: 0L  
> │ > │ Test case 1. Average Time: 1L  
> │ > │ Test case 4. Average Time: 1L  
> │ > │ Test case 5. Average Time: 1L  
> │ > │ Test case 6. Average Time: 1L  
> │ > │ Test case 7. Average Time: 1L  
> │ > │ Test case 8. Average Time: 1L  
> │ > │ Test case 10. Average Time: 1L  
> │ > │ Test case 2. Average Time: 2L  
> │ > │ Test case 9. Average Time: 2L  
> │ > │ Test case 3. Average Time: 3L  
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## rotateStringsTests
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ 
> https://www.hackerrank.com/challenges/rotate-string/forum
> │ > │ 
> │ > │ Test: RotateStrings
> │ > │ 
> │ > │ Solution: abc
> │ > │ Test case 1. A. Time: 1842L
> │ > │ Test case 2. B. Time: 1846L
> │ > │ Test case 3. C. Time: 1936L
> │ > │ Test case 4. CA. Time: 2224L
> │ > │ Test case 5. CB. Time: 2329L
> │ > │ Test case 6. D. Time: 2474L
> │ > │ Test case 7. E. Time: 1664L
> │ > │ Test case 8. F. Time: 1517L
> │ > │ Test case 9. FA. Time: 1651L
> │ > │ Test case 10. FB. Time: 3764L
> │ > │ Test case 11. FC. Time: 5415L
> │ > │ 
> │ > │ Solution: abcde
> │ > │ Test case 1. A. Time: 3356L
> │ > │ Test case 2. B. Time: 2592L
> │ > │ Test case 3. C. Time: 2346L
> │ > │ Test case 4. CA. Time: 2997L
> │ > │ Test case 5. CB. Time: 3061L
> │ > │ Test case 6. D. Time: 4051L
> │ > │ Test case 7. E. Time: 1905L
> │ > │ Test case 8. F. Time: 1771L
> │ > │ Test case 9. FA. Time: 2175L
> │ > │ Test case 10. FB. Time: 3275L
> │ > │ Test case 11. FC. Time: 5266L
> │ > │ 
> │ > │ Solution: abcdefghi
> │ > │ Test case 1. A. Time: 4492L
> │ > │ Test case 2. B. Time: 3526L
> │ > │ Test case 3. C. Time: 3583L
> │ > │ Test case 4. CA. Time: 3711L
> │ > │ Test case 5. CB. Time: 4783L
> │ > │ Test case 6. D. Time: 7557L
> │ > │ Test case 7. E. Time: 3452L
> │ > │ Test case 8. F. Time: 3050L
> │ > │ Test case 9. FA. Time: 3275L
> │ > │ Test case 10. FB. Time: 4635L
> │ > │ Test case 11. FC. Time: 5616L
> │ > │ 
> │ > │ Solution: abab
> │ > │ Test case 1. A. Time: 2093L
> │ > │ Test case 2. B. Time: 1843L
> │ > │ Test case 3. C. Time: 1746L
> │ > │ Test case 4. CA. Time: 2085L
> │ > │ Test case 5. CB. Time: 2139L
> │ > │ Test case 6. D. Time: 2095L
> │ > │ Test case 7. E. Time: 1723L
> │ > │ Test case 8. F. Time: 1558L
> │ > │ Test case 9. FA. Time: 1620L
> │ > │ Test case 10. FB. Time: 2319L
> │ > │ Test case 11. FC. Time: 3918L
> │ > │ 
> │ > │ Solution: aa
> │ > │ Test case 1. A. Time: 1107L
> │ > │ Test case 2. B. Time: 1241L
> │ > │ Test case 3. C. Time: 1183L
> │ > │ Test case 4. CA. Time: 1563L
> │ > │ Test case 5. CB. Time: 1525L
> │ > │ Test case 6. D. Time: 1591L
> │ > │ Test case 7. E. Time: 1327L
> │ > │ Test case 8. F. Time: 1151L
> │ > │ Test case 9. FA. Time: 1180L
> │ > │ Test case 10. FB. Time: 1733L
> │ > │ Test case 11. FC. Time: 2817L
> │ > │ 
> │ > │ Solution: z
> │ > │ Test case 1. A. Time: 816L
> │ > │ Test case 2. B. Time: 745L
> │ > │ Test case 3. C. Time: 928L
> │ > │ Test case 4. CA. Time: 1375L
> │ > │ Test case 5. CB. Time: 1029L
> │ > │ Test case 6. D. Time: 852L
> │ > │ Test case 7. E. Time: 712L
> │ > │ Test case 8. F. Time: 263L
> │ > │ Test case 9. FA. Time: 232L
> │ > │ Test case 10. FB. Time: 773L
> │ > │ Test case 11. FC. Time: 1789L
> │ > │ 
> │ > │ Input           | Expected
> │ >
>                                                                                 │ > | Result
> │ >
>                                                                                 │ > | Best
> │ > │ ---             | ---
> │ >
>                                                                                 │ > | ---
> │ >
>                                                                                 │ > | ---
> │ > │ abc             | bca cab abc
> │ >
>                                                                                 │ > | bca cab abc
> │ >
>                                                                                 │ > | (8, 1517)
> │ > │ abcde           | bcdea cdeab deabc 
> eabcd abcde
> │ > | bcdea cdeab deabc eabcd abcde
> │ > | (8, 1771)
> │ > │ abcdefghi       | bcdefghia cdefghiab 
> defghiabc efghiabcd 
> │ > fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi       | 
> bcdefghia cdefghiab 
> │ > defghiabc efghiabcd fghiabcde ghiabcdef hiabcdefg iabcdefgh
> abcdefghi       | 
> │ > (8, 3050)
> │ > │ abab            | baba abab baba abab
> │ > | baba abab baba abab
> │ > | (8, 1558)
> │ > │ aa              | aa aa
> │ >
>                                                                                 │ > | aa aa
> │ >
>                                                                                 │ > | (1, 1107)
> │ > │ z               | z
> │ >
>                                                                                 │ > | z
> │ >
>                                                                                 │ > | (9, 232)
> │ > │ 
> │ > │ Averages
> │ > │ Test case 1. Average Time: 2284L
> │ > │ Test case 2. Average Time: 1965L
> │ > │ Test case 3. Average Time: 1953L
> │ > │ Test case 4. Average Time: 2325L
> │ > │ Test case 5. Average Time: 2477L
> │ > │ Test case 6. Average Time: 3103L
> │ > │ Test case 7. Average Time: 1797L
> │ > │ Test case 8. Average Time: 1551L
> │ > │ Test case 9. Average Time: 1688L
> │ > │ Test case 10. Average Time: 2749L
> │ > │ Test case 11. Average Time: 4136L
> │ > │ 
> │ > │ Ranking
> │ > │ Test case 11. Average Time: 4136L
> │ > │ Test case 6. Average Time: 3103L
> │ > │ Test case 10. Average Time: 2749L
> │ > │ Test case 5. Average Time: 2477L
> │ > │ Test case 4. Average Time: 2325L
> │ > │ Test case 1. Average Time: 2284L
> │ > │ Test case 2. Average Time: 1965L
> │ > │ Test case 3. Average Time: 1953L
> │ > │ Test case 7. Average Time: 1797L
> │ > │ Test case 9. Average Time: 1688L
> │ > │ Test case 8. Average Time: 1551L
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > let solutions = [[
> │ >     "A",
> │ >     fun (input: string) ->
> │ >         let resultList =
> │ >             List.fold (fun acc x ->
> │ >                 let rotate (text: string) (letter: string) 
> = (text |> 
> │ > SpiralSm.slice 1 (input.Length - 1)) + letter
> │ >                 [[ rotate (if acc.IsEmpty then input else 
> acc.Head) (string x) 
> │ > ]] @ acc
> │ >             ) [[]] (Seq.toList input)
> │ > 
> │ >         (resultList, "")
> │ >         ||> List.foldBack (fun acc x -> x + acc + " ")
> │ >         |> _.TrimEnd()
> │ > 
> │ >     "B",
> │ >     fun input ->
> │ >         input
> │ >         |> Seq.toList
> │ >         |> List.fold (fun (acc: string list) letter ->
> │ >             let last =
> │ >                 if acc.IsEmpty
> │ >                 then input
> │ >                 else acc.Head
> │ > 
> │ >             let item = last.[[1 .. input.Length - 1]] + 
> string letter
> │ > 
> │ >             item :: acc
> │ >         ) [[]]
> │ >         |> List.rev
> │ >         |> SpiralSm.concat " "
> │ > 
> │ >     "C",
> │ >     fun input ->
> │ >         input
> │ >         |> Seq.toList
> │ >         |> List.fold (fun (acc: string list) letter -> 
> acc.Head.[[ 1 .. 
> │ > input.Length - 1 ]] + string letter :: acc) [[ input ]]
> │ >         |> List.rev
> │ >         |> List.skip 1
> │ >         |> SpiralSm.concat " "
> │ > 
> │ >     "CA",
> │ >     fun input ->
> │ >         input
> │ >         |> Seq.fold (fun (acc: string list) letter -> 
> acc.Head.[[ 1 .. 
> │ > input.Length - 1 ]] + string letter :: acc) [[ input ]]
> │ >         |> Seq.rev
> │ >         |> Seq.skip 1
> │ >         |> SpiralSm.concat " "
> │ > 
> │ >     "CB",
> │ >     fun input ->
> │ >         input
> │ >         |> Seq.toArray
> │ >         |> Array.fold (fun (acc: string[[]]) letter -> acc 
> |> Array.append [[| 
> │ > acc.[[0]].[[ 1 .. input.Length - 1 ]] + string letter |]]) 
> [[| input |]]
> │ >         |> Array.rev
> │ >         |> Array.skip 1
> │ >         |> SpiralSm.concat " "
> │ > 
> │ >     "D",
> │ >     fun input ->
> │ >         input
> │ >         |> Seq.toList
> │ >         |> fun list ->
> │ >             let rec loop (acc: char list list) = function
> │ >                 | _ when acc.Length = list.Length -> acc
> │ >                 | head :: tail ->
> │ >                     let item = tail @ [[ head ]]
> │ >                     loop (item :: acc) item
> │ >                 | [[]] -> [[]]
> │ >             loop [[]] list
> │ >         |> List.rev
> │ >         |> List.map (List.toArray >> String)
> │ >         |> SpiralSm.concat " "
> │ > 
> │ >     "E",
> │ >     fun input ->
> │ >         input
> │ >         |> Seq.toList
> │ >         |> fun list ->
> │ >             let rec loop (last: string) = function
> │ >                 | head :: tail ->
> │ >                     let item = last.[[1 .. input.Length - 
> 1]] + string head
> │ >                     item :: loop item tail
> │ >                 | [[]] -> [[]]
> │ >             loop input list
> │ >         |> SpiralSm.concat " "
> │ > 
> │ >     "F",
> │ >     fun input ->
> │ >         Array.singleton 0
> │ >         |> Array.append [[| 1 .. input.Length - 1 |]]
> │ >         |> Array.map (fun i -> input.[[ i .. ]] + input.[[ 
> .. i - 1 ]])
> │ >         |> SpiralSm.concat " "
> │ > 
> │ >     "FA",
> │ >     fun input ->
> │ >         List.singleton 0
> │ >         |> List.append [[ 1 .. input.Length - 1 ]]
> │ >         |> List.map (fun i -> input.[[ i .. ]] + input.[[ 
> .. i - 1 ]])
> │ >         |> SpiralSm.concat " "
> │ > 
> │ >     "FB",
> │ >     fun input ->
> │ >         Seq.singleton 0
> │ >         |> Seq.append (seq { 1 .. input.Length - 1 })
> │ >         |> Seq.map (fun i -> input.[[ i .. ]] + input.[[ ..
> i - 1 ]])
> │ >         |> SpiralSm.concat " "
> │ > 
> │ >     "FC",
> │ >     fun input ->
> │ >         Array.singleton 0
> │ >         |> Array.append [[| 1 .. input.Length - 1 |]]
> │ >         |> Array.Parallel.map (fun i -> input.[[ i .. ]] + 
> input.[[ .. i - 1 ]])
> │ >         |> SpiralSm.concat " "
> │ > ]]
> │ > let testCases = seq {
> │ >     "abc", "bca cab abc"
> │ >     "abcde", "bcdea cdeab deabc eabcd abcde"
> │ >     "abcdefghi", "bcdefghia cdefghiab defghiabc efghiabcd 
> fghiabcde ghiabcdef 
> │ > hiabcdefg iabcdefgh abcdefghi"
> │ >     "abab", "baba abab baba abab"
> │ >     "aa", "aa aa"
> │ >     "z", "z"
> │ > }
> │ > let rec rotateStringsTests = runAll (nameof 
> rotateStringsTests) _count solutions
> │ > testCases
> │ > rotateStringsTests
> │ > |> sortResultList
> │ > 
> │ > ── [ 8.90s - stdout ] 
> ──────────────────────────────────────────────────────────
> │ > │ 
> │ > │ 
> │ > │ Test: rotateStringsTests
> │ > │ 
> │ > │ Solution: abc  
> │ > │ Test case 1. A. Time: 3L  
> │ > │ Test case 2. B. Time: 2L  
> │ > │ Test case 3. C. Time: 2L  
> │ > │ Test case 4. CA. Time: 3L  
> │ > │ Test case 5. CB. Time: 2L  
> │ > │ Test case 6. D. Time: 2L  
> │ > │ Test case 7. E. Time: 1L  
> │ > │ Test case 8. F. Time: 2L  
> │ > │ Test case 9. FA. Time: 1L  
> │ > │ Test case 10. FB. Time: 6L  
> │ > │ Test case 11. FC. Time: 2L  
> │ > │ 
> │ > │ Solution: abcde  
> │ > │ Test case 1. A. Time: 0L  
> │ > │ Test case 2. B. Time: 0L  
> │ > │ Test case 3. C. Time: 0L  
> │ > │ Test case 4. CA. Time: 1L  
> │ > │ Test case 5. CB. Time: 0L  
> │ > │ Test case 6. D. Time: 3L  
> │ > │ Test case 7. E. Time: 0L  
> │ > │ Test case 8. F. Time: 0L  
> │ > │ Test case 9. FA. Time: 0L  
> │ > │ Test case 10. FB. Time: 1L  
> │ > │ Test case 11. FC. Time: 2L  
> │ > │ 
> │ > │ Solution: abcdefghi  
> │ > │ Test case 1. A. Time: 2L  
> │ > │ Test case 2. B. Time: 0L  
> │ > │ Test case 3. C. Time: 1L  
> │ > │ Test case 4. CA. Time: 1L  
> │ > │ Test case 5. CB. Time: 1L  
> │ > │ Test case 6. D. Time: 3L  
> │ > │ Test case 7. E. Time: 1L  
> │ > │ Test case 8. F. Time: 0L  
> │ > │ Test case 9. FA. Time: 1L  
> │ > │ Test case 10. FB. Time: 2L  
> │ > │ Test case 11. FC. Time: 3L  
> │ > │ 
> │ > │ Solution: abab  
> │ > │ Test case 1. A. Time: 1L  
> │ > │ Test case 2. B. Time: 0L  
> │ > │ Test case 3. C. Time: 0L  
> │ > │ Test case 4. CA. Time: 1L  
> │ > │ Test case 5. CB. Time: 0L  
> │ > │ Test case 6. D. Time: 1L  
> │ > │ Test case 7. E. Time: 0L  
> │ > │ Test case 8. F. Time: 0L  
> │ > │ Test case 9. FA. Time: 0L  
> │ > │ Test case 10. FB. Time: 1L  
> │ > │ Test case 11. FC. Time: 2L  
> │ > │ 
> │ > │ Solution: aa  
> │ > │ Test case 1. A. Time: 0L  
> │ > │ Test case 2. B. Time: 0L  
> │ > │ Test case 3. C. Time: 0L  
> │ > │ Test case 4. CA. Time: 1L  
> │ > │ Test case 5. CB. Time: 0L  
> │ > │ Test case 6. D. Time: 0L  
> │ > │ Test case 7. E. Time: 0L  
> │ > │ Test case 8. F. Time: 0L  
> │ > │ Test case 9. FA. Time: 0L  
> │ > │ Test case 10. FB. Time: 1L  
> │ > │ Test case 11. FC. Time: 1L  
> │ > │ 
> │ > │ Solution: z  
> │ > │ Test case 1. A. Time: 0L  
> │ > │ Test case 2. B. Time: 0L  
> │ > │ Test case 3. C. Time: 0L  
> │ > │ Test case 4. CA. Time: 0L  
> │ > │ Test case 5. CB. Time: 0L  
> │ > │ Test case 6. D. Time: 0L  
> │ > │ Test case 7. E. Time: 0L  
> │ > │ Test case 8. F. Time: 0L  
> │ > │ Test case 9. FA. Time: 16L  
> │ > │ Test case 10. FB. Time: 0L  
> │ > │ Test case 11. FC. Time: 4L  
> │ > │ 
> │ > │ Input    	| Expected
> │ > | Result
> │ >
>                                                                                 │ > | Best  
> │ > │ ---      	| ---
> │ >
>                                                                                 │ > | ---
> │ >
>                                                                                 │ > | ---   
> │ > │ abc      	| bca cab abc
> │ > | bca cab abc
> │ > | (7, 1)
> │ > │ abcde    	| bcdea cdeab deabc eabcd abcde
> │ > | bcdea cdeab deabc eabcd abcde
> │ > | (1, 0)
> │ > │ abcdefghi	| bcdefghia cdefghiab defghiabc 
> efghiabcd fghiabcde 
> │ > ghiabcdef hiabcdefg iabcdefgh abcdefghi	| bcdefghia cdefghiab
> defghiabc efghiabcd 
> │ > fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi	| (2, 0)
> │ > │ abab     	| baba abab baba abab
> │ > | baba abab baba abab
> │ > | (2, 0)
> │ > │ aa       	| aa aa
> │ >
>                                                                                 │ > | aa aa
> │ >
>                                                                                 │ > | (1, 0)
> │ > │ z        	| z
> │ >
>                                                                                 │ > | z
> │ >
>                                                                                 │ > | (1, 0)
> │ > │ 
> │ > │ Average Ranking  
> │ > │ Test case 2. Average Time: 0L  
> │ > │ Test case 3. Average Time: 0L  
> │ > │ Test case 5. Average Time: 0L  
> │ > │ Test case 7. Average Time: 0L  
> │ > │ Test case 8. Average Time: 0L  
> │ > │ Test case 1. Average Time: 1L  
> │ > │ Test case 4. Average Time: 1L  
> │ > │ Test case 6. Average Time: 1L  
> │ > │ Test case 10. Average Time: 1L  
> │ > │ Test case 11. Average Time: 2L  
> │ > │ Test case 9. Average Time: 3L  
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## rotate_strings_tests
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ```
> │ > │ 02:21:12 verbose #1 
> benchmark.run_all / {count = 
> │ > 2000000; test_name = rotate_strings_tests}
> │ > │ 
> │ > │ 02:21:12 verbose #2 benchmark.run
> / {input_str = 
> │ > "abc"}
> │ > │ 02:21:13 verbose #3 benchmark.run
> / solutions.map / {i
> │ > = 1; test_name = F; time = 638}
> │ > │ 02:21:14 verbose #4 benchmark.run
> / solutions.map / {i
> │ > = 2; test_name = FA; time = 779}
> │ > │ 
> │ > │ 02:21:14 verbose #5 benchmark.run
> / {input_str = 
> │ > "abcde"}
> │ > │ 02:21:15 verbose #6 benchmark.run
> / solutions.map / {i
> │ > = 1; test_name = F; time = 745}
> │ > │ 02:21:16 verbose #7 benchmark.run
> / solutions.map / {i
> │ > = 2; test_name = FA; time = 809}
> │ > │ 
> │ > │ 02:21:16 verbose #8 benchmark.run
> / {input_str = 
> │ > "abcdefghi"}
> │ > │ 02:21:17 verbose #9 benchmark.run
> / solutions.map / {i
> │ > = 1; test_name = F; time = 1092}
> │ > │ 02:21:18 verbose #10 
> benchmark.run / solutions.map / 
> │ > {i = 2; test_name = FA; time = 1304}
> │ > │ 
> │ > │ 02:21:18 verbose #11 
> benchmark.run / {input_str = 
> │ > "abab"}
> │ > │ 02:21:19 verbose #12 
> benchmark.run / solutions.map / 
> │ > {i = 1; test_name = F; time = 536}
> │ > │ 02:21:20 verbose #13 
> benchmark.run / solutions.map / 
> │ > {i = 2; test_name = FA; time = 620}
> │ > │ 
> │ > │ 02:21:20 verbose #14 
> benchmark.run / {input_str = 
> │ > "aa"}
> │ > │ 02:21:21 verbose #15 
> benchmark.run / solutions.map / 
> │ > {i = 1; test_name = F; time = 365}
> │ > │ 02:21:21 verbose #16 
> benchmark.run / solutions.map / 
> │ > {i = 2; test_name = FA; time = 396}
> │ > │ 
> │ > │ 02:21:21 verbose #17 
> benchmark.run / {input_str = "z"}
> │ > │ 02:21:22 verbose #18 
> benchmark.run / solutions.map / 
> │ > {i = 1; test_name = F; time = 158}
> │ > │ 02:21:22 verbose #19 
> benchmark.run / solutions.map / 
> │ > {i = 2; test_name = FA; time = 143}
> │ > │ ```
> │ > │ input      	| expected
> │ >
>                                                                                 │ > | result
> │ >
>                                                                                 │ > | best   
> │ > │ ---        	| ---
> │ >
>                                                                                 │ > | ---
> │ >
>                                                                                 │ > | ---    
> │ > │ "abc"      	| "bca cab abc"
> │ > | "bca cab abc"
> │ > | 1, 638 
> │ > │ "abcde"    	| "bcdea cdeab deabc eabcd 
> abcde"
> │ > | "bcdea cdeab deabc eabcd abcde"
> │ > | 1, 745 
> │ > │ "abcdefghi"	| "bcdefghia cdefghiab 
> defghiabc efghiabcd 
> │ > fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi"	| 
> "bcdefghia cdefghiab 
> │ > defghiabc efghiabcd fghiabcde ghiabcdef hiabcdefg iabcdefgh
> abcdefghi"	| 1, 1092
> │ > │ "abab"     	| "baba abab baba abab"
> │ > | "baba abab baba abab"
> │ > | 1, 536 
> │ > │ "aa"       	| "aa aa"
> │ >
>                                                                                 │ > | "aa aa"
> │ >
>                                                                                 │ > | 1, 365 
> │ > │ "z"        	| "z"
> │ >
>                                                                                 │ > | "z"
> │ >
>                                                                                 │ > | 2, 143 
> │ > │ ```
> │ > │ 02:21:22 verbose #20 
> benchmark.sort_result_list / 
> │ > averages.iter / {avg = 589; i = 1}
> │ > │ 02:21:22 verbose #21 
> benchmark.sort_result_list / 
> │ > averages.iter / {avg = 675; i = 2}
> │ > │ ```
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > //// timeout=60000
> │ > 
> │ > inl get_solutions () =
> │ >     [[
> │ >         // "A",
> │ >         // fun (input : string) =>
> │ >         //     let resultList =
> │ >         //         List.fold (fun acc x =>
> │ >         //             let rotate (text : string) (letter :
> string) = 
> │ > text.Substring (1, input.Length - 1) + letter
> │ >         //             [[ rotate (if acc.IsEmpty then input
> else acc.Head) 
> │ > (string x) ]] ++ acc
> │ >         //         ) [[]] (Seq.toList input)
> │ > 
> │ >         //     List.foldBack (fun acc x => x + acc + " ") 
> resultList ""
> │ >         //     |> fun x => x.TrimEnd ()
> │ > 
> │ >         // "B",
> │ >         // fun input =>
> │ >         //     input
> │ >         //     |> Seq.toList
> │ >         //     |> List.fold (fun (acc : string list) letter
> =>
> │ >         //         let last =
> │ >         //             if acc.IsEmpty
> │ >         //             then input
> │ >         //             else acc.Head
> │ > 
> │ >         //         let item = last.[[1 .. input.Length - 
> 1]] + string letter
> │ > 
> │ >         //         item :: acc
> │ >         //     ) [[]]
> │ >         //     |> List.rev
> │ >         //     |> SpiralSm.concat " "
> │ > 
> │ >         // "C",
> │ >         // fun input =>
> │ >         //     input
> │ >         //     |> Seq.toList
> │ >         //     |> List.fold (fun (acc : list string) letter
> => acc.Head.[[ 1 .. 
> │ > input.Length - 1 ]] + string letter :: acc) [[ input ]]
> │ >         //     |> List.rev
> │ >         //     |> List.skip 1
> │ >         //     |> SpiralSm.concat " "
> │ > 
> │ >         // "CA",
> │ >         // fun input =>
> │ >         //     input
> │ >         //     |> Seq.fold (fun (acc : list string) letter 
> => acc.Head.[[ 1 .. 
> │ > input.Length - 1 ]] + string letter :: acc) [[ input ]]
> │ >         //     |> Seq.rev
> │ >         //     |> Seq.skip 1
> │ >         //     |> SpiralSm.concat " "
> │ > 
> │ >         // "CB",
> │ >         // fun input =>
> │ >         //     input
> │ >         //     |> Seq.toArray
> │ >         //     |> Array.fold (fun (acc : a _ string) letter
> => acc |> 
> │ > Array.append (a ;[[ acc.[[0]].[[ 1 .. input.Length - 1 ]] +
> string letter ]])) 
> │ > (a ;[[ input ]])
> │ >         //     |> Array.rev
> │ >         //     |> Array.skip 1
> │ >         //     |> SpiralSm.concat " "
> │ > 
> │ >         // "D",
> │ >         // fun input =>
> │ >         //     input
> │ >         //     |> Seq.toList
> │ >         //     |> fun list =>
> │ >         //         let rec loop (acc : list (list char)) = 
> function
> │ >         //             | _ when acc.Length = list.Length =>
> acc
> │ >         //             | head :: tail =>
> │ >         //                 let item = tail ++ [[ head ]]
> │ >         //                 loop (item :: acc) item
> │ >         //             | [[]] => [[]]
> │ >         //         loop [[]] list
> │ >         //     |> List.rev
> │ >         //     |> List.map (List.toArray >> String)
> │ >         //     |> SpiralSm.concat " "
> │ > 
> │ >         // "E",
> │ >         // fun input =>
> │ >         //     input
> │ >         //     |> Seq.toList
> │ >         //     |> fun list =>
> │ >         //         let rec loop (last : string) = function
> │ >         //             | head :: tail =>
> │ >         //                 let item = last.[[1 .. 
> input.Length - 1]] + string 
> │ > head
> │ >         //                 item :: loop item tail
> │ >         //             | [[]] => [[]]
> │ >         //         loop input list
> │ >         //     |> SpiralSm.concat " "
> │ > 
> │ >         "F",
> │ >         fun input =>
> │ >         // Array.singleton 0
> │ >         // |> Array.append [[| 1 .. input.Length - 1 |]]
> │ >         // |> Array.map (fun i -> input.[[ i .. ]] + 
> input.[[ .. i - 1 ]])
> │ >         // |> SpiralSm.concat " "
> │ >             inl input_length = input |> sm.length
> │ >             am.singleton 0i32
> │ >             |> am.append (am'.init_series 1 (input_length -
> 1) 1 |> fun x => a x
> │ > : _ int _)
> │ >             |> fun (a x) => x
> │ >             |> am'.map_base fun i =>
> │ >                 inl a = input |> sm'.slice i (input_length 
> - 1)
> │ >                 inl b = input |> sm'.slice 0 (i - 1)
> │ >                 a +. b
> │ >             |> fun x => a x : _ int _
> │ >             |> seq.of_array
> │ >             |> sm'.concat " "
> │ > 
> │ >         "FA",
> │ >         fun input =>
> │ >         //     List.singleton 0
> │ >         //     |> List.append [[ 1 .. input.Length - 1 ]]
> │ >         //   //  |> List.map (fun i => input.[[ i .. ]] + 
> input.[[ .. i - 1 ]])
> │ >         //     |> SpiralSm.concat " "
> │ >             inl input_length = input |> sm.length
> │ >             listm.singleton 0i32
> │ >             |> listm.append (listm'.init_series 1 
> (input_length - 1) 1)
> │ >             |> listm.map (fun i =>
> │ >                 inl a = input |> sm'.slice i (input_length 
> - 1)
> │ >                 inl b = if i = 0 then "" else input |> 
> sm'.slice 0 (i - 1)
> │ >                 a +. b
> │ >             )
> │ >             |> listm'.box
> │ >             |> listm'.to_array'
> │ >             |> fun x => a x : _ int _
> │ >             |> seq.of_array
> │ >             |> sm'.concat " "
> │ > 
> │ >         // "FB",
> │ >         // fun input =>
> │ >         //     Seq.singleton 0
> │ >         //   //  |> Seq.append (seq { 1 .. input.Length - 1
> })
> │ >         //   //  |> Seq.map (fun i => input.[[ i .. ]] + 
> input.[[ .. i - 1 ]])
> │ >         //     |> SpiralSm.concat " "
> │ > 
> │ >         // "FC",
> │ >         // fun input =>
> │ >         //     Array.singleton 0
> │ >         //     |> Array.append (a ;[[ 1 .. input.Length - 1
> ]])
> │ >         ////    |> Array.Parallel.map (fun i => input.[[ i 
> .. ]] + input.[[ .. i
> │ > - 1 ]])
> │ >         //     |> SpiralSm.concat " "
> │ >     ]]
> │ > 
> │ > inl rec rotate_strings_tests () =
> │ >     inl test_cases = [[
> │ >         "abc", "bca cab abc"
> │ >         "abcde", "bcdea cdeab deabc eabcd abcde"
> │ >         "abcdefghi", "bcdefghia cdefghiab defghiabc 
> efghiabcd fghiabcde 
> │ > ghiabcdef hiabcdefg iabcdefgh abcdefghi"
> │ >         "abab", "baba abab baba abab"
> │ >         "aa", "aa aa"
> │ >         "z", "z"
> │ >     ]]
> │ > 
> │ >     inl solutions = get_solutions ()
> │ > 
> │ >     // inl is_fast () = true
> │ > 
> │ >     inl count =
> │ >         if is_fast ()
> │ >         then 1000i32
> │ >         else 2000000i32
> │ > 
> │ >     run_all (reflection.nameof { rotate_strings_tests }) 
> count solutions 
> │ > test_cases
> │ >     |> sort_result_list
> │ > 
> │ > rotate_strings_tests ()
> │ > 
> │ > ── [ 11.40s - stdout ] 
> ─────────────────────────────────────────────────────────
> │ > │ 
> │ > │ ```
> │ > │ 00:00:00 v #1 benchmark.run_all / {
> test_name = 
> │ > rotate_strings_tests; count = 2000000 }
> │ > │ 
> │ > │ 00:00:00 v #2 benchmark.run / { 
> input_str = "abc" }
> │ > │ 00:00:00 v #3 benchmark.run / 
> solutions.map / { i = 1; 
> │ > test_name = F; time = 416 }
> │ > │ 00:00:01 v #4 benchmark.run / 
> solutions.map / { i = 2; 
> │ > test_name = FA; time = 542 }
> │ > │ 
> │ > │ 00:00:01 v #5 benchmark.run / { 
> input_str = "abcde" }
> │ > │ 00:00:02 v #6 benchmark.run / 
> solutions.map / { i = 1; 
> │ > test_name = F; time = 472 }
> │ > │ 00:00:03 v #7 benchmark.run / 
> solutions.map / { i = 2; 
> │ > test_name = FA; time = 863 }
> │ > │ 
> │ > │ 00:00:03 v #8 benchmark.run / { 
> input_str = "abcdefghi" 
> │ > }
> │ > │ 00:00:04 v #9 benchmark.run / 
> solutions.map / { i = 1; 
> │ > test_name = F; time = 828 }
> │ > │ 00:00:06 v #10 benchmark.run / 
> solutions.map / { i = 2; 
> │ > test_name = FA; time = 1454 }
> │ > │ 
> │ > │ 00:00:06 v #11 benchmark.run / { 
> input_str = "abab" }
> │ > │ 00:00:06 v #12 benchmark.run / 
> solutions.map / { i = 1; 
> │ > test_name = F; time = 532 }
> │ > │ 00:00:07 v #13 benchmark.run / 
> solutions.map / { i = 2; 
> │ > test_name = FA; time = 807 }
> │ > │ 
> │ > │ 00:00:07 v #14 benchmark.run / { 
> input_str = "aa" }
> │ > │ 00:00:08 v #15 benchmark.run / 
> solutions.map / { i = 1; 
> │ > test_name = F; time = 281 }
> │ > │ 00:00:09 v #16 benchmark.run / 
> solutions.map / { i = 2; 
> │ > test_name = FA; time = 458 }
> │ > │ 
> │ > │ 00:00:09 v #17 benchmark.run / { 
> input_str = "z" }
> │ > │ 00:00:09 v #18 benchmark.run / 
> solutions.map / { i = 1; 
> │ > test_name = F; time = 143 }
> │ > │ 00:00:09 v #19 benchmark.run / 
> solutions.map / { i = 2; 
> │ > test_name = FA; time = 201 }
> │ > │ ```
> │ > │ input      	| expected
> │ >
>                                                                                 │ > | result
> │ >
>                                                                                 │ > | best  
> │ > │ ---        	| ---
> │ >
>                                                                                 │ > | ---
> │ >
>                                                                                 │ > | ---   
> │ > │ "abc"      	| "bca cab abc"
> │ > | "bca cab abc"
> │ > | 1, 416
> │ > │ "abcde"    	| "bcdea cdeab deabc eabcd 
> abcde"
> │ > | "bcdea cdeab deabc eabcd abcde"
> │ > | 1, 472
> │ > │ "abcdefghi"	| "bcdefghia cdefghiab 
> defghiabc efghiabcd 
> │ > fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi"	| 
> "bcdefghia cdefghiab 
> │ > defghiabc efghiabcd fghiabcde ghiabcdef hiabcdefg iabcdefgh
> abcdefghi"	| 1, 828
> │ > │ "abab"     	| "baba abab baba abab"
> │ > | "baba abab baba abab"
> │ > | 1, 532
> │ > │ "aa"       	| "aa aa"
> │ >
>                                                                                 │ > | "aa aa"
> │ >
>                                                                                 │ > | 1, 281
> │ > │ "z"        	| "z"
> │ >
>                                                                                 │ > | "z"
> │ >
>                                                                                 │ > | 1, 143
> │ > │ ```
> │ > │ 00:00:09 v #20 
> benchmark.sort_result_list / 
> │ > averages.iter / { i = 1; avg = 445 }
> │ > │ 00:00:09 v #21 
> benchmark.sort_result_list / 
> │ > averages.iter / { i = 2; avg = 720 }
> │ > │ ```
> │ > │ 
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > // rotate_strings_tests ()
> │ > ()
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## binary_search_tests
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ```
> │ > │ 02:19:29 verbose #1 
> benchmark.run_all / {count = 
> │ > 10000000; test_name = binary_search_tests}
> │ > │ 
> │ > │ 02:19:29 verbose #2 benchmark.run
> / {input_str = 
> │ > struct ([|1; 3; 4; 6; 8; 9; 11|], 6, 7)}
> │ > │ 02:19:30 verbose #3 benchmark.run
> / solutions.map / {i
> │ > = 1; test_name = semi_open_1; time = 662}
> │ > │ 02:19:30 verbose #4 benchmark.run
> / solutions.map / {i
> │ > = 2; test_name = closed_1; time = 619}
> │ > │ 02:19:31 verbose #5 benchmark.run
> / solutions.map / {i
> │ > = 3; test_name = semi_open_2; time = 644}
> │ > │ 02:19:32 verbose #6 benchmark.run
> / solutions.map / {i
> │ > = 4; test_name = closed_2; time = 610}
> │ > │ 
> │ > │ 02:19:32 verbose #7 benchmark.run
> / {input_str = 
> │ > struct ([|1; 3; 4; 6; 8; 9; 11|], 1, 7)}
> │ > │ 02:19:33 verbose #8 benchmark.run
> / solutions.map / {i
> │ > = 1; test_name = semi_open_1; time = 607}
> │ > │ 02:19:33 verbose #9 benchmark.run
> / solutions.map / {i
> │ > = 2; test_name = closed_1; time = 559}
> │ > │ 02:19:34 verbose #10 
> benchmark.run / solutions.map / 
> │ > {i = 3; test_name = semi_open_2; time = 612}
> │ > │ 02:19:35 verbose #11 
> benchmark.run / solutions.map / 
> │ > {i = 4; test_name = closed_2; time = 577}
> │ > │ 
> │ > │ 02:19:35 verbose #12 
> benchmark.run / {input_str = 
> │ > struct ([|1; 3; 4; 6; 8; 9; 11|], 11, 7)}
> │ > │ 02:19:35 verbose #13 
> benchmark.run / solutions.map / 
> │ > {i = 1; test_name = semi_open_1; time = 550}
> │ > │ 02:19:36 verbose #14 
> benchmark.run / solutions.map / 
> │ > {i = 2; test_name = closed_1; time = 580}
> │ > │ 02:19:37 verbose #15 
> benchmark.run / solutions.map / 
> │ > {i = 3; test_name = semi_open_2; time = 624}
> │ > │ 02:19:37 verbose #16 
> benchmark.run / solutions.map / 
> │ > {i = 4; test_name = closed_2; time = 590}
> │ > │ 
> │ > │ 02:19:37 verbose #17 
> benchmark.run / {input_str = 
> │ > struct ([|1; 3; 4; 6; 8; 9; 11|], 12, 7)}
> │ > │ 02:19:38 verbose #18 
> benchmark.run / solutions.map / 
> │ > {i = 1; test_name = semi_open_1; time = 574}
> │ > │ 02:19:39 verbose #19 
> benchmark.run / solutions.map / 
> │ > {i = 2; test_name = closed_1; time = 577}
> │ > │ 02:19:39 verbose #20 
> benchmark.run / solutions.map / 
> │ > {i = 3; test_name = semi_open_2; time = 582}
> │ > │ 02:19:40 verbose #21 
> benchmark.run / solutions.map / 
> │ > {i = 4; test_name = closed_2; time = 585}
> │ > │ 
> │ > │ 02:19:40 verbose #22 
> benchmark.run / {input_str = 
> │ > struct ([|1; 2; 3; 4...00; ...|], 60, 1000)}
> │ > │ 02:19:41 verbose #23 
> benchmark.run / solutions.map / 
> │ > {i = 1; test_name = semi_open_1; time = 610}
> │ > │ 02:19:42 verbose #24 
> benchmark.run / solutions.map / 
> │ > {i = 2; test_name = closed_1; time = 672}
> │ > │ 02:19:42 verbose #25 
> benchmark.run / solutions.map / 
> │ > {i = 3; test_name = semi_open_2; time = 636}
> │ > │ 02:19:43 verbose #26 
> benchmark.run / solutions.map / 
> │ > {i = 4; test_name = closed_2; time = 629}
> │ > │ 
> │ > │ 02:19:43 verbose #27 
> benchmark.run / {input_str = 
> │ > struct ([|1; 3; 4; 6; 8; 9; 11|], 6, 7)}
> │ > │ 02:19:44 verbose #28 
> benchmark.run / solutions.map / 
> │ > {i = 1; test_name = semi_open_1; time = 599}
> │ > │ 02:19:44 verbose #29 
> benchmark.run / solutions.map / 
> │ > {i = 2; test_name = closed_1; time = 561}
> │ > │ 02:19:45 verbose #30 
> benchmark.run / solutions.map / 
> │ > {i = 3; test_name = semi_open_2; time = 604}
> │ > │ 02:19:46 verbose #31 
> benchmark.run / solutions.map / 
> │ > {i = 4; test_name = closed_2; time = 573}
> │ > │ 
> │ > │ 02:19:46 verbose #32 
> benchmark.run / {input_str = 
> │ > struct ([|1; 3; 4; 6; 8; 9; 11|], 1, 7)}
> │ > │ 02:19:47 verbose #33 
> benchmark.run / solutions.map / 
> │ > {i = 1; test_name = semi_open_1; time = 635}
> │ > │ 02:19:47 verbose #34 
> benchmark.run / solutions.map / 
> │ > {i = 2; test_name = closed_1; time = 603}
> │ > │ 02:19:48 verbose #35 
> benchmark.run / solutions.map / 
> │ > {i = 3; test_name = semi_open_2; time = 644}
> │ > │ 02:19:49 verbose #36 
> benchmark.run / solutions.map / 
> │ > {i = 4; test_name = closed_2; time = 628}
> │ > │ 
> │ > │ 02:19:49 verbose #37 
> benchmark.run / {input_str = 
> │ > struct ([|1; 3; 4; 6; 8; 9; 11|], 11, 7)}
> │ > │ 02:19:49 verbose #38 
> benchmark.run / solutions.map / 
> │ > {i = 1; test_name = semi_open_1; time = 643}
> │ > │ 02:19:50 verbose #39 
> benchmark.run / solutions.map / 
> │ > {i = 2; test_name = closed_1; time = 606}
> │ > │ 02:19:51 verbose #40 
> benchmark.run / solutions.map / 
> │ > {i = 3; test_name = semi_open_2; time = 636}
> │ > │ 02:19:52 verbose #41 
> benchmark.run / solutions.map / 
> │ > {i = 4; test_name = closed_2; time = 624}
> │ > │ 
> │ > │ 02:19:52 verbose #42 
> benchmark.run / {input_str = 
> │ > struct ([|1; 3; 4; 6; 8; 9; 11|], 12, 7)}
> │ > │ 02:19:52 verbose #43 
> benchmark.run / solutions.map / 
> │ > {i = 1; test_name = semi_open_1; time = 689}
> │ > │ 02:19:53 verbose #44 
> benchmark.run / solutions.map / 
> │ > {i = 2; test_name = closed_1; time = 613}
> │ > │ 02:19:54 verbose #45 
> benchmark.run / solutions.map / 
> │ > {i = 3; test_name = semi_open_2; time = 623}
> │ > │ 02:19:55 verbose #46 
> benchmark.run / solutions.map / 
> │ > {i = 4; test_name = closed_2; time = 613}
> │ > │ 
> │ > │ 02:19:55 verbose #47 
> benchmark.run / {input_str = 
> │ > struct ([|1; 2; 3; 4...100; ...|], 60, 100)}
> │ > │ 02:19:55 verbose #48 
> benchmark.run / solutions.map / 
> │ > {i = 1; test_name = semi_open_1; time = 630}
> │ > │ 02:19:56 verbose #49 
> benchmark.run / solutions.map / 
> │ > {i = 2; test_name = closed_1; time = 633}
> │ > │ 02:19:57 verbose #50 
> benchmark.run / solutions.map / 
> │ > {i = 3; test_name = semi_open_2; time = 653}
> │ > │ 02:19:58 verbose #51 
> benchmark.run / solutions.map / 
> │ > {i = 4; test_name = closed_2; time = 646}
> │ > │ ```
> │ > │ input
> | expected	| result  	|
> │ > best  
> │ > │ ---
> | ---     	| ---     	|
> │ > ---   
> │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7)
> | US4_0 3 	| US4_0 3 	|
> │ > 4, 610
> │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7)
> | US4_0 0 	| US4_0 0 	|
> │ > 2, 559
> │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7)
> | US4_0 6 	| US4_0 6 	|
> │ > 1, 550
> │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 12, 7)
> | US4_1   	| US4_1   	|
> │ > 1, 574
> │ > │ struct ([1; 2; 3; 4...00; ...], 60, 
> 1000)	| US4_0 59	| US4_0 59	|
> │ > 1, 610
> │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7)
> | US4_0 3 	| US4_0 3 	|
> │ > 2, 561
> │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7)
> | US4_0 0 	| US4_0 0 	|
> │ > 2, 603
> │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7)
> | US4_0 6 	| US4_0 6 	|
> │ > 2, 606
> │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 12, 7)
> | US4_1   	| US4_1   	|
> │ > 2, 613
> │ > │ struct ([1; 2; 3; 4...100; ...], 60, 
> 100)	| US4_0 59	| US4_0 59	|
> │ > 1, 630
> │ > │ ```
> │ > │ 02:19:58 verbose #52 
> benchmark.sort_result_list / 
> │ > averages.iter / {avg = 602; i = 2}
> │ > │ 02:19:58 verbose #53 
> benchmark.sort_result_list / 
> │ > averages.iter / {avg = 607; i = 4}
> │ > │ 02:19:58 verbose #54 
> benchmark.sort_result_list / 
> │ > averages.iter / {avg = 619; i = 1}
> │ > │ 02:19:58 verbose #55 
> benchmark.sort_result_list / 
> │ > averages.iter / {avg = 625; i = 3}
> │ > │ ```
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > //// timeout=90000
> │ > 
> │ > inl binary_search_semi_open_1 arr target left right =
> │ >     inl rec body left right =
> │ >         if left >= right
> │ >         then None
> │ >         else
> │ >             inl mid = (left + right) / 2
> │ >             inl item = index arr mid
> │ >             if item = target
> │ >             then Some mid
> │ >             elif item < target
> │ >             then loop (mid + 1) right
> │ >             else loop left mid
> │ >     and inl loop left right =
> │ >         if var_is right |> not
> │ >         then body left right
> │ >         else
> │ >             inl left = dyn left
> │ >             join body left right
> │ >     loop left right
> │ > 
> │ > inl binary_search_closed_1 arr target left right =
> │ >     inl rec body left right =
> │ >         if left > right
> │ >         then None
> │ >         else
> │ >             inl mid = (left + right) / 2
> │ >             inl item = index arr mid
> │ >             if item = target
> │ >             then Some mid
> │ >             elif item < target
> │ >             then loop (mid + 1) right
> │ >             else loop left (mid - 1)
> │ >     and inl loop left right =
> │ >         if var_is right |> not
> │ >         then body left right
> │ >         else
> │ >             inl left = dyn left
> │ >             join body left right
> │ >     loop left right
> │ > 
> │ > inl binary_search_semi_open_2 arr target left right =
> │ >     let rec body left right =
> │ >         if left >= right
> │ >         then None
> │ >         else
> │ >             inl mid = (left + right) / 2
> │ >             inl item = index arr mid
> │ >             if item = target
> │ >             then Some mid
> │ >             elif item < target
> │ >             then loop (mid + 1) right
> │ >             else loop left mid
> │ >     and inl loop left right = body left right
> │ >     loop left right
> │ > 
> │ > inl binary_search_closed_2 arr target left right =
> │ >     let rec body left right =
> │ >         if left > right
> │ >         then None
> │ >         else
> │ >             inl mid = (left + right) / 2
> │ >             inl item = index arr mid
> │ >             if item = target
> │ >             then Some mid
> │ >             elif item < target
> │ >             then loop (mid + 1) right
> │ >             else loop left (mid - 1)
> │ >     and inl loop left right = body left right
> │ >     loop left right
> │ > 
> │ > inl get_solutions () =
> │ >     [[
> │ >         "semi_open_1",
> │ >         fun (arr, (target, len)) =>
> │ >             binary_search_semi_open_1 arr target 0 len
> │ > 
> │ >         "closed_1",
> │ >         fun (arr, (target, len)) =>
> │ >             binary_search_closed_1 arr target 0 (len - 1)
> │ > 
> │ >         "semi_open_2",
> │ >         fun (arr, (target, len)) =>
> │ >             binary_search_semi_open_2 arr target 0 len
> │ > 
> │ >         "closed_2",
> │ >         fun (arr, (target, len)) =>
> │ >             binary_search_closed_2 arr target 0 (len - 1)
> │ >     ]]
> │ > 
> │ > inl rec binary_search_tests () =
> │ >     inl arr_with_len target len arr =
> │ >         arr, (target, (len |> optionm'.default_with fun () 
> => length arr))
> │ > 
> │ >     inl test_cases = [[
> │ >         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 6
> None), (Some 3i32)
> │ >         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 1
> None), (Some 0i32)
> │ >         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 
> 11 None), (Some 6i32)
> │ >         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 
> 12 None), None
> │ >         ((am'.init_series 1i32 1000 1 |> fun x => a x : _ 
> int _) |> arr_with_len
> │ > 60 None), (Some 59)
> │ > 
> │ >         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 6
> (Some 7)), (Some 
> │ > 3i32)
> │ >         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 1
> (Some 7)), (Some 
> │ > 0i32)
> │ >         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 
> 11 (Some 7)), (Some 
> │ > 6i32)
> │ >         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 
> 12 (Some 7)), None
> │ >         ((am'.init_series 1i32 1000 1 |> fun x => a x : _ 
> int _) |> arr_with_len
> │ > 60 (Some 100)), (Some 59)
> │ >     ]]
> │ > 
> │ >     inl solutions = get_solutions ()
> │ > 
> │ >     // inl is_fast () = true
> │ > 
> │ >     inl count =
> │ >         if is_fast ()
> │ >         then 1000i32
> │ >         else 10000000i32
> │ > 
> │ >     run_all (reflection.nameof { binary_search_tests }) 
> count solutions 
> │ > test_cases
> │ >     |> sort_result_list
> │ > 
> │ > 
> │ > let main () =
> │ >     binary_search_tests ()
> │ > 
> │ > ── [ 29.56s - stdout ] 
> ─────────────────────────────────────────────────────────
> │ > │ 
> │ > │ ```
> │ > │ 00:00:00 v #1 benchmark.run_all / {
> test_name = 
> │ > binary_search_tests; count = 10000000 }
> │ > │ 
> │ > │ 00:00:00 v #2 benchmark.run / { 
> input_str = struct ([|1;
> │ > 3; 4; 6; 8; 9; 11|], 6, 7) }
> │ > │ 00:00:00 v #3 benchmark.run / 
> solutions.map / { i = 1; 
> │ > test_name = semi_open_1; time = 567 }
> │ > │ 00:00:01 v #4 benchmark.run / 
> solutions.map / { i = 2; 
> │ > test_name = closed_1; time = 529 }
> │ > │ 00:00:02 v #5 benchmark.run / 
> solutions.map / { i = 3; 
> │ > test_name = semi_open_2; time = 578 }
> │ > │ 00:00:03 v #6 benchmark.run / 
> solutions.map / { i = 4; 
> │ > test_name = closed_2; time = 568 }
> │ > │ 
> │ > │ 00:00:03 v #7 benchmark.run / { 
> input_str = struct ([|1;
> │ > 3; 4; 6; 8; 9; 11|], 1, 7) }
> │ > │ 00:00:03 v #8 benchmark.run / 
> solutions.map / { i = 1; 
> │ > test_name = semi_open_1; time = 567 }
> │ > │ 00:00:04 v #9 benchmark.run / 
> solutions.map / { i = 2; 
> │ > test_name = closed_1; time = 583 }
> │ > │ 00:00:05 v #10 benchmark.run / 
> solutions.map / { i = 3; 
> │ > test_name = semi_open_2; time = 593 }
> │ > │ 00:00:05 v #11 benchmark.run / 
> solutions.map / { i = 4; 
> │ > test_name = closed_2; time = 574 }
> │ > │ 
> │ > │ 00:00:05 v #12 benchmark.run / { 
> input_str = struct 
> │ > ([|1; 3; 4; 6; 8; 9; 11|], 11, 7) }
> │ > │ 00:00:06 v #13 benchmark.run / 
> solutions.map / { i = 1; 
> │ > test_name = semi_open_1; time = 687 }
> │ > │ 00:00:07 v #14 benchmark.run / 
> solutions.map / { i = 2; 
> │ > test_name = closed_1; time = 717 }
> │ > │ 00:00:08 v #15 benchmark.run / 
> solutions.map / { i = 3; 
> │ > test_name = semi_open_2; time = 716 }
> │ > │ 00:00:09 v #16 benchmark.run / 
> solutions.map / { i = 4; 
> │ > test_name = closed_2; time = 679 }
> │ > │ 
> │ > │ 00:00:09 v #17 benchmark.run / { 
> input_str = struct 
> │ > ([|1; 3; 4; 6; 8; 9; 11|], 12, 7) }
> │ > │ 00:00:10 v #18 benchmark.run / 
> solutions.map / { i = 1; 
> │ > test_name = semi_open_1; time = 631 }
> │ > │ 00:00:11 v #19 benchmark.run / 
> solutions.map / { i = 2; 
> │ > test_name = closed_1; time = 613 }
> │ > │ 00:00:11 v #20 benchmark.run / 
> solutions.map / { i = 3; 
> │ > test_name = semi_open_2; time = 550 }
> │ > │ 00:00:12 v #21 benchmark.run / 
> solutions.map / { i = 4; 
> │ > test_name = closed_2; time = 456 }
> │ > │ 
> │ > │ 00:00:12 v #22 benchmark.run / { 
> input_str = struct 
> │ > ([|1; 2; 3; 4...00; ...|], 60, 1000) }
> │ > │ 00:00:13 v #23 benchmark.run / 
> solutions.map / { i = 1; 
> │ > test_name = semi_open_1; time = 675 }
> │ > │ 00:00:13 v #24 benchmark.run / 
> solutions.map / { i = 2; 
> │ > test_name = closed_1; time = 470 }
> │ > │ 00:00:14 v #25 benchmark.run / 
> solutions.map / { i = 3; 
> │ > test_name = semi_open_2; time = 517 }
> │ > │ 00:00:15 v #26 benchmark.run / 
> solutions.map / { i = 4; 
> │ > test_name = closed_2; time = 552 }
> │ > │ 
> │ > │ 00:00:15 v #27 benchmark.run / { 
> input_str = struct 
> │ > ([|1; 3; 4; 6; 8; 9; 11|], 6, 7) }
> │ > │ 00:00:15 v #28 benchmark.run / 
> solutions.map / { i = 1; 
> │ > test_name = semi_open_1; time = 425 }
> │ > │ 00:00:16 v #29 benchmark.run / 
> solutions.map / { i = 2; 
> │ > test_name = closed_1; time = 456 }
> │ > │ 00:00:17 v #30 benchmark.run / 
> solutions.map / { i = 3; 
> │ > test_name = semi_open_2; time = 670 }
> │ > │ 00:00:17 v #31 benchmark.run / 
> solutions.map / { i = 4; 
> │ > test_name = closed_2; time = 492 }
> │ > │ 
> │ > │ 00:00:17 v #32 benchmark.run / { 
> input_str = struct 
> │ > ([|1; 3; 4; 6; 8; 9; 11|], 1, 7) }
> │ > │ 00:00:18 v #33 benchmark.run / 
> solutions.map / { i = 1; 
> │ > test_name = semi_open_1; time = 433 }
> │ > │ 00:00:19 v #34 benchmark.run / 
> solutions.map / { i = 2; 
> │ > test_name = closed_1; time = 450 }
> │ > │ 00:00:19 v #35 benchmark.run / 
> solutions.map / { i = 3; 
> │ > test_name = semi_open_2; time = 441 }
> │ > │ 00:00:20 v #36 benchmark.run / 
> solutions.map / { i = 4; 
> │ > test_name = closed_2; time = 448 }
> │ > │ 
> │ > │ 00:00:20 v #37 benchmark.run / { 
> input_str = struct 
> │ > ([|1; 3; 4; 6; 8; 9; 11|], 11, 7) }
> │ > │ 00:00:20 v #38 benchmark.run / 
> solutions.map / { i = 1; 
> │ > test_name = semi_open_1; time = 443 }
> │ > │ 00:00:21 v #39 benchmark.run / 
> solutions.map / { i = 2; 
> │ > test_name = closed_1; time = 477 }
> │ > │ 00:00:22 v #40 benchmark.run / 
> solutions.map / { i = 3; 
> │ > test_name = semi_open_2; time = 550 }
> │ > │ 00:00:23 v #41 benchmark.run / 
> solutions.map / { i = 4; 
> │ > test_name = closed_2; time = 540 }
> │ > │ 
> │ > │ 00:00:23 v #42 benchmark.run / { 
> input_str = struct 
> │ > ([|1; 3; 4; 6; 8; 9; 11|], 12, 7) }
> │ > │ 00:00:23 v #43 benchmark.run / 
> solutions.map / { i = 1; 
> │ > test_name = semi_open_1; time = 646 }
> │ > │ 00:00:24 v #44 benchmark.run / 
> solutions.map / { i = 2; 
> │ > test_name = closed_1; time = 498 }
> │ > │ 00:00:25 v #45 benchmark.run / 
> solutions.map / { i = 3; 
> │ > test_name = semi_open_2; time = 464 }
> │ > │ 00:00:25 v #46 benchmark.run / 
> solutions.map / { i = 4; 
> │ > test_name = closed_2; time = 435 }
> │ > │ 
> │ > │ 00:00:25 v #47 benchmark.run / { 
> input_str = struct 
> │ > ([|1; 2; 3; 4...100; ...|], 60, 100) }
> │ > │ 00:00:26 v #48 benchmark.run / 
> solutions.map / { i = 1; 
> │ > test_name = semi_open_1; time = 459 }
> │ > │ 00:00:27 v #49 benchmark.run / 
> solutions.map / { i = 2; 
> │ > test_name = closed_1; time = 465 }
> │ > │ 00:00:27 v #50 benchmark.run / 
> solutions.map / { i = 3; 
> │ > test_name = semi_open_2; time = 475 }
> │ > │ 00:00:28 v #51 benchmark.run / 
> solutions.map / { i = 4; 
> │ > test_name = closed_2; time = 474 }
> │ > │ ```
> │ > │ input                                    	
> | expected	| result  	| 
> │ > best  
> │ > │ ---                                      	
> | ---     	| ---     	| 
> │ > ---   
> │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7)    	
> | US6_0 3 	| US6_0 3 	| 
> │ > 2, 529
> │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7)    	
> | US6_0 0 	| US6_0 0 	| 
> │ > 1, 567
> │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7)   	
> | US6_0 6 	| US6_0 6 	| 
> │ > 4, 679
> │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 12, 7)   	
> | US6_1   	| US6_1   	| 
> │ > 4, 456
> │ > │ struct ([1; 2; 3; 4...00; ...], 60, 
> 1000)	| US6_0 59	| US6_0 59	| 
> │ > 2, 470
> │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7)    	
> | US6_0 3 	| US6_0 3 	| 
> │ > 1, 425
> │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7)    	
> | US6_0 0 	| US6_0 0 	| 
> │ > 1, 433
> │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7)   	
> | US6_0 6 	| US6_0 6 	| 
> │ > 1, 443
> │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 12, 7)   	
> | US6_1   	| US6_1   	| 
> │ > 4, 435
> │ > │ struct ([1; 2; 3; 4...100; ...], 60, 
> 100)	| US6_0 59	| US6_0 59	| 
> │ > 1, 459
> │ > │ ```
> │ > │ 00:00:28 v #52 
> benchmark.sort_result_list / 
> │ > averages.iter / { i = 4; avg = 521 }
> │ > │ 00:00:28 v #53 
> benchmark.sort_result_list / 
> │ > averages.iter / { i = 2; avg = 525 }
> │ > │ 00:00:28 v #54 
> benchmark.sort_result_list / 
> │ > averages.iter / { i = 1; avg = 553 }
> │ > │ 00:00:28 v #55 
> benchmark.sort_result_list / 
> │ > averages.iter / { i = 3; avg = 555 }
> │ > │ ```
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## returnLettersWithOddCountTests
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ Test: ReturnLettersWithOddCount
> │ > │ 
> │ > │ Solution: 1
> │ > │ Test case 1. A. Time: 645L
> │ > │ 
> │ > │ Solution: 2
> │ > │ Test case 1. A. Time: 663L
> │ > │ 
> │ > │ Solution: 3
> │ > │ Test case 1. A. Time: 680L
> │ > │ 
> │ > │ Solution: 9
> │ > │ Test case 1. A. Time: 730L
> │ > │ 
> │ > │ Solution: 10
> │ > │ Test case 1. A. Time: 815L
> │ > │ 
> │ > │ Input   | Expected        | Result
> | Best
> │ > │ ---     | ---             | ---
> | ---
> │ > │ 1       | a               | a
> | (1, 645)
> │ > │ 2       | ba              | ba
> | (1, 663)
> │ > │ 3       | aaa             | aaa
> | (1, 680)
> │ > │ 9       | aaaaaaaaa       | aaaaaaaaa
> | (1, 730)
> │ > │ 10      | baaaaaaaaa      | baaaaaaaaa
> | (1, 815)
> │ > │ 
> │ > │ Averages
> │ > │ Test case 1. Average Time: 706L
> │ > │ 
> │ > │ Ranking
> │ > │ Test case 1. Average Time: 706L
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > let solutions = [[
> │ >     "A",
> │ >     fun n ->
> │ >         let mutable _builder = StringBuilder (new 
> string('a', n))
> │ >         if n % 2 = 0 then
> │ >             _builder.[[0]] <- 'b'
> │ > 
> │ >         _builder.ToString ()
> │ > ]]
> │ > let testCases = seq {
> │ >     1, "a"
> │ >     2, "ba"
> │ >     3, "aaa"
> │ >     9, "aaaaaaaaa"
> │ >     10, "baaaaaaaaa"
> │ > }
> │ > let rec returnLettersWithOddCountTests =
> │ >     runAll (nameof returnLettersWithOddCountTests) _count 
> solutions testCases
> │ > returnLettersWithOddCountTests
> │ > |> sortResultList
> │ > 
> │ > ── [ 775.41ms - stdout ] 
> ───────────────────────────────────────────────────────
> │ > │ 
> │ > │ 
> │ > │ Test: returnLettersWithOddCountTests
> │ > │ 
> │ > │ Solution: 1  
> │ > │ Test case 1. A. Time: 0L  
> │ > │ 
> │ > │ Solution: 2  
> │ > │ Test case 1. A. Time: 0L  
> │ > │ 
> │ > │ Solution: 3  
> │ > │ Test case 1. A. Time: 0L  
> │ > │ 
> │ > │ Solution: 9  
> │ > │ Test case 1. A. Time: 0L  
> │ > │ 
> │ > │ Solution: 10  
> │ > │ Test case 1. A. Time: 0L  
> │ > │ 
> │ > │ Input	| Expected  	| Result    	| Best  
> │ > │ ---  	| ---       	| ---       	| ---   
> │ > │ 1    	| a         	| a         	| (1, 0)
> │ > │ 2    	| ba        	| ba        	| (1, 0)
> │ > │ 3    	| aaa       	| aaa       	| (1, 0)
> │ > │ 9    	| aaaaaaaaa 	| aaaaaaaaa 	| (1, 0)
> │ > │ 10   	| baaaaaaaaa	| baaaaaaaaa	| (1, 0)
> │ > │ 
> │ > │ Average Ranking  
> │ > │ Test case 1. Average Time: 0L  
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## hasAnyPairCloseToEachotherTests
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ Test: HasAnyPairCloseToEachother
> │ > │ 
> │ > │ Solution: 0
> │ > │ Test case 1. A. Time: 137L
> │ > │ 
> │ > │ Solution: 1,2
> │ > │ Test case 1. A. Time: 186L
> │ > │ 
> │ > │ Solution: 3,5
> │ > │ Test case 1. A. Time: 206L
> │ > │ 
> │ > │ Solution: 3,4,6
> │ > │ Test case 1. A. Time: 149L
> │ > │ 
> │ > │ Solution: 2,4,6
> │ > │ Test case 1. A. Time: 150L
> │ > │ 
> │ > │ Input   | Expected        | Result  | 
> Best
> │ > │ ---     | ---             | ---     | 
> ---
> │ > │ 0       | False           | False   | 
> (1, 137)
> │ > │ 1,2     | True            | True    | 
> (1, 186)
> │ > │ 3,5     | False           | False   | 
> (1, 206)
> │ > │ 3,4,6   | True            | True    | 
> (1, 149)
> │ > │ 2,4,6   | False           | False   | 
> (1, 150)
> │ > │ 
> │ > │ Averages
> │ > │ Test case 1. Average Time: 165L
> │ > │ 
> │ > │ Ranking
> │ > │ Test case 1. Average Time: 165L
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > let solutions = [[
> │ >     "A",
> │ >     fun (a: int[[]]) ->
> │ >         let indices = System.Linq.Enumerable.Range(0, 
> a.Length) |> 
> │ > System.Linq.Enumerable.ToArray
> │ >         System.Array.Sort (a, indices)
> │ > 
> │ >         indices
> │ >         |> Array.take (a.Length - 1)
> │ >         |> Array.exists (fun i -> a.[[i + 1]] - a.[[i]] = 
> 1)
> │ > ]]
> │ > let testCases = seq {
> │ >     [[| 0 |]], false
> │ >     [[| 1; 2 |]], true
> │ >     [[| 3; 5 |]], false
> │ >     [[| 3; 4; 6 |]], true
> │ >     [[| 2; 4; 6 |]], false
> │ > }
> │ > let rec hasAnyPairCloseToEachotherTests =
> │ >     runAll (nameof hasAnyPairCloseToEachotherTests) _count 
> solutions testCases
> │ > hasAnyPairCloseToEachotherTests
> │ > |> sortResultList
> │ > 
> │ > ── [ 725.78ms - stdout ] 
> ───────────────────────────────────────────────────────
> │ > │ 
> │ > │ 
> │ > │ Test: hasAnyPairCloseToEachotherTests
> │ > │ 
> │ > │ Solution: 0  
> │ > │ Test case 1. A. Time: 1L  
> │ > │ 
> │ > │ Solution: 1,2  
> │ > │ Test case 1. A. Time: 0L  
> │ > │ 
> │ > │ Solution: 3,5  
> │ > │ Test case 1. A. Time: 0L  
> │ > │ 
> │ > │ Solution: 3,4,6  
> │ > │ Test case 1. A. Time: 0L  
> │ > │ 
> │ > │ Solution: 2,4,6  
> │ > │ Test case 1. A. Time: 0L  
> │ > │ 
> │ > │ Input	| Expected	| Result	| Best  
> │ > │ ---  	| ---     	| ---   	| ---   
> │ > │ 0    	| False   	| False 	| (1, 1)
> │ > │ 1,2  	| True    	| True  	| (1, 0)
> │ > │ 3,5  	| False   	| False 	| (1, 0)
> │ > │ 3,4,6	| True    	| True  	| (1, 0)
> │ > │ 2,4,6	| False   	| False 	| (1, 0)
> │ > │ 
> │ > │ Average Ranking  
> │ > │ Test case 1. Average Time: 0L  
> │ > │ 
> │ 00:01:21 v #3 runtime.execute_with_options / result / {
> exit_code = 0; std_trace_length = 84669 }
> │ 00:01:21 d #4 runtime.execute_with_options / { 
> file_name = jupyter; arguments = ["nbconvert", 
> "c:/home/git/polyglot/apps/perf/Perf.dib.ipynb", "--to", "html", 
> "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert 
> "c:/home/git/polyglot/apps/perf/Perf.dib.ipynb" --to html 
> --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = 
> Array(MutCell([])); on_line = None; stdin = None; trace = true; 
> working_directory = None } }
> │ 00:01:22 v #5 ! [NbConvertApp] Converting notebook 
> c:/home/git/polyglot/apps/perf/Perf.dib.ipynb to html
> │ 00:01:22 v #6 ! 
> C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.
> py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a 
> hard error in future nbformat versions. You may want to use `normalize()` on 
> your notebooks before validations (available since nbformat 5.1.4). Previous 
> versions of nbformat are fixing this issue transparently, and will stop doing so
> in the future.
> │ 00:01:22 v #7 !   validate(nb)
> │ 00:01:23 v #8 ! 
> C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\
> highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python
> 3
> │ 00:01:23 v #9 !   return _pygments_highlight(
> │ 00:01:24 v #10 ! [NbConvertApp] Writing 458063 bytes to
> c:\home\git\polyglot\apps\perf\Perf.dib.html
> │ 00:01:24 v #11 runtime.execute_with_options / result / 
> { exit_code = 0; std_trace_length = 848 }
> │ 00:01:24 d #12 spiral.run / dib / jupyter nbconvert / {
> exit_code = 0; jupyter_result_length = 848 }
> │ 00:01:24 d #13 runtime.execute_with_options / { 
> file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 
> 'c:/home/git/polyglot/apps/perf/Perf.dib.html'; (Get-Content $path -Raw) 
> -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } 
> | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 
> 'c:/home/git/polyglot/apps/perf/Perf.dib.html'; (Get-Content $path -Raw) 
> -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | 
> Set-Content $path"; cancellation_token = None; environment_variables = 
> Array(MutCell([])); on_line = None; stdin = None; trace = true; 
> working_directory = None } }
> │ 00:01:25 v #14 runtime.execute_with_options / result / 
> { exit_code = 0; std_trace_length = 0 }
> │ 00:01:25 d #15 spiral.run / dib / html cell ids / { 
> exit_code = 0; pwsh_replace_html_result_length = 0 }
> │ 00:01:25 d #16 spiral.run / dib / { exit_code = 0; 
> result_length = 85576 }
> │ 00:00:00 d #1 writeDibCode / output: Fs / path: Perf.dib
> │ 00:00:00 d #2 parseDibCode / output: Fs / file: Perf.dib
> │ 
> 
> ── pwsh ────────────────────────────────────────────────────────────────────────
> { pwsh ../apps/dir-tree-html/build.ps1 } | Invoke-Block
> 
> ── [ 58.32s - stdout ] ─────────────────────────────────────────────────────────
> │ 00:00:00 d #1 spiral.main / { args = 
> Array(MutCell(["dib", "--path", "DirTreeHtml.dib"])) }
> │ 00:00:00 d #2 runtime.execute_with_options / { 
> file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", 
> "c:/home/git/polyglot/apps/dir-tree-html/DirTreeHtml.dib", "--output-path", 
> "c:/home/git/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb"]; options = { 
> command = dotnet repl --exit-after-run --run 
> "c:/home/git/polyglot/apps/dir-tree-html/DirTreeHtml.dib" --output-path 
> "c:/home/git/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb"; 
> cancellation_token = None; environment_variables = 
> Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = 
> None; stdin = None; trace = false; working_directory = None } }
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ # DirTreeHtml (Polyglot)
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
> │ > dard2.1/FSharp.Control.AsyncSeq.dll"
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
> │ > 0/System.Reactive.dll"
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/
> │ > netstandard2.0/System.Reactive.Linq.dll"
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll"
> │ > #r 
> │ > 
> @"../../../../../../../.nuget/packages/falco.markup/1.1.1/lib/netstandard2.0/Fal
> │ > co.Markup.dll"
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > #if !INTERACTIVE
> │ > open Lib
> │ > #endif
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > open SpiralFileSystem.Operators
> │ > open Falco.Markup
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > type FileSystemNode =
> │ >     | File of string * string * int64
> │ >     | Folder of string * string * FileSystemNode list
> │ >     | Root of FileSystemNode list
> │ > 
> │ > let rec scanDirectory isRoot (basePath : string) (path : 
> string) =
> │ >     let relativePath =
> │ >         path
> │ >         |> SpiralSm.replace basePath ""
> │ >         |> SpiralSm.replace "\\" "/"
> │ >         |> SpiralSm.replace "//" "/"
> │ >         |> SpiralSm.trim_start [[| '/' |]]
> │ > 
> │ >     let directories =
> │ >         path
> │ >         |> System.IO.Directory.GetDirectories
> │ >         |> Array.toList
> │ >         |> List.sort
> │ >         |> List.map (scanDirectory false basePath)
> │ >     let files =
> │ >         path
> │ >         |> System.IO.Directory.GetFiles
> │ >         |> Array.toList
> │ >         |> List.sort
> │ >         |> List.map (fun f -> File 
> (System.IO.Path.GetFileName f, relativePath, 
> │ > System.IO.FileInfo(f).Length))
> │ > 
> │ >     let children = directories @ files
> │ >     if isRoot
> │ >     then Root children
> │ >     else Folder (path |> System.IO.Path.GetFileName, 
> relativePath, children)
> │ > 
> │ > let rec generateHtml fsNode =
> │ >     let sizeLabel size =
> │ >         match float size with
> │ >         | size when size > 1024.0 * 1024.0 -> $"%.2f{size /
> 1024.0 / 1024.0} MB"
> │ >         | size when size > 1024.0 -> $"%.2f{size / 1024.0} 
> KB"
> │ >         | size -> $"%.2f{size} B"
> │ >     match fsNode with
> │ >     | File (fileName, relativePath, size) ->
> │ >         Elem.div [[]] [[
> │ >             Text.raw "&#128196; "
> │ >             Elem.a [[
> │ >                 Attr.href $"""{relativePath}{if 
> relativePath = "" then "" else 
> │ > "/"}{fileName}"""
> │ >             ]] [[
> │ >                 Text.raw fileName
> │ >             ]]
> │ >             Elem.span [[]] [[
> │ >                 Text.raw $" ({size |> sizeLabel})"
> │ >             ]]
> │ >         ]]
> │ >     | Folder (folderName, relativePath, children) ->
> │ >         let size =
> │ >             let rec loop children =
> │ >                 children
> │ >                 |> List.sumBy (function
> │ >                     | File (_, _, size) -> size
> │ >                     | Folder (_, _, children)
> │ >                     | Root children -> loop children
> │ >                 )
> │ >             loop children
> │ >         Elem.details [[
> │ >             Attr.open' "true"
> │ >         ]] [[
> │ >             Elem.summary [[]] [[
> │ >                 Text.raw "&#128194; "
> │ >                 Elem.a [[
> │ >                     Attr.href relativePath
> │ >                 ]] [[
> │ >                     Text.raw folderName
> │ >                 ]]
> │ >                 Elem.span [[]] [[
> │ >                     Text.raw $" ({size |> sizeLabel})"
> │ >                 ]]
> │ >             ]]
> │ >             Elem.div [[]] [[
> │ >                 yield! children |> List.map generateHtml
> │ >             ]]
> │ >         ]]
> │ >     | Root children ->
> │ >         Elem.div [[]] [[
> │ >             yield! children |> List.map generateHtml
> │ >         ]]
> │ > 
> │ > let generateHtmlForFileSystem root =
> │ >     $"""<!DOCTYPE html>
> │ > <html lang="en">
> │ > <head>
> │ >   <meta charset="UTF-8">
> │ >   <style>
> │ > body {{
> │ >     background-color: #222;
> │ >     color: #ccc;
> │ > }}
> │ > a {{
> │ >   color: #777;
> │ >   font-size: 15px;
> │ > }}
> │ > span {{
> │ >   font-size: 11px;
> │ > }}
> │ > div > div {{
> │ >   padding-left: 10px;
> │ > }}
> │ > details > div {{
> │ >   padding-left: 19px;
> │ > }}
> │ >   </style>
> │ > </head>
> │ > <body>
> │ >   {root |> generateHtml |> renderNode}
> │ > </body>
> │ > </html>
> │ > """
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > let expected = """<!DOCTYPE html>
> │ > <html lang="en">
> │ > <head>
> │ >   <meta charset="UTF-8">
> │ >   <style>
> │ > body {
> │ >     background-color: #222;
> │ >     color: #ccc;
> │ > }
> │ > a {
> │ >   color: #777;
> │ >   font-size: 15px;
> │ > }
> │ > span {
> │ >   font-size: 11px;
> │ > }
> │ > div > div {
> │ >   padding-left: 10px;
> │ > }
> │ > details > div {
> │ >   padding-left: 19px;
> │ > }
> │ >   </style>
> │ > </head>
> │ > <body>
> │ >   <div><details open="true"><summary>&#128194; <a 
> href="_.root">_.root</a><span>
> │ > (10.00 B)</span></summary><div><details 
> open="true"><summary>&#128194; <a 
> │ > href="_.root/3">3</a><span> (6.00 
> B)</span></summary><div><details 
> │ > open="true"><summary>&#128194; <a 
> href="_.root/3/2">2</a><span> (3.00 
> │ > B)</span></summary><div><details 
> open="true"><summary>&#128194; <a 
> │ > href="_.root/3/2/1">1</a><span> (1.00 
> B)</span></summary><div><div>&#128196; <a 
> │ > href="_.root/3/2/1/file.txt">file.txt</a><span> (1.00 
> │ > B)</span></div></div></details><div>&#128196; <a 
> │ > href="_.root/3/2/file.txt">file.txt</a><span> (2.00 
> │ > B)</span></div></div></details><div>&#128196; <a 
> │ > href="_.root/3/file.txt">file.txt</a><span> (3.00 
> │ > B)</span></div></div></details><div>&#128196; <a 
> │ > href="_.root/file.txt">file.txt</a><span> (4.00 
> │ > B)</span></div></div></details></div>
> │ > </body>
> │ > </html>
> │ > """
> │ > 
> │ > let struct (tempFolder, disposable) = expected |> 
> SpiralCrypto.hash_text |> 
> │ > SpiralFileSystem.create_temp_dir'
> │ > let rec loop d n = async {
> │ >     if n >= 0 then
> │ >         tempFolder </> d |> 
> System.IO.Directory.CreateDirectory |> ignore
> │ >         do!
> │ >             n
> │ >             |> string
> │ >             |> String.replicate (n + 1)
> │ >             |> SpiralFileSystem.write_all_text_async 
> (tempFolder </> d </> 
> │ > $"file.txt")
> │ >         do! loop $"{d}/{n}" (n - 1)
> │ > }
> │ > loop "_.root" 3
> │ > |> Async.RunSynchronously
> │ > 
> │ > let html =
> │ >     scanDirectory true tempFolder tempFolder
> │ >     |> generateHtmlForFileSystem
> │ > 
> │ > html
> │ > |> _assertEqual expected
> │ > 
> │ > disposable.Dispose ()
> │ > 
> │ > html |> 
> Microsoft.DotNet.Interactive.Formatting.Html.ToHtmlContent
> │ > 
> │ > ── [ 216.99ms - return value ] 
> ─────────────────────────────────────────────────
> │ > │ <!DOCTYPE html>
> │ > │ <html lang="en">
> │ > │ <head>
> │ > │   <meta charset="UTF-8">
> │ > │   <style>
> │ > │ body {
> │ > │     background-color: #222;
> │ > │     color: #ccc;
> │ > │ }
> │ > │ a {
> │ > │   color: #777;
> │ > │   font-size: 15px;
> │ > │ }
> │ > │ span {
> │ > │   font-size: 11px;
> │ > │ }
> │ > │ div > div {
> │ > │   padding-left: 10px;
> │ > │ }
> │ > │ details > div {
> │ > │   padding-left: 19px;
> │ > │ }
> │ > │   </style>
> │ > │ </head>
> │ > │ <body>
> │ > │   <div><details 
> open="true"><summary>&#128194; <a 
> │ > href="_.root">_.root</a><span> (10.00 
> B)</span></summary><div><details 
> │ > open="true"><summary>&#128194; <a 
> href="_.root/3">3</a><span> (6.00 
> │ > B)</span></summary><div><details 
> open="true"><summary>&#128194; <a 
> │ > href="_.root/3/2">2</a><span> (3.00 
> B)</span></summary><div><details 
> │ > open="true"><summary>&#128194; <a 
> href="_.root/3/2/1">1</a><span> (1.00 
> │ > B)</span></summary><div><div>&#128196; <a 
> │ > href="_.root/3/2/1/file.txt">file.txt</a><span> (1.00 
> │ > B)</span></div></div></details><div>&#128196; <a 
> │ > href="_.root/3/2/file.txt">file.txt</a><span> (2.00 
> │ > B)</span></div></div></details><div>&#128196; <a 
> │ > href="_.root/3/file.txt">file.txt</a><span> (3.00 
> │ > B)</span></div></div></details><div>&#128196; <a 
> │ > href="_.root/file.txt">file.txt</a><span> (4.00 
> │ > B)</span></div></div></details></div>
> │ > │ </body>
> │ > │ </html>
> │ > │ 
> │ > 
> │ > ── [ 221.13ms - stdout ] 
> ───────────────────────────────────────────────────────
> │ > │ "<!DOCTYPE html>
> │ > │ <html lang="en">
> │ > │ <head>
> │ > │   <meta charset="UTF-8">
> │ > │   <style>
> │ > │ body {
> │ > │     background-color: #222;
> │ > │     color: #ccc;
> │ > │ }
> │ > │ a {
> │ > │   color: #777;
> │ > │   font-size: 15px;
> │ > │ }
> │ > │ span {
> │ > │   font-size: 11px;
> │ > │ }
> │ > │ div > div {
> │ > │   padding-left: 10px;
> │ > │ }
> │ > │ details > div {
> │ > │   padding-left: 19px;
> │ > │ }
> │ > │   </style>
> │ > │ </head>
> │ > │ <body>
> │ > │   <div><details 
> open="true"><summary>&#128194; <a 
> │ > href="_.root">_.root</a><span> (10.00 
> B)</span></summary><div><details 
> │ > open="true"><summary>&#128194; <a 
> href="_.root/3">3</a><span> (6.00 
> │ > B)</span></summary><div><details 
> open="true"><summary>&#128194; <a 
> │ > href="_.root/3/2">2</a><span> (3.00 
> B)</span></summary><div><details 
> │ > open="true"><summary>&#128194; <a 
> href="_.root/3/2/1">1</a><span> (1.00 
> │ > B)</span></summary><div><div>&#128196; <a 
> │ > href="_.root/3/2/1/file.txt">file.txt</a><span> (1.00 
> │ > B)</span></div></div></details><div>&#128196; <a 
> │ > href="_.root/3/2/file.txt">file.txt</a><span> (2.00 
> │ > B)</span></div></div></details><div>&#128196; <a 
> │ > href="_.root/3/file.txt">file.txt</a><span> (3.00 
> │ > B)</span></div></div></details><div>&#128196; <a 
> │ > href="_.root/file.txt">file.txt</a><span> (4.00 
> │ > B)</span></div></div></details></div>
> │ > │ </body>
> │ > │ </html>
> │ > │ "
> │ > │ 
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## Arguments
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > [[<RequireQualifiedAccess>]]
> │ > type Arguments =
> │ >     | [[<Argu.ArguAttributes.ExactlyOnce>]] Dir of string
> │ >     | [[<Argu.ArguAttributes.ExactlyOnce>]] Html of string
> │ > 
> │ >     interface Argu.IArgParserTemplate with
> │ >         member s.Usage =
> │ >             match s with
> │ >             | Dir _ -> nameof Dir
> │ >             | Html _ -> nameof Html
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > Argu.ArgumentParser.Create<Arguments>().PrintUsage ()
> │ > 
> │ > ── [ 84.64ms - return value ] 
> ──────────────────────────────────────────────────
> │ > │ "USAGE: dotnet-repl [--help] --dir 
> <string> --html <string>
> │ > │ 
> │ > │ OPTIONS:
> │ > │ 
> │ > │     --dir <string>        Dir
> │ > │     --html <string>       Html
> │ > │     --help                display this 
> list of options.
> │ > │ "
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## main
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let main args =
> │ >     let argsMap = args |> Runtime.parseArgsMap<Arguments>
> │ > 
> │ >     let dir =
> │ >         match argsMap.[[nameof Arguments.Dir]] with
> │ >         | [[ Arguments.Dir dir ]] -> Some dir
> │ >         | _ -> None
> │ >         |> Option.get
> │ > 
> │ >     let htmlPath =
> │ >         match argsMap.[[nameof Arguments.Html]] with
> │ >         | [[ Arguments.Html html ]] -> Some html
> │ >         | _ -> None
> │ >         |> Option.get
> │ > 
> │ >     let fileSystem = scanDirectory true dir dir
> │ >     let html = generateHtmlForFileSystem fileSystem
> │ > 
> │ >     html |> SpiralFileSystem.write_all_text_async htmlPath
> │ >     |> Async.runWithTimeout 30000
> │ >     |> function
> │ >         | Some () -> 0
> │ >         | None -> 1
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > let args =
> │ >     System.Environment.GetEnvironmentVariable "ARGS"
> │ >     |> SpiralRuntime.split_args
> │ >     |> Result.toArray
> │ >     |> Array.collect id
> │ > 
> │ > match args with
> │ > | [[||]] -> 0
> │ > | args -> if main args = 0 then 0 else failwith "main 
> failed"
> │ > 
> │ > ── [ 74.71ms - return value ] 
> ──────────────────────────────────────────────────
> │ > │ <div class="dni-plaintext"><pre>0
> │ > │ </pre></div><style>
> │ > │ .dni-code-hint {
> │ > │     font-style: italic;
> │ > │     overflow: hidden;
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview {
> │ > │     white-space: nowrap;
> │ > │ }
> │ > │ .dni-treeview td {
> │ > │     vertical-align: top;
> │ > │     text-align: start;
> │ > │ }
> │ > │ details.dni-treeview {
> │ > │     padding-left: 1em;
> │ > │ }
> │ > │ table td {
> │ > │     text-align: start;
> │ > │ }
> │ > │ table tr { 
> │ > │     vertical-align: top; 
> │ > │     margin: 0em 0px;
> │ > │ }
> │ > │ table tr td pre 
> │ > │ { 
> │ > │     vertical-align: top !important; 
> │ > │     margin: 0em 0px !important;
> │ > │ } 
> │ > │ table th {
> │ > │     text-align: start;
> │ > │ }
> │ > │ </style>
> │ 00:00:20 v #3 runtime.execute_with_options / result / {
> exit_code = 0; std_trace_length = 13688 }
> │ 00:00:20 d #4 runtime.execute_with_options / { 
> file_name = jupyter; arguments = ["nbconvert", 
> "c:/home/git/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb", "--to", "html",
> "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert 
> "c:/home/git/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb" --to html 
> --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = 
> Array(MutCell([])); on_line = None; stdin = None; trace = true; 
> working_directory = None } }
> │ 00:00:22 v #5 ! [NbConvertApp] Converting notebook 
> c:/home/git/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb to html
> │ 00:00:22 v #6 ! 
> C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.
> py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a 
> hard error in future nbformat versions. You may want to use `normalize()` on 
> your notebooks before validations (available since nbformat 5.1.4). Previous 
> versions of nbformat are fixing this issue transparently, and will stop doing so
> in the future.
> │ 00:00:22 v #7 !   validate(nb)
> │ 00:00:22 v #8 ! 
> C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\
> highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python
> 3
> │ 00:00:22 v #9 !   return _pygments_highlight(
> │ 00:00:22 v #10 ! [NbConvertApp] Writing 310059 bytes to
> c:\home\git\polyglot\apps\dir-tree-html\DirTreeHtml.dib.html
> │ 00:00:23 v #11 runtime.execute_with_options / result / 
> { exit_code = 0; std_trace_length = 880 }
> │ 00:00:23 d #12 spiral.run / dib / jupyter nbconvert / {
> exit_code = 0; jupyter_result_length = 880 }
> │ 00:00:23 d #13 runtime.execute_with_options / { 
> file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 
> 'c:/home/git/polyglot/apps/dir-tree-html/DirTreeHtml.dib.html'; (Get-Content 
> $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + 
> $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1;
> $path = 'c:/home/git/polyglot/apps/dir-tree-html/DirTreeHtml.dib.html'; 
> (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { 
> $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = 
> None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; 
> trace = true; working_directory = None } }
> │ 00:00:23 v #14 runtime.execute_with_options / result / 
> { exit_code = 0; std_trace_length = 0 }
> │ 00:00:23 d #15 spiral.run / dib / html cell ids / { 
> exit_code = 0; pwsh_replace_html_result_length = 0 }
> │ 00:00:23 d #16 spiral.run / dib / { exit_code = 0; 
> result_length = 14627 }
> │ 00:00:00 d #1 writeDibCode / output: Fs / path: 
> DirTreeHtml.dib
> │ 00:00:00 d #2 parseDibCode / output: Fs / file: 
> DirTreeHtml.dib
> │ 00:00:00 d #1 persistCodeProject / packages: [Argu; 
> Falco.Markup; FSharp.Control.AsyncSeq; ... ] / modules: 
> [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; 
> deps/spiral/lib/spiral/crypto.fsx; ... ] / name: DirTreeHtml / hash:  / 
> code.Length: 4638
> │ 00:00:00 d #2 buildProject / fullPath: 
> c:\home\git\polyglot\target\Builder\DirTreeHtml\DirTreeHtml.fsproj
> │ 00:00:00 d #1 runtime.execute_with_options_async / { 
> file_name = dotnet; arguments = US5_0
> │   "publish 
> "c:/home/git\polyglot\target/Builder\DirTreeHtml\DirTreeHtml.fsproj" 
> --configuration Release --output "C:\home\git\polyglot\apps\dir-tree-html\dist" 
> --runtime linux-x64"; options = { command = dotnet publish 
> "c:/home/git\polyglot\target/Builder\DirTreeHtml\DirTreeHtml.fsproj" 
> --configuration Release --output "C:\home\git\polyglot\apps\dir-tree-html\dist" 
> --runtime linux-x64; cancellation_token = None; environment_variables = [||]; 
> on_line = None; stdin = None; trace = true; working_directory = Some 
> "c:\home\git\polyglot\target\Builder\DirTreeHtml" } }
> │ 00:00:01 v #2 >   Determining projects to restore...
> │ 00:00:01 v #3 >   Paket version 
> 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
> │ 00:00:01 v #4 >   The last full restore is still up to 
> date. Nothing left to do.
> │ 00:00:01 v #5 >   Total time taken: 0 milliseconds
> │ 00:00:02 v #6 >   Restored 
> c:\home\git\polyglot\target\Builder\DirTreeHtml\DirTreeHtml.fsproj (in 246 ms).
> │ 00:00:14 v #7 >   DirTreeHtml -> 
> c:\home\git\polyglot\target\Builder\DirTreeHtml\bin\Release\net9.0\linux-x64\Dir
> TreeHtml.dll
> │ 00:00:16 v #8 >   DirTreeHtml -> 
> C:\home\git\polyglot\apps\dir-tree-html\dist\
> │ 00:00:16 d #9 runtime.execute_with_options_async / { 
> exit_code = 0; output_length = 463; options = { command = dotnet publish 
> "c:/home/git\polyglot\target/Builder\DirTreeHtml\DirTreeHtml.fsproj" 
> --configuration Release --output "C:\home\git\polyglot\apps\dir-tree-html\dist" 
> --runtime linux-x64; cancellation_token = None; environment_variables = [||]; 
> on_line = None; stdin = None; trace = true; working_directory = Some 
> "c:\home\git\polyglot\target\Builder\DirTreeHtml" } }
> │ 00:00:16 d #10 runtime.execute_with_options_async / { 
> file_name = dotnet; arguments = US5_0
> │   "publish 
> "c:/home/git\polyglot\target/Builder\DirTreeHtml\DirTreeHtml.fsproj" 
> --configuration Release --output "C:\home\git\polyglot\apps\dir-tree-html\dist" 
> --runtime win-x64"; options = { command = dotnet publish 
> "c:/home/git\polyglot\target/Builder\DirTreeHtml\DirTreeHtml.fsproj" 
> --configuration Release --output "C:\home\git\polyglot\apps\dir-tree-html\dist" 
> --runtime win-x64; cancellation_token = None; environment_variables = [||]; 
> on_line = None; stdin = None; trace = true; working_directory = Some 
> "c:\home\git\polyglot\target\Builder\DirTreeHtml" } }
> │ 00:00:17 v #11 >   Determining projects to restore...
> │ 00:00:17 v #12 >   Paket version 
> 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
> │ 00:00:17 v #13 >   The last full restore is still up to 
> date. Nothing left to do.
> │ 00:00:17 v #14 >   Total time taken: 0 milliseconds
> │ 00:00:18 v #15 >   Restored 
> c:\home\git\polyglot\target\Builder\DirTreeHtml\DirTreeHtml.fsproj (in 283 ms).
> │ 00:00:31 v #16 >   DirTreeHtml -> 
> c:\home\git\polyglot\target\Builder\DirTreeHtml\bin\Release\net9.0\win-x64\DirTr
> eeHtml.dll
> │ 00:00:33 v #17 >   DirTreeHtml -> 
> C:\home\git\polyglot\apps\dir-tree-html\dist\
> │ 00:00:33 d #18 runtime.execute_with_options_async / { 
> exit_code = 0; output_length = 461; options = { command = dotnet publish 
> "c:/home/git\polyglot\target/Builder\DirTreeHtml\DirTreeHtml.fsproj" 
> --configuration Release --output "C:\home\git\polyglot\apps\dir-tree-html\dist" 
> --runtime win-x64; cancellation_token = None; environment_variables = [||]; 
> on_line = None; stdin = None; trace = true; working_directory = Some 
> "c:\home\git\polyglot\target\Builder\DirTreeHtml" } }
> │ polyglot/apps/dir-tree-html/build.ps1 / $env:CI:''
> │ 
> 
> ── pwsh ────────────────────────────────────────────────────────────────────────
> { pwsh ../apps/scheduler/build.ps1 } | Invoke-Block
> 
> ── [ 26.34s - stdout ] ─────────────────────────────────────────────────────────
> │ 00:00:00 d #1 spiral.main / { args = 
> Array(MutCell(["dib", "--path", "Tasks.dib", "--retries", "3"])) }
> │ 00:00:00 d #2 runtime.execute_with_options / { 
> file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", 
> "c:/home/git/polyglot/apps/scheduler/Tasks.dib", "--output-path", 
> "c:/home/git/polyglot/apps/scheduler/Tasks.dib.ipynb"]; options = { command = 
> dotnet repl --exit-after-run --run 
> "c:/home/git/polyglot/apps/scheduler/Tasks.dib" --output-path 
> "c:/home/git/polyglot/apps/scheduler/Tasks.dib.ipynb"; cancellation_token = 
> None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), 
> ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; 
> working_directory = None } }
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## Tasks (Polyglot)
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > open testing
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## task_name
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > nominal task_name = string
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## manual_scheduling
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > union manual_scheduling =
> │ >     | WithSuggestion
> │ >     | WithoutSuggestion
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## recurrency_offset
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > union recurrency_offset =
> │ >     | Days : i32
> │ >     | Weeks : i32
> │ >     | Months : i32
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## day_of_week
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > union day_of_week =
> │ >     | Sunday
> │ >     | Monday
> │ >     | Tuesday
> │ >     | Wednesday
> │ >     | Thursday
> │ >     | Friday
> │ >     | Saturday
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## month
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > union month =
> │ >     | January
> │ >     | February
> │ >     | March
> │ >     | April
> │ >     | May
> │ >     | June
> │ >     | July
> │ >     | August
> │ >     | September
> │ >     | October
> │ >     | November
> │ >     | December
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## day
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > nominal day = i32
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## year
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > nominal year = i32
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## fixed_recurrency
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > union fixed_recurrency =
> │ >     | Weekly : day_of_week
> │ >     | Monthly : day
> │ >     | Yearly : day * month
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## recurrency
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > union recurrency =
> │ >     | Offset : recurrency_offset
> │ >     | Fixed : list fixed_recurrency
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## scheduling
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > union scheduling =
> │ >     | Manual : manual_scheduling
> │ >     | Recurrent : recurrency
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## task
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > type task =
> │ >     {
> │ >         name : task_name
> │ >         scheduling : scheduling
> │ >     }
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## date
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > type date =
> │ >     {
> │ >         year : year
> │ >         month : month
> │ >         day : day
> │ >     }
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## status
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > union status =
> │ >     | Postponed : option ()
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## event
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > type event =
> │ >     {
> │ >         date : date
> │ >         status : status
> │ >     }
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## task_template
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > type task_template =
> │ >     {
> │ >         task : task
> │ >         events : list event
> │ >     }
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## get_tasks (test)
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > inl get_tasks () : list task_template =
> │ >     [[
> │ >         {
> │ >             task =
> │ >                 {
> │ >                     name = task_name "01"
> │ >                     scheduling = Manual WithSuggestion
> │ >                 }
> │ >             events = [[]]
> │ >         }
> │ >         {
> │ >             task =
> │ >                 {
> │ >                     name = task_name "02"
> │ >                     scheduling = Manual WithSuggestion
> │ >                 }
> │ >             events = [[]]
> │ >         }
> │ >         {
> │ >             task =
> │ >                 {
> │ >                     name = task_name "03"
> │ >                     scheduling = Manual WithSuggestion
> │ >                 }
> │ >             events = [[]]
> │ >         }
> │ >     ]]
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > ///! fsharp
> │ > ///! cuda
> │ > ///! rust
> │ > ///! typescript
> │ > ///! python
> │ > 
> │ > get_tasks ()
> │ > |> sm'.format_debug
> │ > |> _assert sm'.contains "01"
> │ > 
> │ > ── [ 5.94s - return value ] 
> ────────────────────────────────────────────────────
> │ > │ .py output (Cuda):
> │ > │ __assert / actual: 01 / expected: 
> UH2_1(v0='01', 
> │ > v1=US1_0(v0=US0_0()), v2=UH1_0(), v3=UH2_1(v0='02', 
> v1=US1_0(v0=US0_0()), 
> │ > v2=UH1_0(), v3=UH2_1(v0='03', v1=US1_0(v0=US0_0()), 
> v2=UH1_0(), v3=UH2_0())))
> │ > │ 
> │ > │ .rs output:
> │ > │ __assert / actual: "01" / expected: 
> "UH2_1("01", 
> │ > US1_0(US0_0), UH1_0, UH2_1("02", US1_0(US0_0), UH1_0, 
> UH2_1("03", US1_0(US0_0), 
> │ > UH1_0, UH2_0)))"
> │ > │ 
> │ > │ .ts output:
> │ > │ __assert / actual: 01 / expected: UH2_1 
> (01, US1_0 US0_0, 
> │ > UH1_0, UH2_1 (02, US1_0 US0_0, UH1_0, UH2_1 (03, US1_0 
> US0_0, UH1_0, UH2_0)))
> │ > │ 
> │ > │ .py output:
> │ > │ __assert / actual: 01 / expected: UH2_1 
> ("01", US1_0 US0_0, 
> │ > UH1_0, UH2_1 ("02", US1_0 US0_0, UH1_0, UH2_1 ("03", US1_0 
> US0_0, UH1_0, 
> │ > UH2_0)))
> │ > │ 
> │ > │ 
> │ > 
> │ > ── [ 5.95s - stdout ] 
> ──────────────────────────────────────────────────────────
> │ > │ .fsx output:
> │ > │ __assert / actual: "01" / expected: 
> "UH2_1
> │ > │   ("01", US1_0 US0_0, UH1_0,
> │ > │    UH2_1 ("02", US1_0 US0_0, UH1_0, 
> UH2_1 ("03", US1_0 US0_0,
> │ > UH1_0, UH2_0)))"
> │ > │ 
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > ///! fsharp
> │ > ///! cuda
> │ > ///! rust
> │ > ///! typescript
> │ > ///! python
> │ > 
> │ > get_tasks ()
> │ > |> listm'.try_item 0i32
> │ > |> fun (Some task) => task.task.name
> │ > |> _assert_eq (task_name "01")
> │ > 
> │ > ── [ 3.65s - return value ] 
> ────────────────────────────────────────────────────
> │ > │ .py output (Cuda):
> │ > │ __assert_eq / actual: 01 / expected: 01
> │ > │ 
> │ > │ .rs output:
> │ > │ __assert_eq / actual: "01" / expected: 
> "01"
> │ > │ 
> │ > │ .ts output:
> │ > │ __assert_eq / actual: 01 / expected: 01
> │ > │ 
> │ > │ .py output:
> │ > │ __assert_eq / actual: 01 / expected: 01
> │ > │ 
> │ > │ 
> │ > 
> │ > ── [ 3.65s - stdout ] 
> ──────────────────────────────────────────────────────────
> │ > │ .fsx output:
> │ > │ __assert_eq / actual: "01" / expected: 
> "01"
> │ > │ 
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > ///! fsharp
> │ > ////! cuda
> │ > ////! typescript
> │ > ////! python
> │ > ///// print_code
> │ > 
> │ > inl print padding cols =
> │ >     ({ lines = [[]]; last_lines = [[]]; max_acc = 0i32 }, 
> cols)
> │ >     ||> listm.fold fun { last_lines max_acc } lines =>
> │ >         inl { count max } =
> │ >             (lines, { count = 0i32; max = 0i32 })
> │ >             ||> listm.foldBack fun line { count max } => {
> │ >                 count = count + 1
> │ >                 max =
> │ >                     inl len = line |> sm'.length
> │ >                     if len > max
> │ >                     then len
> │ >                     else max
> │ >             }
> │ >         inl { lines } =
> │ >             (lines, { lines = [[]]; i = 0i32 })
> │ >             ||> listm.foldBack fun line { lines i } => {
> │ >                 lines =
> │ >                     inl last_line =
> │ >                         last_lines
> │ >                         |> listm'.try_item (count - i - 1)
> │ >                         |> optionm'.default_with fun () =>
> │ >                             " " |> sm'.replicate max_acc
> │ >                     inl line =
> │ >                         if padding = 0
> │ >                         then line
> │ >                         else
> │ >                             inl padding = " " |> 
> sm'.replicate padding
> │ >                             $'$"{!line}{!padding}"'
> │ >                     inl line = line |> sm'.pad_right (max +
> padding) ' '
> │ >                     $'$"{!last_line}{!line}"' :: lines
> │ >                 i = i + 1
> │ >             }
> │ >         {
> │ >             lines
> │ >             last_lines = lines
> │ >             max_acc = max_acc + max + padding
> │ >         }
> │ >     |> fun x => x.lines
> │ >     |> listm'.box
> │ >     |> seq.of_list'
> │ >     |> sm'.concat "\n"
> │ > 
> │ > inl col () =
> │ >     [[ "Task" ]]
> │ >     ++ (
> │ >         get_tasks ()
> │ >         |> listm.map fun task =>
> │ >             inl (task_name name) = task.task.name
> │ >             name
> │ >     )
> │ > 
> │ > inl cols () =
> │ >     [[
> │ >         col ()
> │ >         col ()
> │ >         [[ "a"; "b"; "c"; "d"; "e" ]]
> │ >     ]]
> │ > 
> │ > inl main () =
> │ >     cols ()
> │ >     |> print 1i32
> │ >     |> console.write_line
> │ > 
> │ > ── [ 423.84ms - stdout ] 
> ───────────────────────────────────────────────────────
> │ > │ Task Task a 
> │ > │ 01   01   b 
> │ > │ 02   02   c 
> │ > │ 03   03   d 
> │ > │           e 
> │ > │ 
> │ 00:00:22 v #3 runtime.execute_with_options / result / {
> exit_code = 0; std_trace_length = 10281 }
> │ 00:00:22 d #4 runtime.execute_with_options / { 
> file_name = jupyter; arguments = ["nbconvert", 
> "c:/home/git/polyglot/apps/scheduler/Tasks.dib.ipynb", "--to", "html", 
> "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert 
> "c:/home/git/polyglot/apps/scheduler/Tasks.dib.ipynb" --to html 
> --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = 
> Array(MutCell([])); on_line = None; stdin = None; trace = true; 
> working_directory = None } }
> │ 00:00:24 v #5 ! [NbConvertApp] Converting notebook 
> c:/home/git/polyglot/apps/scheduler/Tasks.dib.ipynb to html
> │ 00:00:24 v #6 ! 
> C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.
> py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a 
> hard error in future nbformat versions. You may want to use `normalize()` on 
> your notebooks before validations (available since nbformat 5.1.4). Previous 
> versions of nbformat are fixing this issue transparently, and will stop doing so
> in the future.
> │ 00:00:24 v #7 !   validate(nb)
> │ 00:00:24 v #8 ! 
> C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\
> highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python
> 3
> │ 00:00:24 v #9 !   return _pygments_highlight(
> │ 00:00:25 v #10 ! [NbConvertApp] Writing 309919 bytes to
> c:\home\git\polyglot\apps\scheduler\Tasks.dib.html
> │ 00:00:25 v #11 runtime.execute_with_options / result / 
> { exit_code = 0; std_trace_length = 860 }
> │ 00:00:25 d #12 spiral.run / dib / jupyter nbconvert / {
> exit_code = 0; jupyter_result_length = 860 }
> │ 00:00:25 d #13 runtime.execute_with_options / { 
> file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 
> 'c:/home/git/polyglot/apps/scheduler/Tasks.dib.html'; (Get-Content $path -Raw) 
> -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } 
> | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 
> 'c:/home/git/polyglot/apps/scheduler/Tasks.dib.html'; (Get-Content $path -Raw) 
> -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | 
> Set-Content $path"; cancellation_token = None; environment_variables = 
> Array(MutCell([])); on_line = None; stdin = None; trace = true; 
> working_directory = None } }
> │ 00:00:25 v #14 runtime.execute_with_options / result / 
> { exit_code = 0; std_trace_length = 0 }
> │ 00:00:25 d #15 spiral.run / dib / html cell ids / { 
> exit_code = 0; pwsh_replace_html_result_length = 0 }
> │ 00:00:25 d #16 spiral.run / dib / { exit_code = 0; 
> result_length = 11200 }
> │ 00:00:00 d #1 writeDibCode / output: Spi / path: 
> Tasks.dib
> │ 00:00:00 d #2 parseDibCode / output: Spi / file: 
> Tasks.dib
> │ 
> 
> ── pwsh ────────────────────────────────────────────────────────────────────────
> { pwsh ../apps/chat/build.ps1 } | Invoke-Block
> 
> ── [ 6.79m - stdout ] ──────────────────────────────────────────────────────────
> │ 00:00:00 d #1 spiral.main / { args = 
> Array(MutCell(["dib", "--path", "chat_contract.dib", "--retries", "1"])) }
> │ 00:00:00 d #2 runtime.execute_with_options / { 
> file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", 
> "c:/home/git/polyglot/apps/chat/contract/chat_contract.dib", "--output-path", 
> "c:/home/git/polyglot/apps/chat/contract/chat_contract.dib.ipynb"]; options = { 
> command = dotnet repl --exit-after-run --run 
> "c:/home/git/polyglot/apps/chat/contract/chat_contract.dib" --output-path 
> "c:/home/git/polyglot/apps/chat/contract/chat_contract.dib.ipynb"; 
> cancellation_token = None; environment_variables = 
> Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = 
> None; stdin = None; trace = false; working_directory = None } }
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ # chat_contract
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > open rust
> │ > open rust.rust_operators
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > open testing
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## chat_contract
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### state
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > type state =
> │ >     {
> │ >         version : u32
> │ >         account_set : near.iterable_set near.account_id
> │ >         alias_set : near.iterable_set sm'.std_string
> │ >         account_map : near.lookup_map near.account_id 
> sm'.std_string
> │ >         alias_map : near.lookup_map sm'.std_string 
> (mapm.hash_map 
> │ > near.account_id (u64 * u32))
> │ >     }
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > ///! rust -c
> │ > 
> │ > ()
> │ > 
> │ > ── [ 26.67s - return value ] 
> ───────────────────────────────────────────────────
> │ > │  
> │ > │ 00:00:10 i #2 
> near_workspaces.print_usd / { retry = 1; 
> │ > total_gas_burnt_usd = +0.000957; total_gas_burnt = 
> 1432562717711 }
> │ > │ 00:00:10 i #3 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000206; 
> tokens_burnt_usd = +0.000206; 
> │ > gas_burnt = 308081859340; tokens_burnt = 
> 30808185934000000000 }
> │ > │ 00:00:10 i #4 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000602; 
> tokens_burnt_usd = +0.000602; 
> │ > gas_burnt = 901298295871; tokens_burnt = 
> 90129829587100000000 }
> │ > │ 00:00:10 i #5 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000149; 
> tokens_burnt_usd = +0.000000; 
> │ > gas_burnt = 223182562500; tokens_burnt = 0 }
> │ > │ 
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > ///! rust -c
> │ > 
> │ > trace Verbose (fun () => "") id
> │ > 
> │ > ── [ 32.28s - return value ] 
> ───────────────────────────────────────────────────
> │ > │  
> │ > │ 00:00:07 i #2 
> near_workspaces.print_usd / { retry = 1; 
> │ > total_gas_burnt_usd = +0.000885; total_gas_burnt = 
> 1324640955308 }
> │ > │ 00:00:07 i #3 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000206; 
> tokens_burnt_usd = +0.000206; 
> │ > gas_burnt = 308081859340; tokens_burnt = 
> 30808185934000000000 }
> │ > │ 00:00:07 i #4 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000679; 
> tokens_burnt_usd = +0.000679; 
> │ > gas_burnt = 1016559095968; tokens_burnt = 
> 101655909596800000000 }
> │ > │ 00:00:07 w #5 spiral_wasm.run / 
> Error error / { retry =
> │ > 1; error = "{ receipt_outcomes_len = 1; retry = 1; 
> receipt_failures = [] }" }
> │ > │ 
> │ > │ 
> │ > │  
> │ > │ 00:00:13 i #8 
> near_workspaces.print_usd / { retry = 2; 
> │ > total_gas_burnt_usd = +0.000885; total_gas_burnt = 
> 1324640955308 }
> │ > │ 00:00:13 i #9 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000206; 
> tokens_burnt_usd = +0.000206; 
> │ > gas_burnt = 308081859340; tokens_burnt = 
> 30808185934000000000 }
> │ > │ 00:00:13 i #10 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000679; 
> tokens_burnt_usd = +0.000679; 
> │ > gas_burnt = 1016559095968; tokens_burnt = 
> 101655909596800000000 }
> │ > │ 00:00:13 w #11 spiral_wasm.run / 
> Error error / { retry 
> │ > = 2; error = "{ receipt_outcomes_len = 1; retry = 2; 
> receipt_failures = [] }" }
> │ > │ 
> │ > │ 
> │ > │  
> │ > │ 00:00:19 i #14 
> near_workspaces.print_usd / { retry = 3;
> │ > total_gas_burnt_usd = +0.000885; total_gas_burnt = 
> 1324640955308 }
> │ > │ 00:00:19 i #15 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000206; 
> tokens_burnt_usd = +0.000206; 
> │ > gas_burnt = 308081859340; tokens_burnt = 
> 30808185934000000000 }
> │ > │ 00:00:19 i #16 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000679; 
> tokens_burnt_usd = +0.000679; 
> │ > gas_burnt = 1016559095968; tokens_burnt = 
> 101655909596800000000 }
> │ > │ 00:00:19 w #17 spiral_wasm.run / 
> Error error / { retry 
> │ > = 3; error = "{ receipt_outcomes_len = 1; retry = 3; 
> receipt_failures = [] }" }
> │ > │ 
> │ > │ 
> │ > │  
> │ > │ 00:00:26 i #20 
> near_workspaces.print_usd / { retry = 4;
> │ > total_gas_burnt_usd = +0.001034; total_gas_burnt = 
> 1547823517808 }
> │ > │ 00:00:26 i #21 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000206; 
> tokens_burnt_usd = +0.000206; 
> │ > gas_burnt = 308081859340; tokens_burnt = 
> 30808185934000000000 }
> │ > │ 00:00:26 i #22 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000679; 
> tokens_burnt_usd = +0.000679; 
> │ > gas_burnt = 1016559095968; tokens_burnt = 
> 101655909596800000000 }
> │ > │ 00:00:26 i #23 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000149; 
> tokens_burnt_usd = +0.000000; 
> │ > gas_burnt = 223182562500; tokens_burnt = 0 }
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### new
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl new () : state =
> │ >     {
> │ >         version = 2
> │ >         account_set = "account_set" |> sm'.byte_slice |> 
> near.new_iterable_set
> │ >         alias_set = "alias_set" |> sm'.byte_slice |> 
> near.new_iterable_set
> │ >         account_map = "account_map" |> sm'.byte_slice |> 
> near.new_lookup_map
> │ >         alias_map = "alias_map" |> sm'.byte_slice |> 
> near.new_lookup_map
> │ >     }
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > ///! rust -c
> │ > 
> │ > inl state = new ()
> │ > trace Verbose (fun () => "chat_contract") fun () => { state
> = state |> 
> │ > sm'.format_debug }
> │ > trace Verbose (fun () => "") id
> │ > 
> │ > ── [ 33.80s - return value ] 
> ───────────────────────────────────────────────────
> │ > │ 00:00:00 v #1 chat_contract / { 
> state = (2, IterableSet
> │ > { elements: Vector { len: 0, prefix: [97, 99, 99, 111, 117,
> 110, 116, 95, 115, 
> │ > 101, 116, 118] }, index: LookupMap { prefix: [97, 99, 99, 
> 111, 117, 110, 116, 
> │ > 95, 115, 101, 116, 109] } }, IterableSet { elements: Vector
> { len: 0, prefix: 
> │ > [97, 108, 105, 97, 115, 95, 115, 101, 116, 118] }, index: 
> LookupMap { prefix: 
> │ > [97, 108, 105, 97, 115, 95, 115, 101, 116, 109] } }, 
> LookupMap { prefix: [97, 
> │ > 99, 99, 111, 117, 110, 116, 95, 109, 97, 112] }, LookupMap 
> { prefix: [97, 108, 
> │ > 105, 97, 115, 95, 109, 97, 112] }) }
> │ > │  
> │ > │ 00:00:07 i #2 
> near_workspaces.print_usd / { retry = 1; 
> │ > total_gas_burnt_usd = +0.001326; total_gas_burnt = 
> 1984999776102 }
> │ > │ 00:00:07 i #3 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000206; 
> tokens_burnt_usd = +0.000206; 
> │ > gas_burnt = 308081859340; tokens_burnt = 
> 30808185934000000000 }
> │ > │ 00:00:07 i #4 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.001120; 
> tokens_burnt_usd = +0.001120; 
> │ > gas_burnt = 1676917916762; tokens_burnt = 
> 167691791676200000000 }
> │ > │ 00:00:07 w #5 spiral_wasm.run / 
> Error error / { retry =
> │ > 1; error = "{ receipt_outcomes_len = 1; retry = 1; 
> receipt_failures = [] }" }
> │ > │ 
> │ > │ 
> │ > │ 00:00:00 v #1 chat_contract / { 
> state = (2, IterableSet
> │ > { elements: Vector { len: 0, prefix: [97, 99, 99, 111, 117,
> 110, 116, 95, 115, 
> │ > 101, 116, 118] }, index: LookupMap { prefix: [97, 99, 99, 
> 111, 117, 110, 116, 
> │ > 95, 115, 101,...916762; tokens_burnt = 
> 167691791676200000000 }
> │ > │ 00:00:20 w #17 spiral_wasm.run / 
> Error error / { retry 
> │ > = 3; error = "{ receipt_outcomes_len = 1; retry = 3; 
> receipt_failures = [] }" }
> │ > │ 
> │ > │ 
> │ > │ 00:00:00 v #1 chat_contract / { 
> state = (2, IterableSet
> │ > { elements: Vector { len: 0, prefix: [97, 99, 99, 111, 117,
> 110, 116, 95, 115, 
> │ > 101, 116, 118] }, index: LookupMap { prefix: [97, 99, 99, 
> 111, 117, 110, 116, 
> │ > 95, 115, 101, 116, 109] } }, IterableSet { elements: Vector
> { len: 0, prefix: 
> │ > [97, 108, 105, 97, 115, 95, 115, 101, 116, 118] }, index: 
> LookupMap { prefix: 
> │ > [97, 108, 105, 97, 115, 95, 115, 101, 116, 109] } }, 
> LookupMap { prefix: [97, 
> │ > 99, 99, 111, 117, 110, 116, 95, 109, 97, 112] }, LookupMap 
> { prefix: [97, 108, 
> │ > 105, 97, 115, 95, 109, 97, 112] }) }
> │ > │  
> │ > │ 00:00:26 i #20 
> near_workspaces.print_usd / { retry = 4;
> │ > total_gas_burnt_usd = +0.001475; total_gas_burnt = 
> 2208182338602 }
> │ > │ 00:00:26 i #21 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000206; 
> tokens_burnt_usd = +0.000206; 
> │ > gas_burnt = 308081859340; tokens_burnt = 
> 30808185934000000000 }
> │ > │ 00:00:26 i #22 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.001120; 
> tokens_burnt_usd = +0.001120; 
> │ > gas_burnt = 1676917916762; tokens_burnt = 
> 167691791676200000000 }
> │ > │ 00:00:26 i #23 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000149; 
> tokens_burnt_usd = +0.000000; 
> │ > gas_burnt = 223182562500; tokens_burnt = 0 }
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### is_valid_alias
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl is_valid_alias (alias : sm'.std_string) : bool =
> │ >     inl alias' = alias |> sm'.from_std_string
> │ >     inl alias_len = alias' |> sm'.length
> │ > 
> │ >     alias_len > 0i32
> │ >         && alias_len < 64
> │ >         && (alias' |> sm'.starts_with "-" |> not)
> │ >         && (alias' |> sm'.ends_with "-" |> not)
> │ >         && (alias' |> sm'.as_str |> sm'.chars |> iter.all 
> (fun c => (c |> 
> │ > sm'.char_is_alphanumeric) || c = '-'))
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > ///! rust -c
> │ > 
> │ > ""
> │ > |> sm'.to_std_string
> │ > |> is_valid_alias
> │ > |> _assert_eq false
> │ > 
> │ > ── [ 17.74s - return value ] 
> ───────────────────────────────────────────────────
> │ > │  
> │ > │ 00:00:06 i #2 
> near_workspaces.print_usd / { retry = 1; 
> │ > total_gas_burnt_usd = +0.000822; total_gas_burnt = 
> 1230957557400 }
> │ > │ 00:00:06 i #3 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000206; 
> tokens_burnt_usd = +0.000206; 
> │ > gas_burnt = 308081859340; tokens_burnt = 
> 30808185934000000000 }
> │ > │ 00:00:06 i #4 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000616; 
> tokens_burnt_usd = +0.000616; 
> │ > gas_burnt = 922875698060; tokens_burnt = 
> 92287569806000000000 }
> │ > │ 00:00:06 w #5 spiral_wasm.run / 
> Error error / { retry =
> │ > 1; error = "{ receipt_outcomes_len = 1; retry = 1; 
> receipt_failures = [] }" }
> │ > │ 
> │ > │ 
> │ > │  
> │ > │ 00:00:13 i #8 
> near_workspaces.print_usd / { retry = 2; 
> │ > total_gas_burnt_usd = +0.000971; total_gas_burnt = 
> 1454140119900 }
> │ > │ 00:00:13 i #9 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000206; 
> tokens_burnt_usd = +0.000206; 
> │ > gas_burnt = 308081859340; tokens_burnt = 
> 30808185934000000000 }
> │ > │ 00:00:13 i #10 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000616; 
> tokens_burnt_usd = +0.000616; 
> │ > gas_burnt = 922875698060; tokens_burnt = 
> 92287569806000000000 }
> │ > │ 00:00:13 i #11 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000149; 
> tokens_burnt_usd = +0.000000; 
> │ > gas_burnt = 223182562500; tokens_burnt = 0 }
> │ > │ 
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > ///! rust -c
> │ > 
> │ > "a-"
> │ > |> sm'.to_std_string
> │ > |> is_valid_alias
> │ > |> _assert_eq false
> │ > 
> │ > ── [ 24.39s - return value ] 
> ───────────────────────────────────────────────────
> │ > │  
> │ > │ 00:00:07 i #2 
> near_workspaces.print_usd / { retry = 1; 
> │ > total_gas_burnt_usd = +0.000824; total_gas_burnt = 
> 1232946911991 }
> │ > │ 00:00:07 i #3 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000206; 
> tokens_burnt_usd = +0.000206; 
> │ > gas_burnt = 308081859340; tokens_burnt = 
> 30808185934000000000 }
> │ > │ 00:00:07 i #4 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000618; 
> tokens_burnt_usd = +0.000618; 
> │ > gas_burnt = 924865052651; tokens_burnt = 
> 92486505265100000000 }
> │ > │ 00:00:07 w #5 spiral_wasm.run / 
> Error error / { retry =
> │ > 1; error = "{ receipt_outcomes_len = 1; retry = 1; 
> receipt_failures = [] }" }
> │ > │ 
> │ > │ 
> │ > │  
> │ > │ 00:00:13 i #8 
> near_workspaces.print_usd / { retry = 2; 
> │ > total_gas_burnt_usd = +0.000824; total_gas_burnt = 
> 1232946911991 }
> │ > │ 00:00:13 i #9 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000206; 
> tokens_burnt_usd = +0.000206; 
> │ > gas_burnt = 308081859340; tokens_burnt = 
> 30808185934000000000 }
> │ > │ 00:00:13 i #10 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000618; 
> tokens_burnt_usd = +0.000618; 
> │ > gas_burnt = 924865052651; tokens_burnt = 
> 92486505265100000000 }
> │ > │ 00:00:13 w #11 spiral_wasm.run / 
> Error error / { retry 
> │ > = 2; error = "{ receipt_outcomes_len = 1; retry = 2; 
> receipt_failures = [] }" }
> │ > │ 
> │ > │ 
> │ > │  
> │ > │ 00:00:19 i #14 
> near_workspaces.print_usd / { retry = 3;
> │ > total_gas_burnt_usd = +0.000973; total_gas_burnt = 
> 1456129474491 }
> │ > │ 00:00:19 i #15 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000206; 
> tokens_burnt_usd = +0.000206; 
> │ > gas_burnt = 308081859340; tokens_burnt = 
> 30808185934000000000 }
> │ > │ 00:00:19 i #16 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000618; 
> tokens_burnt_usd = +0.000618; 
> │ > gas_burnt = 924865052651; tokens_burnt = 
> 92486505265100000000 }
> │ > │ 00:00:19 i #17 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000149; 
> tokens_burnt_usd = +0.000000; 
> │ > gas_burnt = 223182562500; tokens_burnt = 0 }
> │ > │ 
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > ///! rust -c
> │ > 
> │ > "a-a"
> │ > |> sm'.to_std_string
> │ > |> is_valid_alias
> │ > |> _assert_eq true
> │ > 
> │ > ── [ 44.41s - return value ] 
> ───────────────────────────────────────────────────
> │ > │  
> │ > │ 00:00:07 i #2 
> near_workspaces.print_usd / { retry = 1; 
> │ > total_gas_burnt_usd = +0.000825; total_gas_burnt = 
> 1234545028970 }
> │ > │ 00:00:07 i #3 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000206; 
> tokens_burnt_usd = +0.000206; 
> │ > gas_burnt = 308081859340; tokens_burnt = 
> 30808185934000000000 }
> │ > │ 00:00:07 i #4 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000619; 
> tokens_burnt_usd = +0.000619; 
> │ > gas_burnt = 926463169630; tokens_burnt = 
> 92646316963000000000 }
> │ > │ 00:00:07 w #5 spiral_wasm.run / 
> Error error / { retry =
> │ > 1; error = "{ receipt_outcomes_len = 1; retry = 1; 
> receipt_failures = [] }" }
> │ > │ 
> │ > │ 
> │ > │  
> │ > │ 00:00:13 i #8 
> near_workspaces.print_usd / { retry = 2; 
> │ > total_gas_burnt_usd = +0.000825; total_gas_burnt = 
> 1234545028970 }
> │ > │ 00:00:13 i #9 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000206; 
> tokens_burnt_usd = +0.000206; 
> │ > gas_burnt = 308081859340; tokens_burnt = 
> 30808185934000000000 }
> │ > │ 00:00:13 i #10 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000619; 
> tokens_burnt_usd = +0.000619; 
> │ > gas_burnt = 926463169630; tokens_burnt = 
> 92646316963000000000 }
> │ > │ 00:00:13 w #11 spiral_wasm.run / 
> Error error / { retry 
> │ > = 2; error = "{ receipt_outcomes_len = 1; retry = 2; 
> receipt_failures = [] }" }
> │ > │ 
> │ > │ 
> │ > │  
> │ > │ 00:00:21 i #14 
> near_workspaces.print_usd / { retry = 3;
> │ > total_gas_burnt_usd = +0.000825; total_gas_burnt = 
> 12...error = "{ 
> │ > receipt_outcomes_len = 1; retry = 4; receipt_failures = [] 
> }" }
> │ > │ 
> │ > │ 
> │ > │  
> │ > │ 00:00:33 i #26 
> near_workspaces.print_usd / { retry = 5;
> │ > total_gas_burnt_usd = +0.000825; total_gas_burnt = 
> 1234545028970 }
> │ > │ 00:00:33 i #27 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000206; 
> tokens_burnt_usd = +0.000206; 
> │ > gas_burnt = 308081859340; tokens_burnt = 
> 30808185934000000000 }
> │ > │ 00:00:33 i #28 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000619; 
> tokens_burnt_usd = +0.000619; 
> │ > gas_burnt = 926463169630; tokens_burnt = 
> 92646316963000000000 }
> │ > │ 00:00:33 w #29 spiral_wasm.run / 
> Error error / { retry 
> │ > = 5; error = "{ receipt_outcomes_len = 1; retry = 5; 
> receipt_failures = [] }" }
> │ > │ 
> │ > │ 
> │ > │  
> │ > │ 00:00:39 i #32 
> near_workspaces.print_usd / { retry = 6;
> │ > total_gas_burnt_usd = +0.000974; total_gas_burnt = 
> 1457727591470 }
> │ > │ 00:00:39 i #33 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000206; 
> tokens_burnt_usd = +0.000206; 
> │ > gas_burnt = 308081859340; tokens_burnt = 
> 30808185934000000000 }
> │ > │ 00:00:39 i #34 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000619; 
> tokens_burnt_usd = +0.000619; 
> │ > gas_burnt = 926463169630; tokens_burnt = 
> 92646316963000000000 }
> │ > │ 00:00:39 i #35 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000149; 
> tokens_burnt_usd = +0.000000; 
> │ > gas_burnt = 223182562500; tokens_burnt = 0 }
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### generate_cid
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl generate_cid (content : am'.vec u8) : sm'.std_string =
> │ >     !\($'"  fn encode_u64(value: u64) -> Vec<u8> { //"') : 
> ()
> │ >     !\($'"    let mut buffer = 
> unsigned_varint::encode::u64_buffer(); //"') : ()
> │ >     !\($'"    unsigned_varint::encode::u64(value, &mut 
> buffer).to_vec() //"') : 
> │ > ()
> │ >     !\($'"  } //"') : ()
> │ > 
> │ >     !\($'"  fn sha256_hash(content: &[[u8]]) -> Vec<u8> { 
> //"') : ()
> │ >     !\($'"    let mut hasher: sha2::Sha256 = 
> sha2::Digest::new(); //"') : ()
> │ >     !\($'"    sha2::Digest::update(&mut hasher, content); 
> //"') : ()
> │ >     !\($'"    sha2::Digest::finalize(hasher).to_vec() //"')
> : ()
> │ >     !\($'"  } //"') : ()
> │ > 
> │ >     !\($'"  let version: u8 = 1; //"') : ()
> │ >     !\($'"  let codec_raw: u64 = 0x55; //"') : ()
> │ > 
> │ >     !\($'"  let codec_bytes = encode_u64(codec_raw); //"') 
> : ()
> │ >     !\($'"  let hash_result = sha256_hash(&!content); //"')
> : ()
> │ >     !\($'"  let multihash = std::iter::once(0x12) //"') : 
> ()
> │ >     !\($'"    .chain(std::iter::once(32)) //"') : ()
> │ >     !\($'"    .chain(hash_result.into_iter()) //"') : ()
> │ >     !\($'"    .collect(); //"') : ()
> │ >     !\($'"  let cid_bytes = [[vec\![[version]], 
> codec_bytes, 
> │ > multihash]].concat(); //"') : ()
> │ >     !\($'"  let result = 
> multibase::encode(multibase::Base::Base32Lower, 
> │ > &cid_bytes); //"') : ()
> │ >     !\($'"result"')
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > ///! rust -c -d multibase sha2 unsigned-varint
> │ > 
> │ > ;[[]]
> │ > |> am'.to_vec
> │ > |> generate_cid
> │ > |> sm'.from_std_string
> │ > |> _assert_eq 
> "bafkreihdwdcefgh4dqkjv67uzcmw7ojee6xedzdetojuzjevtenxquvyku"
> │ > 
> │ > ── [ 18.56s - return value ] 
> ───────────────────────────────────────────────────
> │ > │  
> │ > │ 00:00:06 i #2 
> near_workspaces.print_usd / { retry = 1; 
> │ > total_gas_burnt_usd = +0.000876; total_gas_burnt = 
> 1311875734665 }
> │ > │ 00:00:06 i #3 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000206; 
> tokens_burnt_usd = +0.000206; 
> │ > gas_burnt = 308081859340; tokens_burnt = 
> 30808185934000000000 }
> │ > │ 00:00:06 i #4 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000671; 
> tokens_burnt_usd = +0.000671; 
> │ > gas_burnt = 1003793875325; tokens_burnt = 
> 100379387532500000000 }
> │ > │ 00:00:06 w #5 spiral_wasm.run / 
> Error error / { retry =
> │ > 1; error = "{ receipt_outcomes_len = 1; retry = 1; 
> receipt_failures = [] }" }
> │ > │ 
> │ > │ 
> │ > │  
> │ > │ 00:00:13 i #8 
> near_workspaces.print_usd / { retry = 2; 
> │ > total_gas_burnt_usd = +0.001025; total_gas_burnt = 
> 1535058297165 }
> │ > │ 00:00:13 i #9 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000206; 
> tokens_burnt_usd = +0.000206; 
> │ > gas_burnt = 308081859340; tokens_burnt = 
> 30808185934000000000 }
> │ > │ 00:00:13 i #10 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000671; 
> tokens_burnt_usd = +0.000671; 
> │ > gas_burnt = 1003793875325; tokens_burnt = 
> 100379387532500000000 }
> │ > │ 00:00:13 i #11 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000149; 
> tokens_burnt_usd = +0.000000; 
> │ > gas_burnt = 223182562500; tokens_burnt = 0 }
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### claim_alias
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl claim_alias (state : rust.ref (rust.mut' state)) (alias
> : sm'.std_string) : 
> │ > () =
> │ >     inl account_set : rust.ref (rust.mut' 
> (near.iterable_set near.account_id)) =
> │ >         !\($'$"&mut !state.1"')
> │ > 
> │ >     inl alias_set : rust.ref (rust.mut' (near.iterable_set 
> sm'.std_string)) =
> │ >         !\($'$"&mut !state.2"')
> │ > 
> │ >     inl account_map : rust.ref (rust.mut' (near.lookup_map 
> near.account_id 
> │ > sm'.std_string)) =
> │ >         !\($'$"&mut !state.3"')
> │ > 
> │ >     inl alias_map : rust.ref (rust.mut' (near.lookup_map 
> sm'.std_string 
> │ > (mapm.hash_map near.account_id (u64 * u32)))) =
> │ >         !\($'$"&mut !state.4"')
> │ > 
> │ >     inl signer_account_id = near.signer_account_id ()
> │ >     inl predecessor_account_id = 
> near.predecessor_account_id ()
> │ >     inl block_timestamp = near.block_timestamp ()
> │ > 
> │ >     trace Debug
> │ >         fun () => "chat_contract.claim_alias"
> │ >         fun () => {
> │ >             alias
> │ >             block_timestamp
> │ >             signer_account_id = signer_account_id |> 
> sm'.to_string'
> │ >             predecessor_account_id = predecessor_account_id
> |> sm'.to_string'
> │ >         }
> │ > 
> │ >     if alias |> is_valid_alias |> not
> │ >     then near.panic_str "chat_contract.claim_alias / 
> invalid alias" . true
> │ >     else false
> │ >     |> ignore
> │ >     
> │ >     inl account_alias =
> │ >         account_map
> │ >         |> near.lookup_get signer_account_id
> │ >         |> optionm'.cloned
> │ > 
> │ >     match account_alias |> optionm'.unbox with
> │ >     | Some account_alias when account_alias =. alias =>
> │ >         trace Warning
> │ >             fun () => "chat_contract.claim_alias / alias 
> already claimed"
> │ >             fun () => { account_alias = account_alias |> 
> sm'.format_debug }
> │ >     | account_alias' =>
> │ >         trace Debug
> │ >             fun () => "chat_contract.claim_alias"
> │ >             fun () => { account_alias = account_alias |> 
> sm'.format_debug }
> │ > 
> │ >         match account_alias' with
> │ >         | Some account_alias =>
> │ >             !\($'"    !alias_map //"') : ()
> │ >             !\($'"      .get_mut(&!account_alias) //"') : 
> ()
> │ >             !\($'"      .unwrap() //"') : ()
> │ >             !\\(signer_account_id, $'"      .remove(&$0); 
> //"') : ()
> │ >         | None => ()
> │ > 
> │ >         !\\((signer_account_id, alias), $'"  
> !account_map.insert($0.clone(), 
> │ > $1.clone()); //"') : ()
> │ > 
> │ >         account_set |> near.iterable_set_insert 
> signer_account_id |> ignore
> │ >         alias_set |> near.iterable_set_insert alias |> 
> ignore
> │ > 
> │ >         !\\(alias, $'"  let new_alias_account_map = match 
> !alias_map.get(&$0) { 
> │ > //"') : ()
> │ >         !\($'"    None => { //"') : ()
> │ >         !\($'"      let mut new_map = 
> std::collections::HashMap::new(); //"') : 
> │ > ()
> │ >         !\\((signer_account_id, block_timestamp), $'"      
> new_map.insert($0, 
> │ > ($1, 0u32)); //"') : ()
> │ >         !\($'"      new_map //"') : ()
> │ >         !\($'"    } //"') : ()
> │ >         !\($'"    Some(accounts) => { //"') : ()
> │ >         !\($'"      let mut accounts_vec = 
> accounts.iter().collect::<Vec<_>>(); 
> │ > //"') : ()
> │ >         !\($'"      accounts_vec.sort_unstable_by_key(|(_, 
> (_, index))| index); 
> │ > //"') : ()
> │ >         !\($'"      let mut new_map = accounts_vec //"') : 
> ()
> │ >         !\($'"        .iter() //"') : ()
> │ >         !\($'"        .enumerate() //"') : ()
> │ >         !\($'"        .map(|(i, (signer_account_id, 
> (timestamp, _)))| { //"') : 
> │ > ()
> │ >         !\($'"          ((*signer_account_id).clone(), 
> (*timestamp, i as u32)) 
> │ > //"') : ()
> │ >         !\($'"        }) //"') : ()
> │ >         !\($'"        
> .collect::<std::collections::HashMap<_, _>>(); //"') : ()
> │ >         !\\(signer_account_id, $'"      new_map.insert($0, 
> (!block_timestamp, 
> │ > accounts_vec.len() as u32)); //"') : ()
> │ >         !\($'"      new_map //"') : ()
> │ >         !\($'"    } //"') : ()
> │ >         !\($'"  }; //"') : ()
> │ > 
> │ >         !\\(alias, $'"  !alias_map.insert($0, 
> new_alias_account_map); //"') : ()
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > ///! rust -c
> │ > 
> │ > inl state = new ()
> │ > inl version = state.version
> │ > inl account_set = state.account_set
> │ > inl alias_set = state.alias_set
> │ > inl account_map = state.account_map
> │ > inl alias_map = state.alias_map
> │ > inl version = join version
> │ > inl account_set = join account_set
> │ > inl alias_set = join alias_set
> │ > inl account_map = join account_map
> │ > inl alias_map = join alias_map
> │ > inl state : rust.ref (rust.mut' state) =
> │ >     !\\(
> │ >         version,
> │ >         $'$"&mut ($0, !account_set, !alias_set, 
> !account_map, !alias_map)"'
> │ >     )
> │ > 
> │ > "alias1"
> │ > |> sm'.to_std_string
> │ > |> claim_alias state
> │ > 
> │ > trace Verbose
> │ >     fun () => "chat_contract"
> │ >     fun () => { state = state |> sm'.format_debug }
> │ > 
> │ > trace Debug (fun () => "") id
> │ > 
> │ > ── [ 16.31s - return value ] 
> ───────────────────────────────────────────────────
> │ > │ 00:00:00 d #1 
> chat_contract.claim_alias / { alias = 
> │ > "alias1"; block_timestamp = 1742039585333195050; 
> signer_account_id = 
> │ > "dev-20250315115304-79561369545404"; predecessor_account_id
> = 
> │ > "dev-20250315115304-79561369545404" }
> │ > │ 00:00:00 d #2 
> chat_contract.claim_alias / { 
> │ > account_alias = None }
> │ > │ 00:00:00 v #3 chat_contract / { 
> state = (2, IterableSet
> │ > { elements: Vector { len: 1, prefix: [97, 99, 99, 111, 117,
> 110, 116, 95, 115, 
> │ > 101, 116, 118] }, index: LookupMap { prefix: [97, 99, 99, 
> 111, 117, 110, 116, 
> │ > 95, 115, 101, 116, 109] } }, IterableSet { elements: Vector
> { len: 1, prefix: 
> │ > [97, 108, 105, 97, 115, 95, 115, 101, 116, 118] }, index: 
> LookupMap { prefix: 
> │ > [97, 108, 105, 97, 115, 95, 115, 101, 116, 109] } }, 
> LookupMap { prefix: [97, 
> │ > 99, 99, 111, 117, 110, 116, 95, 109, 97, 112] }, LookupMap 
> { prefix: [97, 108, 
> │ > 105, 97, 115, 95, 109, 97, 112] }) }
> │ > │  
> │ > │ 00:00:07 i #2 
> near_workspaces.print_usd / { retry = 1; 
> │ > total_gas_burnt_usd = +0.002669; total_gas_burnt = 
> 3995708853120 }
> │ > │ 00:00:07 i #3 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000206; 
> tokens_burnt_usd = +0.000206; 
> │ > gas_burnt = 308081859340; tokens_burnt = 
> 30808185934000000000 }
> │ > │ 00:00:07 i #4 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.002314; 
> tokens_burnt_usd = +0.002314; 
> │ > gas_burnt = 3464444431280; tokens_burnt = 
> 346444443128000000000 }
> │ > │ 00:00:07 i #5 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000149; 
> tokens_burnt_usd = +0.000000; 
> │ > gas_burnt = 223182562500; tokens_burnt = 0 }
> │ > │ 
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > ///! rust \"-c=-e=\\\"chat_contract.claim_alias / invalid 
> alias\\\"\"
> │ > 
> │ > ""
> │ > |> sm'.to_std_string
> │ > |> claim_alias (
> │ >     inl state = new ()
> │ >     inl version = state.version
> │ >     inl account_set = state.account_set
> │ >     inl alias_set = state.alias_set
> │ >     inl account_map = state.account_map
> │ >     inl alias_map = state.alias_map
> │ >     !\\(version, $'$"&mut ($0, !account_set, !alias_set, 
> !account_map, 
> │ > !alias_map)"')
> │ > )
> │ > trace Debug (fun () => "") id
> │ > 
> │ > ── [ 16.63s - return value ] 
> ───────────────────────────────────────────────────
> │ > │  
> │ > │ 00:00:07 i #2 
> near_workspaces.print_usd / { retry = 1; 
> │ > total_gas_burnt_usd = +0.001294; total_gas_burnt = 
> 1937214129258 }
> │ > │ 00:00:07 i #3 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000206; 
> tokens_burnt_usd = +0.000206; 
> │ > gas_burnt = 308081859340; tokens_burnt = 
> 30808185934000000000 }
> │ > │ 00:00:07 i #4 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = false; gas_burnt_usd = +0.000939; 
> tokens_burnt_usd = +0.000939; 
> │ > gas_burnt = 1405949707418; tokens_burnt = 
> 140594970741800000000 }
> │ > │ 00:00:07 i #5 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000149; 
> tokens_burnt_usd = +0.000000; 
> │ > gas_burnt = 223182562500; tokens_burnt = 0 }
> │ > │ 00:00:07 c #6 spiral_wasm.run / Ok
> (Some error) / { 
> │ > retry = 1; error = { receipt_outcomes_len = 2; retry = 1; 
> receipt_failures = [
> │ > │     ExecutionOutcome {
> │ > │         transaction_hash: 
> │ > 249AjvEqT8a2R2A2N1CnYEirkvbpF27EGwMvGPne4r93,
> │ > │         block_hash: 
> │ > 6NQ86CyrC1AACeYC5ntuAEVnfPZzKzMCWTytzff5zncD,
> │ > │         logs: [],
> │ > │         receipt_ids: [
> │ > │             
> EFcLaa4M8xHonEEvJgLSWxhAfGHNh4VdJ9XgeSWWnfPV,
> │ > │         ],
> │ > │         gas_burnt: NearGas {
> │ > │             inner: 1405949707418,
> │ > │         },
> │ > │         tokens_burnt: NearToken {
> │ > │             inner: 
> 140594970741800000000,
> │ > │         },
> │ > │         executor_id: AccountId(
> │ > │             
> "dev-20250315115320-37654558152399",
> │ > │         ),
> │ > │         status: 
> Failure(ActionError(ActionError { index: 
> │ > Some(0), kind: FunctionCallError(ExecutionError("Smart 
> contract panicked: 
> │ > chat_contract.claim_alias / invalid alias")) })),
> │ > │     },
> │ > │ ] } }
> │ > │ 
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > ///! rust -cd borsh
> │ > 
> │ > inl state' = new ()
> │ > inl state = state'
> │ > inl version = state.version
> │ > inl account_set = state.account_set
> │ > inl alias_set = state.alias_set
> │ > inl account_map = state.account_map
> │ > inl alias_map = state.alias_map
> │ > inl version = join version
> │ > inl account_set = join account_set
> │ > inl alias_set = join alias_set
> │ > inl account_map = join account_map
> │ > inl alias_map = join alias_map
> │ > 
> │ > inl state =
> │ >     !\\(
> │ >         (version, account_set, alias_set),
> │ >         $'$"&mut ($0, $1, $2, !account_map, !alias_map)"'
> │ >     )
> │ > 
> │ > "alias1"
> │ > |> sm'.to_std_string
> │ > |> claim_alias state
> │ > 
> │ > "alias1"
> │ > |> sm'.to_std_string
> │ > |> claim_alias state
> │ > 
> │ > "alias1"
> │ > |> sm'.to_std_string
> │ > |> claim_alias state
> │ > 
> │ > inl account_set' : rust.ref (near.iterable_set 
> near.account_id) =
> │ >     !\($'$"&!state.1"')
> │ > 
> │ > inl alias_set' : rust.ref (near.iterable_set 
> sm'.std_string) =
> │ >     !\($'$"&!state.2"')
> │ > 
> │ > inl account_set' =
> │ >     account_set'
> │ >     |> iter.iter_ref''
> │ >     |> iter.cloned
> │ >     |> iter_collect
> │ > 
> │ > inl alias_set' =
> │ >     alias_set'
> │ >     |> iter.iter_ref''
> │ >     |> iter.cloned
> │ >     |> iter_collect
> │ >     |> am'.vec_map sm'.from_std_string
> │ > 
> │ > trace Verbose
> │ >     fun () => "chat_contract"
> │ >     fun () => {
> │ >         account_set' = account_set' |> sm'.format_debug
> │ >         alias_set' = alias_set' |> sm'.format_debug
> │ >         state = state |> sm'.format_debug
> │ >     }
> │ > 
> │ > trace Debug (fun () => "") id
> │ > 
> │ > account_set'
> │ > |> am'.vec_len
> │ > |> convert
> │ > |> _assert_eq 1u32
> │ > 
> │ > alias_set'
> │ > |> am'.from_vec_base
> │ > |> _assert_eq' ;[[ "alias1" ]]
> │ > 
> │ > ── [ 17.39s - return value ] 
> ───────────────────────────────────────────────────
> │ > │ 00:00:00 d #1 
> chat_contract.claim_alias / { alias = 
> │ > "alias1"; block_timestamp = 1742039619324290607; 
> signer_account_id = 
> │ > "dev-20250315115338-99124110739148"; predecessor_account_id
> = 
> │ > "dev-20250315115338-99124110739148" }
> │ > │ 00:00:00 d #2 
> chat_contract.claim_alias / { 
> │ > account_alias = None }
> │ > │ 00:00:00 d #3 
> chat_contract.claim_alias / { alias = 
> │ > "alias1"; block_timestamp = 1742039619324290607; 
> signer_account_id = 
> │ > "dev-20250315115338-99124110739148"; predecessor_account_id
> = 
> │ > "dev-20250315115338-99124110739148" }
> │ > │ 00:00:00 d #4 
> chat_contract.claim_alias / { 
> │ > account_alias = Some("alias1") }
> │ > │ 00:00:00 d #5 
> chat_contract.claim_alias / { alias = 
> │ > "alias1"; block_timestamp = 1742039619324290607; 
> signer_account_id = 
> │ > "dev-20250315115338-99124110739148"; predecessor_account_id
> = 
> │ > "dev-20250315115338-99124110739148" }
> │ > │ 00:00:00 d #6 
> chat_contract.claim_alias / { 
> │ > account_alias = Some("alias1") }
> │ > │ 00:00:00 v #7 chat_contract / { 
> account_set' = 
> │ > [AccountId("dev-20250315115338-99124110739148")]; 
> alias_set' = ["alias1"]; state
> │ > = (2, IterableSet { elements: Vector { len: 1, prefix: [97,
> 99, 99, 111, 117, 
> │ > 110, 116, 95, 115, 101, 116, 118] }, index: LookupMap { 
> prefix: [97, 99, 99, 
> │ > 111, 117, 110, 116, 95, 115, 101, 116, 109] } }, 
> IterableSet { elements: Vector 
> │ > { len: 1, prefix: [97, 108, 105, 97, 115, 95, 115, 101, 
> 116, 118] }, index: 
> │ > LookupMap { prefix: [97, 108, 105, 97, 115, 95, 115, 101, 
> 116, 109] } }, 
> │ > LookupMap { prefix: [97, 99, 99, 111, 117, 110, 116, 95, 
> 109, 97, 112] }, 
> │ > LookupMap { prefix: [97, 108, 105, 97, 115, 95, 109, 97, 
> 112] }) }
> │ > │  
> │ > │ 00:00:07 i #2 
> near_workspaces.print_usd / { retry = 1; 
> │ > total_gas_burnt_usd = +0.004483; total_gas_burnt = 
> 6710454647302 }
> │ > │ 00:00:07 i #3 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000206; 
> tokens_burnt_usd = +0.000206; 
> │ > gas_burnt = 308081859340; tokens_burnt = 
> 30808185934000000000 }
> │ > │ 00:00:07 i #4 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.004128; 
> tokens_burnt_usd = +0.004128; 
> │ > gas_burnt = 6179190225462; tokens_burnt = 
> 617919022546200000000 }
> │ > │ 00:00:07 i #5 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000149; 
> tokens_burnt_usd = +0.000000; 
> │ > gas_burnt = 223182562500; tokens_burnt = 0 }
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### get_account_info
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl get_account_info
> │ >     (state : rust.ref state)
> │ >     (account_id : near.account_id)
> │ >     : optionm'.option' (sm'.std_string * (u64 * u32))
> │ >     =
> │ >     inl account_map : rust.ref (near.lookup_map 
> near.account_id sm'.std_string) 
> │ > =
> │ >         !\($'$"&!state.3"')
> │ > 
> │ >     inl alias_map : rust.ref (near.lookup_map 
> sm'.std_string (mapm.hash_map 
> │ > near.account_id (u64 * u32))) =
> │ >         !\($'$"&!state.4"')
> │ > 
> │ >     (!\\(account_id, $'"true; let result = 
> │ > !account_map.get(&$0).and_then(|alias| { //"') : bool) |> 
> ignore
> │ >     (!\($'"true;    !alias_map.get(alias).map(|accounts| { 
> //"') : bool) |> 
> │ > ignore
> │ >     (!\($'"true;        let result = (alias.clone(), 
> │ > *accounts.get(&!account_id).unwrap()); //"') : bool) |> 
> ignore
> │ >     (!\($'"true;        (result.0, result.1.0, result.1.1)
> }) }); //"') : bool)
> │ > |> ignore
> │ > 
> │ >     inl result = !\($'"result"')
> │ > 
> │ >     trace Debug
> │ >         fun () => "chat_contract.get_account_info"
> │ >         fun () => { account_id result }
> │ > 
> │ >     trace Debug (fun () => "") id
> │ > 
> │ >     result
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > ///! rust -cd borsh
> │ > 
> │ > inl state' = new ()
> │ > inl state = state'
> │ > inl version = state.version
> │ > inl account_set = state.account_set
> │ > inl alias_set = state.alias_set
> │ > inl account_map = state.account_map
> │ > inl alias_map = state.alias_map
> │ > inl version = join version
> │ > inl account_set = join account_set
> │ > inl alias_set = join alias_set
> │ > inl account_map = join account_map
> │ > inl alias_map = join alias_map
> │ > 
> │ > inl state_ref_mut =
> │ >     !\\(
> │ >         version,
> │ >         $'$"&mut ($0, !account_set, !alias_set, 
> !account_map, !alias_map)"'
> │ >     )
> │ > 
> │ > inl state_ref = !\($'$"!state_ref_mut"')
> │ > near.predecessor_account_id ()
> │ > |> get_account_info state_ref
> │ > |> _assert_eq' (optionm'.none' ())
> │ > 
> │ > inl state_ref = !\($'$"!state_ref_mut"')
> │ > near.signer_account_id ()
> │ > |> get_account_info state_ref
> │ > |> _assert_eq' (optionm'.none' ())
> │ > 
> │ > "alias1"
> │ > |> sm'.to_std_string
> │ > |> claim_alias state_ref_mut
> │ > 
> │ > inl state_ref = !\($'$"!state_ref_mut"')
> │ > near.predecessor_account_id ()
> │ > |> get_account_info state_ref
> │ > |> optionm'.get'
> │ > |> fun alias, (timestamp, i) =>
> │ >     alias
> │ >     |> sm'.from_std_string
> │ >     |> _assert_eq "alias1"
> │ > 
> │ >     timestamp
> │ >     |> _assert_gt 0
> │ > 
> │ >     i
> │ >     |> _assert_eq 0
> │ > 
> │ > inl state_ref = !\($'$"!state_ref_mut"')
> │ > near.signer_account_id ()
> │ > |> get_account_info state_ref
> │ > |> optionm'.get'
> │ > |> fun alias, (timestamp, i) =>
> │ >     alias
> │ >     |> sm'.from_std_string
> │ >     |> _assert_eq "alias1"
> │ > 
> │ >     timestamp
> │ >     |> _assert_gt 0
> │ > 
> │ >     i
> │ >     |> _assert_eq 0
> │ > 
> │ > ── [ 29.83s - return value ] 
> ───────────────────────────────────────────────────
> │ > │ 00:00:00 d #1 
> chat_contract.get_account_info / { 
> │ > account_id = AccountId(
> │ > │     "dev-20250315115355-86758945028648",
> │ > │ ); result = None }
> │ > │ 00:00:00 d #3 
> chat_contract.get_account_info / { 
> │ > account_id = AccountId(
> │ > │     "dev-20250315115355-86758945028648",
> │ > │ ); result = None }
> │ > │ 00:00:00 d #5 
> chat_contract.claim_alias / { alias = 
> │ > "alias1"; block_timestamp = 1742039636408166565; 
> signer_account_id = 
> │ > "dev-20250315115355-86758945028648"; predecessor_account_id
> = 
> │ > "dev-20250315115355-86758945028648" }
> │ > │ 00:00:00 d #6 
> chat_contract.claim_alias / { 
> │ > account_alias = None }
> │ > │ 00:00:00 d #7 
> chat_contract.get_account_info / { 
> │ > account_id = AccountId(
> │ > │     "dev-20250315115355-86758945028648",
> │ > │ ); result = Some(
> │ > │     (
> │ > │         "alias1",
> │ > │         1742039636408166565,
> │ > │         0,
> │ > │     ),
> │ > │ ) }
> │ > │ 00:00:00 d #9 
> chat_contract.get_account_info / { 
> │ > account_id = AccountId(
> │ > │     "dev-20250315115355-86758945028648",
> │ > │ ); result = Some(
> │ > │     (
> │ > │         "alias1",
> │ > │         1742039636408166565,
> │ > │         0,
> │ > │     ),
> │ > │ ) }
> │ > │  
> │ > │ 00:00:07 i #2 
> near_workspaces.print_usd / { retry = 1; 
> │ > total_gas_burnt_usd = +0.003129; total_gas_burnt = 
> 4683702347218 }
> │ > │ 00:00:07 i #3 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000206; 
> tokens_burnt_usd = +0.000206; 
> │ > gas_burnt = 308081859340; tokens_burnt = 
> 30808185934000000000 }
> │ > │ 00:00:07 i #4 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.002923; 
> tokens_burnt_usd = +0.0...852",
> │ > │ ); result = None }
> │ > │ 00:00:00 d #5 
> chat_contract.claim_alias / { alias = 
> │ > "alias1"; block_timestamp = 1742039649519459476; 
> signer_account_id = 
> │ > "dev-20250315115408-51933845009852"; predecessor_account_id
> = 
> │ > "dev-20250315115408-51933845009852" }
> │ > │ 00:00:00 d #6 
> chat_contract.claim_alias / { 
> │ > account_alias = None }
> │ > │ 00:00:00 d #7 
> chat_contract.get_account_info / { 
> │ > account_id = AccountId(
> │ > │     "dev-20250315115408-51933845009852",
> │ > │ ); result = Some(
> │ > │     (
> │ > │         "alias1",
> │ > │         1742039649519459476,
> │ > │         0,
> │ > │     ),
> │ > │ ) }
> │ > │ 00:00:00 d #9 
> chat_contract.get_account_info / { 
> │ > account_id = AccountId(
> │ > │     "dev-20250315115408-51933845009852",
> │ > │ ); result = Some(
> │ > │     (
> │ > │         "alias1",
> │ > │         1742039649519459476,
> │ > │         0,
> │ > │     ),
> │ > │ ) }
> │ > │  
> │ > │ 00:00:20 i #14 
> near_workspaces.print_usd / { retry = 3;
> │ > total_gas_burnt_usd = +0.003278; total_gas_burnt = 
> 4906884909718 }
> │ > │ 00:00:20 i #15 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000206; 
> tokens_burnt_usd = +0.000206; 
> │ > gas_burnt = 308081859340; tokens_burnt = 
> 30808185934000000000 }
> │ > │ 00:00:20 i #16 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.002923; 
> tokens_burnt_usd = +0.002923; 
> │ > gas_burnt = 4375620487878; tokens_burnt = 
> 437562048787800000000 }
> │ > │ 00:00:20 i #17 
> near_workspaces.print_usd / outcome / { 
> │ > is_success = true; gas_burnt_usd = +0.000149; 
> tokens_burnt_usd = +0.000000; 
> │ > gas_burnt = 223182562500; tokens_burnt = 0 }
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### main
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > ///! _
> │ > 
> │ > inl main () =
> │ >     !\($'"} //"') : ()
> │ > 
> │ >     !\($'"#[[near_sdk::near_bindgen]] //"') : ()
> │ > 
> │ >     !\($'"#[[derive( //"') : ()
> │ >     !\($'"  near_sdk::PanicOnDefault, //"') : ()
> │ >     !\($'"  borsh::BorshDeserialize, //"') : ()
> │ >     !\($'"  borsh::BorshSerialize, //"') : ()
> │ >     !\($'")]] //"') : ()
> │ > 
> │ >     !\($'"pub struct State ( //"') : ()
> │ > 
> │ >     !\($'"/*"') : ()
> │ >     (null () : rust.type_emit state) |> ignore
> │ >     !\($'"*/ )"') : ()
> │ > 
> │ >     inl new_ () =
> │ >         !\($'"#[[init]] //"') : ()
> │ >         !\($'"pub fn new() -> Self { // 1"') : ()
> │ > 
> │ >         (!\($'"true; /*"') : bool) |> ignore
> │ > 
> │ >         (null () : rust.type_emit ()) |> ignore
> │ > 
> │ >         (!\($'"true; */"') : bool) |> ignore
> │ > 
> │ >         inl result = new ()
> │ > 
> │ >         $'let _result = !result in _result |> (fun x -> 
> │ > Fable.Core.RustInterop.emitRustExpr x $"Self($0) // x") // 
> 2' : ()
> │ > 
> │ >         !\($'"} // 2."') : ()
> │ > 
> │ >         !\($'"} // 1."') : ()
> │ > 
> │ >         2
> │ > 
> │ >     inl is_valid_alias () =
> │ >         !\($'"fn is_valid_alias(alias: String) -> bool { 
> //"') : ()
> │ >         inl alias = !\($'$"alias"')
> │ >         inl result = alias |> is_valid_alias
> │ >         $'let _result = !result in _result |> (fun x -> 
> │ > Fable.Core.RustInterop.emitRustExpr x "$0 }") // 2' : ()
> │ >         !\($'"} //"') : ()
> │ >         1
> │ > 
> │ >     inl generate_cid () =
> │ >         !\($'"pub fn generate_cid( //"') : ()
> │ >         !\($'"  &self, //"') : ()
> │ >         !\($'"  content: Vec<u8>, //"') : ()
> │ >         !\($'") -> String { //"') : ()
> │ >         inl content = !\($'$"content"')
> │ >         inl result = generate_cid content
> │ >         $'let _result = !result in _result |> (fun x -> 
> │ > Fable.Core.RustInterop.emitRustExpr x "$0 }") // 2' : ()
> │ >         !\($'"} //"') : ()
> │ >         2
> │ > 
> │ >     inl generate_cid_borsh () =
> │ >         !\($'"#[[result_serializer(borsh)]] //"') : ()
> │ >         !\($'"pub fn generate_cid_borsh( //"') : ()
> │ >         !\($'"  &self, //"') : ()
> │ >         !\($'"  #[[serializer(borsh)]] content: Vec<u8>, 
> //"') : ()
> │ >         !\($'") -> String { //"') : ()
> │ >         !\($'"  self.generate_cid(content) //"') : ()
> │ >         !\($'"} //"') : ()
> │ >         1
> │ > 
> │ >     inl claim_alias () =
> │ >         !\($'"pub fn claim_alias( //"') : ()
> │ >         !\($'"  &mut self, //"') : ()
> │ >         !\($'"  alias: String, //"') : ()
> │ >         !\($'") { //"') : ()
> │ >         
> │ >         inl state = !\($'$"&mut self.0"')
> │ >         inl alias = !\($'$"alias"')
> │ >         
> │ >         inl result = claim_alias state alias
> │ >         trace Debug (fun () => "") (join id)
> │ > 
> │ >         !\($'"} //"') : ()
> │ > 
> │ >         !\($'"} //"') : ()
> │ > 
> │ >         !\($'"} //"') : ()
> │ > 
> │ >         3
> │ > 
> │ >     inl get_account_info () =
> │ >         !\($'"pub fn get_account_info( //"') : ()
> │ >         !\($'"  &self, //"') : ()
> │ >         !\($'"  account_id: near_sdk::AccountId, //"') : ()
> │ >         !\($'") -> Option<(String, u64, u32)> { //"') : ()
> │ > 
> │ >         inl state = !\($'$"&self.0"')
> │ >         inl account_id : near.account_id = 
> !\($'$"account_id"')
> │ > 
> │ >         inl result = account_id |> get_account_info state
> │ >         $'let _result = !result in _result |> (fun x -> 
> │ > Fable.Core.RustInterop.emitRustExpr x "$0 } // 4") // 3' : 
> ()
> │ > 
> │ >         !\($'"} // 1"') : ()
> │ > 
> │ >         1
> │ > 
> │ >     inl get_alias_map () =
> │ >         !\($'"pub fn get_alias_map( //"') : ()
> │ >         !\($'"  &self, //"') : ()
> │ >         !\($'"  alias: String, //"') : ()
> │ >         !\($'") -> 
> Option<std::collections::HashMap<near_sdk::AccountId, (u64, 
> │ > u32)>> { //"') : ()
> │ > 
> │ >         inl alias_map : rust.ref (near.lookup_map 
> sm'.std_string (mapm.hash_map 
> │ > near.account_id (u64 * u32))) =
> │ >             !\($'$"&self.0.4"')
> │ > 
> │ >         inl alias : sm'.std_string = !\($'$"alias"')
> │ > 
> │ >         trace Debug
> │ >             fun () => "chat_contract.get_alias_map"
> │ >             fun () => { alias }
> │ > 
> │ >         trace Debug (fun () => "") (join id)
> │ > 
> │ >         !\\(alias, $'"  !alias_map.get(&$0).cloned() //"') 
> : ()
> │ >         !\($'"} //"') : ()
> │ > 
> │ >         !\($'"} //"') : ()
> │ > 
> │ >         2
> │ > 
> │ >     inl get_alias_map_borsh () =
> │ >         !\($'"#[[result_serializer(borsh)]] //"') : ()
> │ >         !\($'"pub fn get_alias_map_borsh( //"') : ()
> │ >         !\($'"  &self, //"') : ()
> │ >         !\($'"  #[[serializer(borsh)]] alias: String, //"')
> : ()
> │ >         !\($'") -> 
> Option<std::collections::HashMap<near_sdk::AccountId, (u64, 
> │ > u32)>> { //"') : ()
> │ >         !\($'"  self.get_alias_map(alias) //"') : ()
> │ >         !\($'"} //"') : ()
> │ >         1
> │ > 
> │ >     inl fns =
> │ >         [[
> │ >             new_
> │ >             is_valid_alias
> │ >             generate_cid
> │ >             generate_cid_borsh
> │ >             claim_alias
> │ >             get_account_info
> │ >             get_alias_map
> │ >             get_alias_map_borsh
> │ >         ]]
> │ > 
> │ >     inl rec loop acc fns i =
> │ >         match fns with
> │ >         | [[]] => acc
> │ >         | x :: xs =>
> │ >             !\($'"#[[near_sdk::near_bindgen]] //"') : ()
> │ >             !\($'"impl State { //"') : ()
> │ >             inl n = x ()
> │ >             !\($'"} /* c"') : ()
> │ >             inl rec loop' i' =
> │ >                 if i' <> 1 // <= n
> │ >                 then (!\($'"true; */ // ???? / i: !i / i\':
> !i' / acc: !acc / n:
> │ > !n"') : bool) |> ignore
> │ >                 else
> │ >                     (!\($'"true; // ??? / i: !i / i\': !i' 
> / acc: !acc / n: 
> │ > !n"') : bool) |> ignore
> │ >                     loop' (i' + 1)
> │ >             loop' 1u8
> │ >             loop (acc + n) xs (i + 1)
> │ >     inl n = loop 0u8 fns 1u8
> │ > 
> │ > 
> │ >     // !\($'"/* a"') : ()
> │ > 
> │ >     // !\($'"} // b"') : ()
> │ > 
> │ >     !\($'"fn _main() //"') : ()
> │ >     !\($'"{ { //"') : ()
> │ > 
> │ >     inl rec loop' i' =
> │ >         if i' <= n
> │ >         then
> │ >             (!\($'"true; { (); // ?? / i\': !i' / n: !n"') 
> : bool) |> ignore
> │ >             loop' (i' + 1)
> │ >         else
> │ >             (!\($'"true; { { (); // ? / i\': !i' / n: !n"')
> : bool) |> ignore
> │ >             // (!\($'"true; */ // ?? / i\': !i' / n: !n"') 
> : bool) |> ignore
> │ >     loop' 1u8
> │ > 
> │ > inl main () =
> │ >     $'!main |> ignore' : ()
> │ 00:04:48 v #3 runtime.execute_with_options / result / {
> exit_code = 0; std_trace_length = 49642 }
> │ 00:04:48 d #4 runtime.execute_with_options / { 
> file_name = jupyter; arguments = ["nbconvert", 
> "c:/home/git/polyglot/apps/chat/contract/chat_contract.dib.ipynb", "--to", 
> "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert 
> "c:/home/git/polyglot/apps/chat/contract/chat_contract.dib.ipynb" --to html 
> --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = 
> Array(MutCell([])); on_line = None; stdin = None; trace = true; 
> working_directory = None } }
> │ 00:04:50 v #5 ! [NbConvertApp] Converting notebook 
> c:/home/git/polyglot/apps/chat/contract/chat_contract.dib.ipynb to html
> │ 00:04:50 v #6 ! 
> C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.
> py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a 
> hard error in future nbformat versions. You may want to use `normalize()` on 
> your notebooks before validations (available since nbformat 5.1.4). Previous 
> versions of nbformat are fixing this issue transparently, and will stop doing so
> in the future.
> │ 00:04:50 v #7 !   validate(nb)
> │ 00:04:50 v #8 ! 
> C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\
> highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python
> 3
> │ 00:04:50 v #9 !   return _pygments_highlight(
> │ 00:04:51 v #10 ! [NbConvertApp] Writing 399085 bytes to
> c:\home\git\polyglot\apps\chat\contract\chat_contract.dib.html
> │ 00:04:51 v #11 runtime.execute_with_options / result / 
> { exit_code = 0; std_trace_length = 884 }
> │ 00:04:51 d #12 spiral.run / dib / jupyter nbconvert / {
> exit_code = 0; jupyter_result_length = 884 }
> │ 00:04:51 d #13 runtime.execute_with_options / { 
> file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 
> 'c:/home/git/polyglot/apps/chat/contract/chat_contract.dib.html'; (Get-Content 
> $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + 
> $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1;
> $path = 'c:/home/git/polyglot/apps/chat/contract/chat_contract.dib.html'; 
> (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { 
> $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = 
> None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; 
> trace = true; working_directory = None } }
> │ 00:04:51 v #14 runtime.execute_with_options / result / 
> { exit_code = 0; std_trace_length = 0 }
> │ 00:04:51 d #15 spiral.run / dib / html cell ids / { 
> exit_code = 0; pwsh_replace_html_result_length = 0 }
> │ 00:04:51 d #16 spiral.run / dib / { exit_code = 0; 
> result_length = 50585 }
> │ 00:00:00 d #1 writeDibCode / output: Spi / path: 
> chat_contract.dib
> │ 00:00:00 d #2 parseDibCode / output: Spi / file: 
> chat_contract.dib
> │ 00:00:00 d #1 persistCodeProject / packages: 
> [Fable.Core] / modules: [deps/spiral/lib/spiral/common.fsx; 
> deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: 
> chat_contract / hash:  / code.Length: 147969
> │ 00:00:00 d #2 buildProject / fullPath: 
> c:\home\git\polyglot\target\Builder\chat_contract\chat_contract.fsproj
> │ 00:00:00 d #1 runtime.execute_with_options_async / { 
> file_name = dotnet; arguments = US5_0
> │   "publish 
> "c:/home/git\polyglot\target/Builder\chat_contract\chat_contract.fsproj" 
> --configuration Release --output "C:\home\git\polyglot\apps\chat\contract\dist" 
> --runtime linux-x64"; options = { command = dotnet publish 
> "c:/home/git\polyglot\target/Builder\chat_contract\chat_contract.fsproj" 
> --configuration Release --output "C:\home\git\polyglot\apps\chat\contract\dist" 
> --runtime linux-x64; cancellation_token = None; environment_variables = [||]; 
> on_line = None; stdin = None; trace = true; working_directory = Some 
> "c:\home\git\polyglot\target\Builder\chat_contract" } }
> │ 00:00:01 v #2 >   Determining projects to restore...
> │ 00:00:01 v #3 >   Paket version 
> 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
> │ 00:00:01 v #4 >   The last full restore is still up to 
> date. Nothing left to do.
> │ 00:00:01 v #5 >   Total time taken: 0 milliseconds
> │ 00:00:02 v #6 >   Restored 
> c:\home\git\polyglot\target\Builder\chat_contract\chat_contract.fsproj (in 252 
> ms).
> │ 00:00:10 v #7 > 
> c:\home\git\polyglot\target\Builder\chat_contract\chat_contract.fs(3360,15): 
> warning FS0025: Incomplete pattern matches on this expression. For example, the 
> value 'US6_0 (_)' may indicate a case not covered by the pattern(s). 
> [c:\home\git\polyglot\target\Builder\chat_contract\chat_contract.fsproj]
> │ 00:00:15 v #8 >   chat_contract -> 
> c:\home\git\polyglot\target\Builder\chat_contract\bin\Release\net9.0\linux-x64\c
> hat_contract.dll
> │ 00:00:17 v #9 >   chat_contract -> 
> C:\home\git\polyglot\apps\chat\contract\dist\
> │ 00:00:17 d #10 runtime.execute_with_options_async / { 
> exit_code = 0; output_length = 774; options = { command = dotnet publish 
> "c:/home/git\polyglot\target/Builder\chat_contract\chat_contract.fsproj" 
> --configuration Release --output "C:\home\git\polyglot\apps\chat\contract\dist" 
> --runtime linux-x64; cancellation_token = None; environment_variables = [||]; 
> on_line = None; stdin = None; trace = true; working_directory = Some 
> "c:\home\git\polyglot\target\Builder\chat_contract" } }
> │ 00:00:17 d #11 runtime.execute_with_options_async / { 
> file_name = dotnet; arguments = US5_0
> │   "publish 
> "c:/home/git\polyglot\target/Builder\chat_contract\chat_contract.fsproj" 
> --configuration Release --output "C:\home\git\polyglot\apps\chat\contract\dist" 
> --runtime win-x64"; options = { command = dotnet publish 
> "c:/home/git\polyglot\target/Builder\chat_contract\chat_contract.fsproj" 
> --configuration Release --output "C:\home\git\polyglot\apps\chat\contract\dist" 
> --runtime win-x64; cancellation_token = None; environment_variables = [||]; 
> on_line = None; stdin = None; trace = true; working_directory = Some 
> "c:\home\git\polyglot\target\Builder\chat_contract" } }
> │ 00:00:18 v #12 >   Determining projects to restore...
> │ 00:00:18 v #13 >   Paket version 
> 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
> │ 00:00:18 v #14 >   The last full restore is still up to 
> date. Nothing left to do.
> │ 00:00:18 v #15 >   Total time taken: 0 milliseconds
> │ 00:00:19 v #16 >   Restored 
> c:\home\git\polyglot\target\Builder\chat_contract\chat_contract.fsproj (in 246 
> ms).
> │ 00:00:27 v #17 > 
> c:\home\git\polyglot\target\Builder\chat_contract\chat_contract.fs(3360,15): 
> warning FS0025: Incomplete pattern matches on this expression. For example, the 
> value 'US6_0 (_)' may indicate a case not covered by the pattern(s). 
> [c:\home\git\polyglot\target\Builder\chat_contract\chat_contract.fsproj]
> │ 00:00:32 v #18 >   chat_contract -> 
> c:\home\git\polyglot\target\Builder\chat_contract\bin\Release\net9.0\win-x64\cha
> t_contract.dll
> │ 00:00:34 v #19 >   chat_contract -> 
> C:\home\git\polyglot\apps\chat\contract\dist\
> │ 00:00:34 d #20 runtime.execute_with_options_async / { 
> exit_code = 0; output_length = 772; options = { command = dotnet publish 
> "c:/home/git\polyglot\target/Builder\chat_contract\chat_contract.fsproj" 
> --configuration Release --output "C:\home\git\polyglot\apps\chat\contract\dist" 
> --runtime win-x64; cancellation_token = None; environment_variables = [||]; 
> on_line = None; stdin = None; trace = true; working_directory = Some 
> "c:\home\git\polyglot\target\Builder\chat_contract" } }
> │ spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: 
> C:\home\git\polyglot\target\Builder\chat_contract
> │ polyglot/scripts/core.ps1/ResolveLink #4 / Path: 
> C:\home\git\polyglot\deps\spiral\lib\spiral/../../deps/polyglot / parent_target:
> / path_target: C:\home\git\polyglot / parent: 
> C:\home\git\polyglot\deps\spiral\lib\spiral\..\..\deps / End: polyglot
> │ spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: 
> C:\home\git\polyglot\target\Builder\chat_contract / ProjectName: chat_contract /
> Language: rs / Runtime: CONTRACT / root: C:\home\git\polyglot
> │ Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha)
> │ 
> │ Thanks to the contributor! @simra
> │ Stand with Ukraine! https://standwithukraine.com.ua/
> │ 
> │ Parsing target\Builder\chat_contract\chat_contract.fsproj...
> │ Retrieving project options from cache, in case of issues run 
> `dotnet fable clean` or try `--noCache` option.
> │ Project and references (14 source files) parsed in 175ms
> │ 
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this 
> assembly. Original error: The exception has been reported. This internal 
> exception should now be caught at an error recovery point on the stack. Original
> message: The type 'MetadataUpdateHandlerAttribute' is required here and is 
> unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping 
> this assembly. Original error: The exception has been reported. This internal 
> exception should now be caught at an error recovery point on the stack. Original
> message: The type 'MetadataUpdateHandlerAttribute' is required here and is 
> unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable 
> plugins, skipping this assembly. Original error: The exception has been 
> reported. This internal exception should now be caught at an error recovery 
> point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' 
> is required here and is unavailable. You must add a reference to assembly 
> 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, 
> PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, 
> skipping this assembly. Original error: The exception has been reported. This 
> internal exception should now be caught at an error recovery point on the stack.
> Original message: The type 'MetadataUpdateHandlerAttribute' is required here and
> is unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this 
> assembly. Original error: The exception has been reported. This internal 
> exception should now be caught at an error recovery point on the stack. Original
> message: The type 'MetadataUpdateHandlerAttribute' is required here and is 
> unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping 
> this assembly. Original error: The exception has been reported. This internal 
> exception should now be caught at an error recovery point on the stack. Original
> message: The type 'MetadataUpdateHandlerAttribute' is required here and is 
> unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, 
> skipping this assembly. Original error: The exception has been reported. This 
> internal exception should now be caught at an error recovery point on the stack.
> Original message: The type 'MetadataUpdateHandlerAttribute' is required here and
> is unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, 
> skipping this assembly. Original error: The exception has been reported. This 
> internal exception should now be caught at an error recovery point on the stack.
> Original message: The type 'MetadataUpdateHandlerAttribute' is required here and
> is unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable 
> plugins, skipping this assembly. Original error: The exception has been 
> reported. This internal exception should now be caught at an error recovery 
> point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' 
> is required here and is unavailable. You must add a reference to assembly 
> 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, 
> PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping
> this assembly. Original error: The exception has been reported. This internal 
> exception should now be caught at an error recovery point on the stack. Original
> message: The type 'MetadataUpdateHandlerAttribute' is required here and is 
> unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ 
> │ Started Fable compilation...
> │ 
> │ Fable compilation finished in 10990ms
> │ 
> │ .\target\Builder\chat_contract\chat_contract.fs(3360,15): 
> (3360,19) warning FSHARP: Incomplete pattern matches on this expression. For 
> example, the value 'US6_0 (_)' may indicate a case not covered by the 
> pattern(s). (code 25)
> │ .\deps\spiral\lib\spiral\async_.fsx(250,0): (250,2) warning 
> FABLE: For Rust, support for F# static and module do bindings is disabled by 
> default. It can be enabled with the 'static_do_bindings' feature. Use at your 
> own risk!
> │ .\deps\spiral\lib\spiral\threading.fsx(139,0): (139,2) 
> warning FABLE: For Rust, support for F# static and module do bindings is 
> disabled by default. It can be enabled with the 'static_do_bindings' feature. 
> Use at your own risk!
> │ .\deps\spiral\lib\spiral\crypto.fsx(2420,0): (2420,2) warning
> FABLE: For Rust, support for F# static and module do bindings is disabled by 
> default. It can be enabled with the 'static_do_bindings' feature. Use at your 
> own risk!
> │ .\deps\spiral\lib\spiral\sm.fsx(560,0): (560,2) warning 
> FABLE: For Rust, support for F# static and module do bindings is disabled by 
> default. It can be enabled with the 'static_do_bindings' feature. Use at your 
> own risk!
> │ .\deps\spiral\lib\spiral\common.fsx(2193,0): (2193,2) warning
> FABLE: For Rust, support for F# static and module do bindings is disabled by 
> default. It can be enabled with the 'static_do_bindings' feature. Use at your 
> own risk!
> │ .\deps\spiral\lib\spiral\date_time.fsx(2546,0): (2546,2) 
> warning FABLE: For Rust, support for F# static and module do bindings is 
> disabled by default. It can be enabled with the 'static_do_bindings' feature. 
> Use at your own risk!
> │ .\deps\spiral\lib\spiral\platform.fsx(121,0): (121,2) warning
> FABLE: For Rust, support for F# static and module do bindings is disabled by 
> default. It can be enabled with the 'static_do_bindings' feature. Use at your 
> own risk!
> │ .\deps\spiral\lib\spiral\networking.fsx(5011,0): (5011,2) 
> warning FABLE: For Rust, support for F# static and module do bindings is 
> disabled by default. It can be enabled with the 'static_do_bindings' feature. 
> Use at your own risk!
> │ .\deps\spiral\lib\spiral\trace.fsx(2226,0): (2226,2) warning 
> FABLE: For Rust, support for F# static and module do bindings is disabled by 
> default. It can be enabled with the 'static_do_bindings' feature. Use at your 
> own risk!
> │ .\deps\spiral\lib\spiral\runtime.fsx(7234,0): (7234,2) 
> warning FABLE: For Rust, support for F# static and module do bindings is 
> disabled by default. It can be enabled with the 'static_do_bindings' feature. 
> Use at your own risk!
> │ .\deps\spiral\lib\spiral\file_system.fsx(18760,0): (18760,2) 
> warning FABLE: For Rust, support for F# static and module do bindings is 
> disabled by default. It can be enabled with the 'static_do_bindings' feature. 
> Use at your own risk!
> │ .\target\Builder\chat_contract\chat_contract.fs(3566,6): 
> (3566,12) warning FABLE: For Rust, support for F# static and module do bindings 
> is disabled by default. It can be enabled with the 'static_do_bindings' feature.
> Use at your own risk!
> │    Compiling fable_library_rust v0.1.0 
> (C:\home\git\polyglot\lib\rust\fable\fable_modules\fable-library-rust)
> │    Compiling chat_contract v0.0.1 
> (C:\home\git\polyglot\apps\chat\contract)
> │     Finished `release` profile [optimized] target(s) in 
> 15.49s
> │ polyglot/apps/chat/contract/build.ps1 / $targetDir = 
> C:\home\git\polyglot\target\Builder\chat_contract / $projectName: chat_contract 
> / $env:CI:''
> │     Finished `release` profile [optimized] target(s) in 
> 16.61s
> │      Running 
> `/mnt/c/home/git/polyglot/workspace/target/release/chat_contract_tests`
> │ 
> │ 
> │ new: ExecutionFinalResult {
> │     total_gas_burnt: NearGas {
> │         inner: 1641878353157,
> │     },
> │     transaction: ExecutionOutcome {
> │         transaction_hash: 
> C4jnajdQCiHiPwVp7xHYkCn3gkBM72kKq5YEyBNshH4x,
> │         block_hash: 
> 2kvEnpRzrj3XwLkbAnX8sTzaD5Ea6bnN6dVRNy4NP6qA,
> │         logs: [],
> │         receipt_ids: [
> │             6DfTH67R91ut6WwyMAB5WmqdbvbSxkQ6rZzSJFz3jucC,
> │         ],
> │         gas_burnt: NearGas {
> │             inner: 308066207802,
> │         },
> │         tokens_burnt: NearToken {
> │             inner: 30806620780200000000,
> │         },
> │         executor_id: AccountId(
> │             "dev-20250315115558-62808961575812",
> │         ),
> │         status: 
> SuccessReceiptId(6DfTH67R91ut6WwyMAB5WmqdbvbSxkQ6rZzSJFz3jucC),
> │     },
> │     receipts: [
> │         ExecutionOutcome {
> │             transaction_hash: 
> 6DfTH67R91ut6WwyMAB5WmqdbvbSxkQ6rZzSJFz3jucC,
> │             block_hash: 
> 2kvEnpRzrj3XwLkbAnX8sTzaD5Ea6bnN6dVRNy4NP6qA,
> │             logs: [],
> │             receipt_ids: [
> │                 3a2SC9PLk2KU7rdyuA8raZY1cZCARhEuShQwtWdaNpgN,
> │             ],
> │             gas_burnt: NearGas {
> │                 inner: 1333812145355,
> │             },
> │             tokens_burnt: NearToken {
> │                 inner: 133381214535500000000,
> │             },
> │             executor_id: AccountId(
> │                 "dev-20250315115558-62808961575812",
> │             ),
> │             status: SuccessValue(''),
> │         },
> │     ],
> │     status: SuccessValue(''),
> │ }
> │ total_gas_burnt_usd: 0.001096774739908876
> │ outcome (success: true):
> │   outcome_gas_burnt_usd: 0.000205788226811736
> │   outcome_tokens_burnt_usd: 0.0
> │ outcome (success: true):
> │   outcome_gas_burnt_usd: 0.0008909865130971399
> │   outcome_tokens_burnt_usd: 0.0
> │ 
> │ 
> │ claim_alias(contract, ''): ExecutionFinalResult {
> │     total_gas_burnt: NearGas {
> │         inner: 2141462283510,
> │     },
> │     transaction: ExecutionOutcome {
> │         transaction_hash: 
> 5GJ2whLCjgzMuiWizqqhtf95tGTkzUMRaaSgMCsi5MpS,
> │         block_hash: 
> HTLXQNH3FPJ8Lu1PZMTTM4sY7gDU9MA1U3uENnhm5vQT,
> │         logs: [],
> │         receipt_ids: [
> │             46huGft5rnAsJ3SbeQXVrFRFEP6RBNu1oxr78kinHC2p,
> │         ],
> │         gas_burnt: NearGas {
> │             inner: 308110926482,
> │         },
> │         tokens_burnt: NearToken {
> │             inner: 30811092648200000000,
> │         },
> │         executor_id: AccountId(
> │             "dev-20250315115558-62808961575812",
> │         ),
> │         status: 
> SuccessReceiptId(46huGft5rnAsJ3SbeQXVrFRFEP6RBNu1oxr78kinHC2p),
> │     },
> │     receipts: [
> │         ExecutionOutcome {
> │             transaction_hash: 
> 46huGft5rnAsJ3SbeQXVrFRFEP6RBNu1oxr78kinHC2p,
> │             block_hash: 
> HTLXQNH3FPJ8Lu1PZMTTM4sY7gDU9MA1U3uENnhm5vQT,
> │             logs: [],
> │             receipt_ids: [
> │                 9F1EBda2f7QgjpgFSZzAj7RYvRaJoY98H5bMDmhtLPh2,
> │             ],
> │             gas_burnt: NearGas {
> │                 inner: 1610168794528,
> │             },
> │             tokens_burnt: NearToken {
> │                 inner: 161016879452800000000,
> │             },
> │             executor_id: AccountId(
> │                 "dev-20250315115558-62808961575812",
> │             ),
> │             status: Failure(ActionError(ActionError { index: 
> Some(0), kind: FunctionCallError(ExecutionError("Smart contract panicked: 
> chat_contract.claim_alias / invalid alias")) })),
> │         },
> │         ExecutionOutcome {
> │             transaction_hash: 
> 9F1EBda2f7QgjpgFSZzAj7RYvRaJoY98H5bMDmhtLPh2,
> │             block_hash: 
> HQCZk4La8JDACvNh7AfMNBqSVZMzSSEGASuuF3JLx2Yn,
> │             logs: [],
> │             receipt_ids: [],
> │             gas_burnt: NearGas {
> │                 inner: 223182562500,
> │             },
> │             tokens_burnt: NearToken {
> │                 inner: 0,
> │             },
> │             executor_id: AccountId(
> │                 "dev-20250315115558-62808961575812",
> │             ),
> │             status: SuccessValue(''),
> │         },
> │     ],
> │     status: Failure(ActionError(ActionError { index: Some(0),
> kind: FunctionCallError(ExecutionError("Smart contract panicked: 
> chat_contract.claim_alias / invalid alias")) })),
> │ }
> │ total_gas_burnt_usd: 0.0014304968053846798
> │ outcome (success: true):
> │   outcome_gas_burnt_usd: 0.000205818098889976
> │   outcome_tokens_burnt_usd: 0.0
> │ outcome (success: false):
> │   outcome_gas_burnt_usd: 0.0010755927547447038
> │   outcome_tokens_burnt_usd: 0.0
> │ outcome (success: true):
> │   outcome_gas_burnt_usd: 0.00014908595175
> │   outcome_tokens_burnt_usd: 0.0
> │ 
> │ 
> │ dev_create_account(account1): Account {
> │     id: AccountId(
> │         "dev-20250315115600-18328978475629",
> │     ),
> │ }
> │ 
> │ 
> │ generate_cid_borsh(account1): ViewResultDetails { result: 
> [59, 0, 0, 0, 98, 97, 102, 107, 114, 101, 105, 104, 100, 119, 100, 99, 101, 102,
> 103, 104, 52, 100, 113, 107, 106, 118, 54, 55, 117, 122, 99, 109, 119, 55, 111, 
> 106, 101, 101, 54, 120, 101, 100, 122, 100, 101, 116, 111, 106, 117, 122, 106, 
> 101, 118, 116, 101, 110, 120, 113, 117, 118, 121, 107, 117], logs: [] }
> │ 
> │ 
> │ claim_alias(account1, alias1): ExecutionFinalResult {
> │     total_gas_burnt: NearGas {
> │         inner: 3517099479846,
> │     },
> │     transaction: ExecutionOutcome {
> │         transaction_hash: 
> zVzCxBWS6HA5kpMehqe8rWJz4zmg4cy1p57qkmoASys,
> │         block_hash: 
> 6wVYwiaAarBVUL4NskLqeWQrB42Yar2QwkEuvmHpquRd,
> │         logs: [],
> │         receipt_ids: [
> │             BuuuPVBCshoNBUDyc1obBR9yAh4fRoSNAG4zPAoyFibp,
> │         ],
> │         gas_burnt: NearGas {
> │             inner: 308124342086,
> │         },
> │         tokens_burnt: NearToken {
> │             inner: 30812434208600000000,
> │         },
> │         executor_id: AccountId(
> │             "dev-20250315115600-18328978475629",
> │         ),
> │         status: 
> SuccessReceiptId(BuuuPVBCshoNBUDyc1obBR9yAh4fRoSNAG4zPAoyFibp),
> │     },
> │     receipts: [
> │         ExecutionOutcome {
> │             transaction_hash: 
> BuuuPVBCshoNBUDyc1obBR9yAh4fRoSNAG4zPAoyFibp,
> │             block_hash: 
> ESUPck1H7oSVxM3S9gu95NHebCMbrQ7pJ4PjtJsAdsxE,
> │             logs: [
> │                 "11:56:02 \u{1b}[94md\u{1b}[39m #1 
> chat_contract.claim_alias / { alias = \"alias1\"; block_timestamp = 
> 1742039762184233420; signer_account_id = \"dev-20250315115600-18328978475629\"; 
> predecessor_account_id = \"dev-20250315115600-18328978475629\" }\n11:56:02 
> \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = None }",
> │             ],
> │             receipt_ids: [
> │                 3yJknvFskEavsBeVDVG9DArC7PvdzdwwmSBXgScdWkhB,
> │             ],
> │             gas_burnt: NearGas {
> │                 inner: 2985792575260,
> │             },
> │             tokens_burnt: NearToken {
> │                 inner: 298579257526000000000,
> │             },
> │             executor_id: AccountId(
> │                 "dev-20250315115558-62808961575812",
> │             ),
> │             status: SuccessValue(''),
> │         },
> │         ExecutionOutcome {
> │             transaction_hash: 
> 3yJknvFskEavsBeVDVG9DArC7PvdzdwwmSBXgScdWkhB,
> │             block_hash: 
> zaVKHdWNpasSNFCTfShjVXL2p24NYxPLbhgsLKtZ8mu,
> │             logs: [],
> │             receipt_ids: [],
> │             gas_burnt: NearGas {
> │                 inner: 223182562500,
> │             },
> │             tokens_burnt: NearToken {
> │                 inner: 0,
> │             },
> │             executor_id: AccountId(
> │                 "dev-20250315115600-18328978475629",
> │             ),
> │             status: SuccessValue(''),
> │         },
> │     ],
> │     status: SuccessValue(''),
> │ }
> │ total_gas_burnt_usd: 0.002349422452537128
> │ outcome (success: true):
> │   outcome_gas_burnt_usd: 0.000205827060513448
> │   outcome_tokens_burnt_usd: 0.0
> │ outcome (success: true):
> │   outcome_gas_burnt_usd: 0.00199450944027368
> │   outcome_tokens_burnt_usd: 0.0
> │ outcome (success: true):
> │   outcome_gas_burnt_usd: 0.00014908595175
> │   outcome_tokens_burnt_usd: 0.0
> │ 
> │ 
> │ claim_alias(account1, alias1): ExecutionFinalResult {
> │     total_gas_burnt: NearGas {
> │         inner: 3649344532176,
> │     },
> │     transaction: ExecutionOutcome {
> │         transaction_hash: 
> 5tDnuKDrC82iL1UJq7FiMhTJDGasvGHRV4QgR2Lu7gAD,
> │         block_hash: 
> 4LnpLNrMMjhysQ1gqwphCUFdQgzNfyqu3TDPKLhcJaHj,
> │         logs: [],
> │         receipt_ids: [
> │             GxW2TYA7cTNKK1JRthurEoxwbJbmBYw7WVx72YKtC23R,
> │         ],
> │         gas_burnt: NearGas {
> │             inner: 308124342086,
> │         },
> │         tokens_burnt: NearToken {
> │             inner: 30812434208600000000,
> │         },
> │         executor_id: AccountId(
> │             "dev-20250315115600-18328978475629",
> │         ),
> │         status: 
> SuccessReceiptId(GxW2TYA7cTNKK1JRthurEoxwbJbmBYw7WVx72YKtC23R),
> │     },
> │     receipts: [
> │         ExecutionOutcome {
> │             transaction_hash: 
> GxW2TYA7cTNKK1JRthurEoxwbJbmBYw7WVx72YKtC23R,
> │             block_hash: 
> D2bdhsnF8Fvo98jAZSus7oSs7NLUk84ZMf5H6cxLkVeW,
> │             logs: [
> │                 "11:56:03 \u{1b}[94md\u{1b}[39m #1 
> chat_contract.claim_alias / { alias = \"alias1\"; block_timestamp = 
> 1742039763198362454; signer_account_id = \"dev-20250315115600-18328978475629\"; 
> predecessor_account_id = \"dev-20250315115600-18328978475629\" }\n11:56:03 
> \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = 
> Some(\"alias1\") }",
> │             ],
> │             receipt_ids: [
> │                 GzLvQRNiE3kUVLRGVQDmkAr2c4QTdghMcdzfeKAEbv7f,
> │             ],
> │             gas_burnt: NearGas {
> │                 inner: 3118037627590,
> │             },
> │             tokens_burnt: NearToken {
> │                 inner: 311803762759000000000,
> │             },
> │             executor_id: AccountId(
> │                 "dev-20250315115558-62808961575812",
> │             ),
> │             status: SuccessValue(''),
> │         },
> │         ExecutionOutcome {
> │             transaction_hash: 
> GzLvQRNiE3kUVLRGVQDmkAr2c4QTdghMcdzfeKAEbv7f,
> │             block_hash: 
> 5cxqFDZf3Gw3eVDpLpqDV8CF3J2Kg4LYkkDKCXCWMYFV,
> │             logs: [],
> │             receipt_ids: [],
> │             gas_burnt: NearGas {
> │                 inner: 223182562500,
> │             },
> │             tokens_burnt: NearToken {
> │                 inner: 0,
> │             },
> │             executor_id: AccountId(
> │                 "dev-20250315115600-18328978475629",
> │             ),
> │             status: SuccessValue(''),
> │         },
> │     ],
> │     status: SuccessValue(''),
> │ }
> │ total_gas_burnt_usd: 0.0024377621474935677
> │ outcome (success: true):
> │   outcome_gas_burnt_usd: 0.000205827060513448
> │   outcome_tokens_burnt_usd: 0.0
> │ outcome (success: true):
> │   outcome_gas_burnt_usd: 0.00208284913523012
> │   outcome_tokens_burnt_usd: 0.0
> │ outcome (success: true):
> │   outcome_gas_burnt_usd: 0.00014908595175
> │   outcome_tokens_burnt_usd: 0.0
> │ 
> │ 
> │ get_account_info(account1): Some(
> │     (
> │         "alias1",
> │         1742039763198362454,
> │         0,
> │     ),
> │ )
> │ 
> │ 
> │ get_alias_map(account1, alias1): Some(
> │     {
> │         AccountId(
> │             "dev-20250315115600-18328978475629",
> │         ): (
> │             1742039763198362454,
> │             0,
> │         ),
> │     },
> │ )
> │ 
> │ 
> │ dev_create_account(account2): Account {
> │     id: AccountId(
> │         "dev-20250315115603-62222196071779",
> │     ),
> │ }
> │ 
> │ 
> │ claim_alias(alias2): ExecutionFinalResult {
> │     total_gas_burnt: NearGas {
> │         inner: 3749082950958,
> │     },
> │     transaction: ExecutionOutcome {
> │         transaction_hash: 
> 7fwTKdXZRa49Q5NePKyMbtwqbyWWWe3LmxB5vU4tKg1J,
> │         block_hash: 
> 3ht5AyjTZ4oKBEzmpNtwF2cEAZ2TnrEENf2QZoAK6SYD,
> │         logs: [],
> │         receipt_ids: [
> │             53tfURh4KVPTYeJ3stTGLKvu4kXk6D36hwErDvVYGtdX,
> │         ],
> │         gas_burnt: NearGas {
> │             inner: 308124342086,
> │         },
> │         tokens_burnt: NearToken {
> │             inner: 30812434208600000000,
> │         },
> │         executor_id: AccountId(
> │             "dev-20250315115603-62222196071779",
> │         ),
> │         status: 
> SuccessReceiptId(53tfURh4KVPTYeJ3stTGLKvu4kXk6D36hwErDvVYGtdX),
> │     },
> │     receipts: [
> │         ExecutionOutcome {
> │             transaction_hash: 
> 53tfURh4KVPTYeJ3stTGLKvu4kXk6D36hwErDvVYGtdX,
> │             block_hash: 
> BxBBirYqK5hVLJoVBLsH32UdjQUpXzs2LzSsP97Lrodf,
> │             logs: [
> │                 "11:56:04 \u{1b}[94md\u{1b}[39m #1 
> chat_contract.claim_alias / { alias = \"alias2\"; block_timestamp = 
> 1742039764817084250; signer_account_id = \"dev-20250315115603-62222196071779\"; 
> predecessor_account_id = \"dev-20250315115603-62222196071779\" }\n11:56:04 
> \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = None }",
> │             ],
> │             receipt_ids: [
> │                 BwmeWqJpPpCdMZ5GQVH9H6S8ANJiG4LuYii74HgqxG4y,
> │             ],
> │             gas_burnt: NearGas {
> │                 inner: 3217776046372,
> │             },
> │             tokens_burnt: NearToken {
> │                 inner: 321777604637200000000,
> │             },
> │             executor_id: AccountId(
> │                 "dev-20250315115558-62808961575812",
> │             ),
> │             status: SuccessValue(''),
> │         },
> │         ExecutionOutcome {
> │             transaction_hash: 
> BwmeWqJpPpCdMZ5GQVH9H6S8ANJiG4LuYii74HgqxG4y,
> │             block_hash: 
> JDEW91KPz7DKGw7nhSTnBmXb3it3wzmyDiVWipkz7wnB,
> │             logs: [],
> │             receipt_ids: [],
> │             gas_burnt: NearGas {
> │                 inner: 223182562500,
> │             },
> │             tokens_burnt: NearToken {
> │                 inner: 0,
> │             },
> │             executor_id: AccountId(
> │                 "dev-20250315115603-62222196071779",
> │             ),
> │             status: SuccessValue(''),
> │         },
> │     ],
> │     status: SuccessValue(''),
> │ }
> │ total_gas_burnt_usd: 0.002504387411239944
> │ outcome (success: true):
> │   outcome_gas_burnt_usd: 0.000205827060513448
> │   outcome_tokens_burnt_usd: 0.0
> │ outcome (success: true):
> │   outcome_gas_burnt_usd: 0.0021494743989764957
> │   outcome_tokens_burnt_usd: 0.0
> │ outcome (success: true):
> │   outcome_gas_burnt_usd: 0.00014908595175
> │   outcome_tokens_burnt_usd: 0.0
> │ 
> │ 
> │ get_account_info(account2): Some(
> │     (
> │         "alias2",
> │         1742039764817084250,
> │         0,
> │     ),
> │ )
> │ 
> │ 
> │ get_alias_map_borsh(alias2): Some(
> │     {
> │         AccountId(
> │             "dev-20250315115603-62222196071779",
> │         ): (
> │             1742039764817084250,
> │             0,
> │         ),
> │     },
> │ )
> │ 
> │ 
> │ claim_alias(account2, alias1): ExecutionFinalResult {
> │     total_gas_burnt: NearGas {
> │         inner: 3939084897297,
> │     },
> │     transaction: ExecutionOutcome {
> │         transaction_hash: 
> HjABRSGD1nbjT7uZjuU4VGTNX3PgjdK5xnW8PLfcSSuv,
> │         block_hash: 
> E2M8cAZjKBfTDZHenAeuyGHVZ5QaksF2Ahi1BqRwMUbL,
> │         logs: [],
> │         receipt_ids: [
> │             AA8ZWsVkE8BYJpDAizLzH7W2hTdzaybTWd6mvHZ8BURR,
> │         ],
> │         gas_burnt: NearGas {
> │             inner: 308124342086,
> │         },
> │         tokens_burnt: NearToken {
> │             inner: 30812434208600000000,
> │         },
> │         executor_id: AccountId(
> │             "dev-20250315115603-62222196071779",
> │         ),
> │         status: 
> SuccessReceiptId(AA8ZWsVkE8BYJpDAizLzH7W2hTdzaybTWd6mvHZ8BURR),
> │     },
> │     receipts: [
> │         ExecutionOutcome {
> │             transaction_hash: 
> AA8ZWsVkE8BYJpDAizLzH7W2hTdzaybTWd6mvHZ8BURR,
> │             block_hash: 
> Hjd7utNaixiNnp3sBhpZmSZHDrj6KnnnYTrrQ1jVHpHX,
> │             logs: [
> │                 "11:56:05 \u{1b}[94md\u{1b}[39m #1 
> chat_contract.claim_alias / { alias = \"alias1\"; block_timestamp = 
> 1742039765829782384; signer_account_id = \"dev-20250315115603-62222196071779\"; 
> predecessor_account_id = \"dev-20250315115603-62222196071779\" }\n11:56:05 
> \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = 
> Some(\"alias2\") }",
> │             ],
> │             receipt_ids: [
> │                 CgaFiZzJHpobJNFyPnCRXU3gZKzPJ96M8EarTEkC1vck,
> │             ],
> │             gas_burnt: NearGas {
> │                 inner: 3407777992711,
> │             },
> │             tokens_burnt: NearToken {
> │                 inner: 340777799271100000000,
> │             },
> │             executor_id: AccountId(
> │                 "dev-20250315115558-62808961575812",
> │             ),
> │             status: SuccessValue(''),
> │         },
> │         ExecutionOutcome {
> │             transaction_hash: 
> CgaFiZzJHpobJNFyPnCRXU3gZKzPJ96M8EarTEkC1vck,
> │             block_hash: 
> ECMBFu3tG9c4spbuAENLtiag1xmCgGnkChFX7f6VVv2j,
> │             logs: [],
> │             receipt_ids: [],
> │             gas_burnt: NearGas {
> │                 inner: 223182562500,
> │             },
> │             tokens_burnt: NearToken {
> │                 inner: 0,
> │             },
> │             executor_id: AccountId(
> │                 "dev-20250315115603-62222196071779",
> │             ),
> │             status: SuccessValue(''),
> │         },
> │     ],
> │     status: SuccessValue(''),
> │ }
> │ total_gas_burnt_usd: 0.002631308711394396
> │ outcome (success: true):
> │   outcome_gas_burnt_usd: 0.000205827060513448
> │   outcome_tokens_burnt_usd: 0.0
> │ outcome (success: true):
> │   outcome_gas_burnt_usd: 0.002276395699130948
> │   outcome_tokens_burnt_usd: 0.0
> │ outcome (success: true):
> │   outcome_gas_burnt_usd: 0.00014908595175
> │   outcome_tokens_burnt_usd: 0.0
> │ 
> │ 
> │ get_account_info(account2): Some(
> │     (
> │         "alias1",
> │         1742039765829782384,
> │         1,
> │     ),
> │ )
> │ 
> │ 
> │ get_alias_map(account2, alias1): Some(
> │     {
> │         AccountId(
> │             "dev-20250315115603-62222196071779",
> │         ): (
> │             1742039765829782384,
> │             1,
> │         ),
> │         AccountId(
> │             "dev-20250315115600-18328978475629",
> │         ): (
> │             1742039763198362454,
> │             0,
> │         ),
> │     },
> │ )
> │ 
> │ 
> │ get_alias_map(account2, alias2): Some(
> │     {},
> │ )
> │ 
> │ 
> │ claim_alias(account1, alias2): ExecutionFinalResult {
> │     total_gas_burnt: NearGas {
> │         inner: 3936685883925,
> │     },
> │     transaction: ExecutionOutcome {
> │         transaction_hash: 
> G1CcpwQK9cdDQ6x1px4HkMzYQyKSuajMamnHDub4BeFv,
> │         block_hash: 
> 8ENkR3ZXzYhrEFbywsq8wspZCpSmnjeRAnLVwAh3foCd,
> │         logs: [],
> │         receipt_ids: [
> │             7JbgMh8U8QziDjbsYD2YbBi2DA21eky3DLm9rfVQ6VYm,
> │         ],
> │         gas_burnt: NearGas {
> │             inner: 308124342086,
> │         },
> │         tokens_burnt: NearToken {
> │             inner: 30812434208600000000,
> │         },
> │         executor_id: AccountId(
> │             "dev-20250315115600-18328978475629",
> │         ),
> │         status: 
> SuccessReceiptId(7JbgMh8U8QziDjbsYD2YbBi2DA21eky3DLm9rfVQ6VYm),
> │     },
> │     receipts: [
> │         ExecutionOutcome {
> │             transaction_hash: 
> 7JbgMh8U8QziDjbsYD2YbBi2DA21eky3DLm9rfVQ6VYm,
> │             block_hash: 
> 7eXvFsLM5bAS3UQHersQkrMmGDe8HtGV4m6HuzpvnsJy,
> │             logs: [
> │                 "11:56:06 \u{1b}[94md\u{1b}[39m #1 
> chat_contract.claim_alias / { alias = \"alias2\"; block_timestamp = 
> 1742039766841717947; signer_account_id = \"dev-20250315115600-18328978475629\"; 
> predecessor_account_id = \"dev-20250315115600-18328978475629\" }\n11:56:06 
> \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = 
> Some(\"alias1\") }",
> │             ],
> │             receipt_ids: [
> │                 BjbvGY8Sc2K98i6hxqrUmCpvohDn9fk4PLQLRAR9Udhx,
> │             ],
> │             gas_burnt: NearGas {
> │                 inner: 3405378979339,
> │             },
> │             tokens_burnt: NearToken {
> │                 inner: 340537897933900000000,
> │             },
> │             executor_id: AccountId(
> │                 "dev-20250315115558-62808961575812",
> │             ),
> │             status: SuccessValue(''),
> │         },
> │         ExecutionOutcome {
> │             transaction_hash: 
> BjbvGY8Sc2K98i6hxqrUmCpvohDn9fk4PLQLRAR9Udhx,
> │             block_hash: 
> 432sCxBeuPs6Beats7euSKkY4tvX57TFiGoCS7ZoDVJJ,
> │             logs: [],
> │             receipt_ids: [],
> │             gas_burnt: NearGas {
> │                 inner: 223182562500,
> │             },
> │             tokens_burnt: NearToken {
> │                 inner: 0,
> │             },
> │             executor_id: AccountId(
> │                 "dev-20250315115600-18328978475629",
> │             ),
> │             status: SuccessValue(''),
> │         },
> │     ],
> │     status: SuccessValue(''),
> │ }
> │ total_gas_burnt_usd: 0.0026297061704618997
> │ outcome (success: true):
> │   outcome_gas_burnt_usd: 0.000205827060513448
> │   outcome_tokens_burnt_usd: 0.0
> │ outcome (success: true):
> │   outcome_gas_burnt_usd: 0.002274793158198452
> │   outcome_tokens_burnt_usd: 0.0
> │ outcome (success: true):
> │   outcome_gas_burnt_usd: 0.00014908595175
> │   outcome_tokens_burnt_usd: 0.0
> │ 
> │ 
> │ get_account_info(account1): Some(
> │     (
> │         "alias2",
> │         1742039766841717947,
> │         0,
> │     ),
> │ )
> │ 
> │ 
> │ get_alias_map(account1, alias2): Some(
> │     {
> │         AccountId(
> │             "dev-20250315115600-18328978475629",
> │         ): (
> │             1742039766841717947,
> │             0,
> │         ),
> │     },
> │ )
> │ 
> │ 
> │ get_alias_map(account1, alias1): Some(
> │     {
> │         AccountId(
> │             "dev-20250315115603-62222196071779",
> │         ): (
> │             1742039765829782384,
> │             1,
> │         ),
> │     },
> │ )
> │ 
> │ 
> │ claim_alias(account1, alias1): ExecutionFinalResult {
> │     total_gas_burnt: NearGas {
> │         inner: 3939014140281,
> │     },
> │     transaction: ExecutionOutcome {
> │         transaction_hash: 
> 7Z54fiwPhZoTDpHY6exprfRX4oeeeDBjaEQQEZ696mkh,
> │         block_hash: 
> 38oY8FWbi9DfC8e8a7TgUZJcy7ghd5FMpePGPg5yLZHC,
> │         logs: [],
> │         receipt_ids: [
> │             FmxvNTPbD4NS6JJd8ndoi91E5b3cpSnckqWjWAT7ETsD,
> │         ],
> │         gas_burnt: NearGas {
> │             inner: 308124342086,
> │         },
> │         tokens_burnt: NearToken {
> │             inner: 30812434208600000000,
> │         },
> │         executor_id: AccountId(
> │             "dev-20250315115600-18328978475629",
> │         ),
> │         status: 
> SuccessReceiptId(FmxvNTPbD4NS6JJd8ndoi91E5b3cpSnckqWjWAT7ETsD),
> │     },
> │     receipts: [
> │         ExecutionOutcome {
> │             transaction_hash: 
> FmxvNTPbD4NS6JJd8ndoi91E5b3cpSnckqWjWAT7ETsD,
> │             block_hash: 
> 3UxiVTLBMGLBnGa6bVGmtJZpTHevxRDYvhc4Ze9hhKFW,
> │             logs: [
> │                 "11:56:07 \u{1b}[94md\u{1b}[39m #1 
> chat_contract.claim_alias / { alias = \"alias1\"; block_timestamp = 
> 1742039767855713605; signer_account_id = \"dev-20250315115600-18328978475629\"; 
> predecessor_account_id = \"dev-20250315115600-18328978475629\" }\n11:56:07 
> \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = 
> Some(\"alias2\") }",
> │             ],
> │             receipt_ids: [
> │                 67NNizcqnXXcAbnnpr3KuLo2NuDHE3wL8ctPDCcVLZGu,
> │             ],
> │             gas_burnt: NearGas {
> │                 inner: 3407707235695,
> │             },
> │             tokens_burnt: NearToken {
> │                 inner: 340770723569500000000,
> │             },
> │             executor_id: AccountId(
> │                 "dev-20250315115558-62808961575812",
> │             ),
> │             status: SuccessValue(''),
> │         },
> │         ExecutionOutcome {
> │             transaction_hash: 
> 67NNizcqnXXcAbnnpr3KuLo2NuDHE3wL8ctPDCcVLZGu,
> │             block_hash: 
> A3c83HMz2f997S8nxPvwLjyLw68QJAX2rzJhiz1b5ssp,
> │             logs: [],
> │             receipt_ids: [],
> │             gas_burnt: NearGas {
> │                 inner: 223182562500,
> │             },
> │             tokens_burnt: NearToken {
> │                 inner: 0,
> │             },
> │             executor_id: AccountId(
> │                 "dev-20250315115600-18328978475629",
> │             ),
> │             status: SuccessValue(''),
> │         },
> │     ],
> │     status: SuccessValue(''),
> │ }
> │ total_gas_burnt_usd: 0.002631261445707708
> │ outcome (success: true):
> │   outcome_gas_burnt_usd: 0.000205827060513448
> │   outcome_tokens_burnt_usd: 0.0
> │ outcome (success: true):
> │   outcome_gas_burnt_usd: 0.0022763484334442597
> │   outcome_tokens_burnt_usd: 0.0
> │ outcome (success: true):
> │   outcome_gas_burnt_usd: 0.00014908595175
> │   outcome_tokens_burnt_usd: 0.0
> │ 
> │ 
> │ get_account_info(account1): Some(
> │     (
> │         "alias1",
> │         1742039767855713605,
> │         1,
> │     ),
> │ )
> │ 
> │ 
> │ get_alias_map(account1, alias1): Some(
> │     {
> │         AccountId(
> │             "dev-20250315115603-62222196071779",
> │         ): (
> │             1742039765829782384,
> │             0,
> │         ),
> │         AccountId(
> │             "dev-20250315115600-18328978475629",
> │         ): (
> │             1742039767855713605,
> │             1,
> │         ),
> │     },
> │ )
> │ 
> │ 
> │ get_alias_map(account1, alias2): Some(
> │     {},
> │ )
> │ 
> 
> ── pwsh ────────────────────────────────────────────────────────────────────────
> { pwsh ../apps/spiral/temp/build.ps1 } | Invoke-Block
> 
> ── [ 3.67m - stdout ] ──────────────────────────────────────────────────────────
> │ 00:00:00 d #1 spiral.main / { args = 
> Array(MutCell(["dib", "--path", "cube.dib"])) }
> │ 00:00:00 d #2 runtime.execute_with_options / { 
> file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", 
> "c:/home/git/polyglot/apps/spiral/temp/cube/cube.dib", "--output-path", 
> "c:/home/git/polyglot/apps/spiral/temp/cube/cube.dib.ipynb"]; options = { 
> command = dotnet repl --exit-after-run --run 
> "c:/home/git/polyglot/apps/spiral/temp/cube/cube.dib" --output-path 
> "c:/home/git/polyglot/apps/spiral/temp/cube/cube.dib.ipynb"; cancellation_token 
> = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), 
> ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; 
> working_directory = None } }
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ # cube
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## cube
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > open System
> │ > open System.Threading.Tasks
> │ > open System.Text
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let width = 160
> │ > let height = 44
> │ > let backgroundChar = '.'
> │ > let distanceFromCam = 100.0
> │ > let k1 = 40.0
> │ > let incrementSpeed = 0.6
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### get_width
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl get_width () =
> │ >     160i32
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### get_height
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl get_height () =
> │ >     44i32
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### get_background_char
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl get_background_char () =
> │ >     '.'
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### get_distance_from_cam
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl get_distance_from_cam () =
> │ >     100f64
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### get_k1
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl get_k1 () =
> │ >     40f64
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### get_increment_speed
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl get_increment_speed () =
> │ >     0.6f64
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### rotation
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > type Rotation = { a: float; b: float; c: float }
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > type rotation =
> │ >     {
> │ >         a : f64
> │ >         b : f64
> │ >         c : f64
> │ >     }
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### cube
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > type Cube = { cubeWidth: float; horizontalOffset: float }
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > type cube =
> │ >     {
> │ >         cube_width : f64
> │ >         horizontal_offset : f64
> │ >     }
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### get_cubes
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let cubes = [[
> │ >     { cubeWidth = 20.0; horizontalOffset = -40.0 }
> │ >     { cubeWidth = 10.0; horizontalOffset = 10.0 }
> │ >     { cubeWidth = 5.0; horizontalOffset = 40.0 }
> │ > ]]
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl get_cubes () : list cube =
> │ >     [[
> │ >         { cube_width = 20; horizontal_offset = -40 }
> │ >         { cube_width = 10; horizontal_offset = 10 }
> │ >         { cube_width = 5; horizontal_offset = 40 }
> │ >     ]]
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### calculate_x
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let calculateX i j k (rot: Rotation) =
> │ >     let a, b, c = rot.a, rot.b, rot.c
> │ >     j * sin a * sin b * cos c - k * cos a * sin b * cos c +
> │ >     j * cos a * sin c + k * sin a * sin c + i * cos b * cos
> c
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl calculate_x i j k (rot : rotation) =
> │ >     inl a, b, c = rot.a, rot.b, rot.c
> │ >     j * sin a * sin b * cos c - k * cos a * sin b * cos c +
> │ >     j * cos a * sin c + k * sin a * sin c + i * cos b * cos
> c
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### calculate_y
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let calculateY i j k (rot: Rotation) =
> │ >     let a, b, c = rot.a, rot.b, rot.c
> │ >     j * cos a * cos c + k * sin a * cos c -
> │ >     j * sin a * sin b * sin c + k * cos a * sin b * sin c -
> │ >     i * cos b * sin c
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl calculate_y i j k (rot : rotation) =
> │ >     inl a, b, c = rot.a, rot.b, rot.c
> │ >     j * cos a * cos c + k * sin a * cos c -
> │ >     j * sin a * sin b * sin c + k * cos a * sin b * sin c -
> │ >     i * cos b * sin c
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### calculate_z
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let calculateZ i j k (rot: Rotation) =
> │ >     let a, b, c = rot.a, rot.b, rot.c
> │ >     k * cos a * cos b - j * sin a * cos b + i * sin b
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl calculate_z i j k (rot : rotation) =
> │ >     inl a, b, c = rot.a, rot.b, rot.c
> │ >     k * cos a * cos b - j * sin a * cos b + i * sin b
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### calculate_for_surface
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let calculateForSurface cubeX cubeY cubeZ ch rot 
> horizontalOffset =
> │ >     let x = calculateX cubeX cubeY cubeZ rot
> │ >     let y = calculateY cubeX cubeY cubeZ rot
> │ >     let z = calculateZ cubeX cubeY cubeZ rot + 
> distanceFromCam
> │ >     let ooz = 1.0 / z
> │ >     let xp = int (float width / 2.0 + horizontalOffset + k1
> * ooz * x * 2.0)
> │ >     let yp = int (float height / 2.0 + k1 * ooz * y)
> │ >     let idx = xp + yp * width
> │ >     if idx >= 0 && idx < width * height
> │ >     then Some (idx, (ooz, ch))
> │ >     else None
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > let calculate_for_surface cube_x cube_y cube_z ch rot 
> horizontal_offset =
> │ >     inl x = calculate_x cube_x cube_y cube_z rot
> │ >     inl y = calculate_y cube_x cube_y cube_z rot
> │ >     inl z = calculate_z cube_x cube_y cube_z rot + 
> get_distance_from_cam ()
> │ >     inl ooz = 1.0 / z
> │ >     inl xp = i32 (f64 (get_width ()) / 2.0 + 
> horizontal_offset + get_k1 () * ooz
> │ > * x * 2.0)
> │ >     inl yp = i32 (f64 (get_height ()) / 2.0 + get_k1 () * 
> ooz * y)
> │ >     inl idx = xp + yp * get_width ()
> │ >     if idx >= 0 && idx < get_width () * get_height ()
> │ >     then Some (idx, (ooz, ch))
> │ >     else None
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### frange
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let frange start stop step =
> │ >     seq {
> │ >         let mutable current = start
> │ >         while (step > 0.0 && current < stop) || (step < 0.0
> && current > stop) 
> │ > do
> │ >             yield current
> │ >             current <- current + step
> │ >     }
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl frange start stop step : _ f64 =
> │ >     fun () =>
> │ >         inl current = mut start
> │ >         loopw.while
> │ >             fun () => (step > 0f64 && *current < stop) || 
> (step < 0 && *current 
> │ > > stop)
> │ >             fun () =>
> │ >                 *current |> yield
> │ >                 current <- *current + step
> │ >     |> seq.new_seq
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### get_cube_points
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let getCubePoints (cube: Cube) rot =
> │ >     let cw = cube.cubeWidth
> │ >     let ho = cube.horizontalOffset
> │ >     let cubeRange = frange (-cw) cw incrementSpeed
> │ >     seq {
> │ >         for cubeX in cubeRange do
> │ >             for cubeY in cubeRange do
> │ >                 let x =
> │ >                     [[
> │ >                         calculateForSurface cubeX cubeY 
> (-cw) '@' rot ho
> │ >                         calculateForSurface cw cubeY cubeX 
> '$' rot ho
> │ >                         calculateForSurface (-cw) cubeY 
> (-cubeX) '~' rot ho
> │ >                         calculateForSurface (-cubeX) cubeY 
> cw '#' rot ho
> │ >                         calculateForSurface cubeX (-cw) 
> (-cubeY) ';' rot ho
> │ >                         calculateForSurface cubeX cw cubeY 
> '+' rot ho
> │ >                     ]]
> │ >                     |> Seq.choose id
> │ >                 yield! x
> │ >     }
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl get_cube_points (cube : cube) rot =
> │ >     inl cw = cube.cube_width
> │ >     inl ho = cube.horizontal_offset
> │ >     inl cube_range = frange -cw cw (get_increment_speed ())
> │ >     inl cube_range = join cube_range
> │ >     inl get cube_x cube_y =
> │ >         [[
> │ >             calculate_for_surface cube_x cube_y -cw ';' rot
> ho
> │ >             calculate_for_surface cw cube_y cube_x '\\' rot
> ho
> │ >             calculate_for_surface -cw cube_y -cube_x '/' 
> rot ho
> │ >             calculate_for_surface -cube_x cube_y cw '=' rot
> ho
> │ >             calculate_for_surface cube_x -cw -cube_y '>' 
> rot ho
> │ >             calculate_for_surface cube_x cw cube_y '<' rot 
> ho
> │ >         ]]
> │ >         |> listm'.box
> │ >     inl get = join get
> │ >     inl box x : _ (i32 * f64 * char) =
> │ >         optionm'.box x
> │ >     inl box = join box
> │ >     fun () =>
> │ >         backend_switch {
> │ >             Fsharp = fun () =>
> │ >                 $'for cube_x in !cube_range do'
> │ >                 $'for cube_y in !cube_range do'
> │ >                 $'let x = !get cube_x cube_y |> Seq.choose 
> !box '
> │ >                 $'yield\! x' : ()
> │ >             Python = fun () =>
> │ >                 $'cube_range = !cube_range '
> │ >                 $'get = !get '
> │ >                 $'box = !box '
> │ >                 $'for cube_x in cube_range:'
> │ >                 $'    for cube_y in cube_range:'
> │ >                 $'        x = get(cube_x)(cube_y)'
> │ >                 $'        for i in x:'
> │ >                 $'            i_ = box(i)'
> │ >                 $'            if i_ is not None: yield i' :
> ()
> │ >         }
> │ >     |> seq.new_seq
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### generate_frame
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let generateFrame rot =
> │ >     let updates =
> │ >         cubes
> │ >         |> Seq.collect (fun cube -> getCubePoints cube rot)
> │ >     let buffer = Array.create (width * height) None
> │ >     updates
> │ >     |> Seq.iter (fun (idx, (ooz, ch)) ->
> │ >         match buffer.[[idx]] with
> │ >         | Some (prevOoz, _) when prevOoz >= ooz -> ()
> │ >         | _ -> buffer.[[idx]] <- Some (ooz, ch)
> │ >     )
> │ >     let sb = StringBuilder()
> │ >     for row in 0 .. (height - 1) do
> │ >         for col in 0 .. (width - 1) do
> │ >             let idx = col + row * width
> │ >             let ch =
> │ >                 match buffer.[[idx]] with
> │ >                 | Some (_, ch) -> ch
> │ >                 | None -> backgroundChar
> │ >             sb.Append(ch) |> ignore
> │ >         sb.AppendLine() |> ignore
> │ >     sb.ToString()
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > let rot = { a = 0.0; b = 0.0; c = 0.0 }
> │ > let frame = generateFrame rot
> │ > Console.Write frame
> │ > 
> │ > ── [ 35.12ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
> │ > 
> .@@@@@@@@@@@@@@@@@$.............................................................
> │ > │ 
> │ > 
> ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
> │ > 
> .@@@@@@@@@@@@@@@@@$.............................................................
> │ > │ 
> │ > 
> ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
> │ > 
> .@@@@@@@@@@@@@@@@@$................@@@@@@@@@$...................................
> │ > │ 
> │ > 
> ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
> │ > 
> .@@@@@@@@@@@@@@@@@$................@@@@@@@@@$...................................
> │ > │ 
> │ > 
> ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
> │ > 
> .@@@@@@@@@@@@@@@@@$................@@@@@@@@@$...................................
> │ > │ 
> │ > 
> ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
> │ > 
> .@@@@@@@@@@@@@@@@@$................@@@@@@@@@$...................................
> │ > │ 
> │ > 
> ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
> │ > 
> .@@@@@@@@@@@@@@@@@$................@@@@@@@@@$...................................
> │ > │ 
> │ > 
> ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
> │ > 
> .@@@@@@@@@@@@@@@@@$................+++++++++....................................
> │ > │ 
> │ > 
> ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
> │ > 
> .@@@@@@@@@@@@@@@@@$.............................................................
> │ > │ 
> │ > 
> ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
> │ > 
> .+++++++++++++++++$.............................................................
> │ > │ 
> │ > 
> ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................++++++++++++++++++++++++++++++++++++++++....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl generate_frame rot =
> │ >     inl updates : seq.seq' (int * (f64 * char)) =
> │ >         inl get_cube_points' cube : seq.seq' (int * (f64 * 
> char)) =
> │ >             get_cube_points cube rot
> │ >         inl cubes = get_cubes () |> listm'.box
> │ >         backend_switch {
> │ >             Fsharp = fun () =>
> │ >                 inl get_cube_points' = join 
> get_cube_points'
> │ >                 (cubes |> $'Seq.collect !get_cube_points' 
> ') : seq.seq' (int * 
> │ > (f64 * char))
> │ >             Python = fun () =>
> │ >                 $'cubes = !cubes '
> │ >                 $'get_cube_points = !get_cube_points' '
> │ >                 $'[[x for cube in cubes for x in 
> get_cube_points(*cube)]]' : 
> │ > seq.seq' (int * (f64 * char))
> │ >         }
> │ >     inl none : _ (f64 * char) = None
> │ >     inl width = get_width ()
> │ >     inl height = get_height ()
> │ >     inl buffer =
> │ >         backend_switch {
> │ >             Fsharp = fun () =>
> │ >                 $'Array.create (!width * !height) !none ' :
> a int (option (f64 *
> │ > char))
> │ >             Python = fun () =>
> │ >                 $'[[!none for _ in range(!width * 
> !height)]]' : a int (option 
> │ > (f64 * char))
> │ >         }
> │ > 
> │ >     inl fn idx ((ooz : f64), (ch : char)) =
> │ >         match buffer |> am'.index idx with
> │ >         | Some (prev_ooz, _) when prev_ooz >= ooz => ()
> │ >         | _ =>
> │ >             inl x = (ooz, ch) |> Some
> │ >             backend_switch {
> │ >                 Fsharp = fun () =>
> │ >                     $'!buffer.[[!idx]] <- !x ' : ()
> │ >                 Python = fun () =>
> │ >                     $'!buffer[[!idx]] = !x ' : ()
> │ >             }
> │ >     backend_switch {
> │ >         Fsharp = fun () =>
> │ >             updates
> │ >             |> $'Seq.iter (fun (struct (idx, ooz, ch)) -> 
> !fn idx (ooz, ch))' : 
> │ > ()
> │ >         Python = fun () =>
> │ >             $'for (idx, ooz, ch) in !updates: !fn(idx)(ooz,
> ch)' : ()
> │ >     }
> │ > 
> │ >     inl sb = "" |> sm'.string_builder
> │ >     inl fn1 row =
> │ >         inl fn2 col =
> │ >             inl idx = col + row * width
> │ >             inl ch =
> │ >                 match buffer |> am'.index idx with
> │ >                 | Some (_, ch) => ch
> │ >                 | None => get_background_char ()
> │ >             sb |> sm'.builder_append (ch |> 
> sm'.obj_to_string) |> ignore
> │ >         
> │ >         backend_switch {
> │ >             Fsharp = fun () =>
> │ >                 $'for col in 0 .. (!width - 1) do !fn2 col'
> : ()
> │ >             Python = fun () =>
> │ >                 $'for col in range(!width): !fn2(col)' : ()
> │ >         }
> │ >         sb |> sm'.builder_append_line |> ignore
> │ >     
> │ >     backend_switch {
> │ >         Fsharp = fun () =>
> │ >             $'for row in 0 .. (!height - 1) do !fn1 row' : 
> ()
> │ >         Python = fun () =>
> │ >             $'for row in range(!height): !fn1(row)' : ()
> │ >     }
> │ >     sb |> sm'.obj_to_string
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > ///! fsharp
> │ > ///! cuda
> │ > ///! rust
> │ > ///! typescript
> │ > ///! python
> │ > 
> │ > { a = 0.0; b = 0.0; c = 0.0 }
> │ > |> generate_frame
> │ > |> console.write_line
> │ > 
> │ > ── [ 6.39s - return value ] 
> ────────────────────────────────────────────────────
> │ > │ "
> │ > │ .py output (Cuda):
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ............................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > │ 
> │ > │ "
> │ > │ 
> │ > 
> │ > ── [ 6.39s - stdout ] 
> ──────────────────────────────────────────────────────────
> │ > │ .fsx output:
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> .;;;;;;;;;;;;;;;;;\.............................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> .;;;;;;;;;;;;;;;;;\.............................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> .;;;;;;;;;;;;;;;;;\................<<<<<<<<<....................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> .;;;;;;;;;;;;;;;;;\.............................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> .<<<<<<<<<<<<<<<<<\.............................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### main_loop
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let rec mainLoop rot = async {
> │ >     let frame = generateFrame rot
> │ >     // Console.SetCursorPosition(0, 0)
> │ >     Console.Write(frame)
> │ >     let rot' = { a = rot.a + 0.05; b = rot.b + 0.05; c = 
> rot.c + 0.01 }
> │ >     do! Async.Sleep 16
> │ >     return! mainLoop rot'
> │ > }
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > let rec main_loop max i rot =
> │ >     fun () =>
> │ >         inl rot = join rot
> │ >         inl frame = rot |> generate_frame
> │ >         if max < 0 then
> │ >             run_target function
> │ >                 | Fsharp (Native) => fun () => 
> │ > $'System.Console.SetCursorPosition (0, 0)'
> │ >                 | Rust _ => fun () =>
> │ >                     open rust.rust_operators
> │ >                     
> !\($'$"print\!(\\\"\\\\x1B[[1;1H\\\")"')
> │ >                 | TypeScript _ => fun () =>
> │ >                     open typescript_operators
> │ >                     
> !\($'$"process.stdout.write(\'\\\\u001B[[1;1H\')"')
> │ >                 | Python _ => fun () =>
> │ >                     open python_operators
> │ >                     // global "import sys"
> │ >                     
> !\($'$"sys.stdout.write(\\\"\\\\033[[1;1H\\\")"')
> │ >                 | Cuda _ => fun () =>
> │ >                     global "import sys"
> │ >                     $'sys.stdout.write("\\033[[1;1H")'
> │ >                 | _ => fun () => ()
> │ >         frame |> console.write_line
> │ >         async.sleep 1 |> async.do
> │ >         if max > 0 && i >= max
> │ >         then ()
> │ >         else
> │ >             { a = rot.a + 0.05; b = rot.b + 0.05; c = rot.c
> + 0.01 }
> │ >             |> main_loop max (i + 1)
> │ >             |> async.return_await'
> │ >     |> async.new_async_unit
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### main
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > // [[<EntryPoint>]]
> │ > let main argv =
> │ >     // Console.CursorVisible <- false
> │ >     Async.StartImmediate (mainLoop { a = 0.0; b = 0.0; c = 
> 0.0 })
> │ >     System.Threading.Thread.Sleep(1000)
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > // main [[||]]
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl main (_args : array_base string) =
> │ >     inl console =
> │ >         run_target function
> │ >         | Fsharp (Wasm) => fun () => false
> │ >         | _ => fun () =>
> │ >             ((join "VSCODE_PID") |> 
> env.get_environment_variable |> sm'.length 
> │ > |> (=) 0i32)
> │ >                 && ("AUTOMATION" |> 
> env.get_environment_variable |> sm'.length 
> │ > |> (=) 0i32)
> │ >     if console then
> │ >         run_target function
> │ >             | Fsharp (Native) => fun () => 
> $'System.Console.CursorVisible <- 
> │ > false'
> │ >             | Rust _ => fun () =>
> │ >                 open rust.rust_operators
> │ >                 !\($'$"print\!(\\\"\\\\x1B[[?25l\\\")"')
> │ >             | TypeScript _ => fun () =>
> │ >                 open typescript_operators
> │ >                 
> !\($'$"process.stdout.write(\'\\\\u001B[[?25l\')"')
> │ >             | Python _ => fun () =>
> │ >                 open python_operators
> │ >                 python.import_all "sys"
> │ >                 
> !\($'$"sys.stdout.write(\\\"\\\\033[[?25l\\\")"')
> │ >             | _ => fun () => ()
> │ >     main_loop (if console then -1i32 else 50) 1i32 { a = 
> 0.0; b = 0.0; c = 0.0 }
> │ >     |> fun x =>
> │ >         run_target_args' x function
> │ >         | Fsharp (Wasm)
> │ >         | TypeScript _ => fun x =>
> │ >             x
> │ >             |> async.start_child
> │ >             |> ignore
> │ >         | Python _ => fun x =>
> │ >             x
> │ >             |> async.start_immediate
> │ >             threading.sleep' 2000
> │ >         | _ => fun x =>
> │ >             x
> │ >             |> async.run_synchronously
> │ > 
> │ > inl main () =
> │ >     backend_switch {
> │ >         Fsharp = fun () =>
> │ >             $'let main_ = !main '
> │ >             $'#if \!FABLE_COMPILER_RUST'
> │ >             $'main_ [[||]]' : ()
> │ >             $'#else'
> │ >             $'let main args = main_ [[||]]; 0' : ()
> │ >             $'#endif' : ()
> │ >         Python = fun () =>
> │ >             main ;[[]]
> │ >     }
> │ >     : ()
> │ > 
> │ > ── [ 2.68s - stdout ] 
> ──────────────────────────────────────────────────────────
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> .;;;;;;;;;;;;;;;;;\.............................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> .;;;;;;;;;;;;;;;;;\.............................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> .;;;;;;;;;;;;;;;;;\................<<<<<<<<<....................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> .;;;;;;;;;;;;;;;;;\.............................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> .<<<<<<<<<<<<<<<<<\.............................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> │ > 
> .;;;;;;;;;;;;;;;;;;\............................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> │ > 
> .;;;;;;;;;;;;;;;;;;\............................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> │ > 
> .;;;;;;;;;;;;;;;;;;;...............;;;;;;;;;;...................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> │ > 
> .;;;;;;;;;;;;;;;;;;;...............;;;;;;;;;;...................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> │ > 
> .;;;;;;;;;;;;;;;;;;;...............;;;;;;;;;;...................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> │ > 
> .;;;;;;;;;;;;;;;;;;;...............;;;;;;;;;;...................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> │ > 
> .;;;;;;;;;;;;;;;;;;;................;;;;;<<<<...................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> │ > 
> .;;;;;;;;;;;;;;;;;;;................<<<<<.......................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> │ > 
> .;;;;;;;;;;;;;;;;;;;............................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> │ > 
> .<<<<<<<<<<<<<<<<<<<............................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\..................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> │ > 
> .;;;;;;;;;;;;;;;;;;;............................................................
> │ > │ 
> │ > 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> │ > 
> .;;;;;;;;;;;;;;;;;;;............................................................
> │ > │ 
> │ > 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> │ > 
> .;;;;;;;;;;;;;;;;;;;...............>;;;;;;;;;...................................
> │ > │ 
> │ > 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> │ > 
> .;;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;...................................
> │ > │ 
> │ > 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> │ > 
> .;;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;...................................
> │ > │ 
> │ > 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> │ > 
> .;;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;...................................
> │ > │ 
> │ > 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> │ > 
> .;;;;;;;;;;;;;;;;;;;.............../<<<<<<<<<...................................
> │ > │ 
> │ > 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> │ > 
> ..;;;;;;;;;;;;;;;;;;...............<<<<<<<<<....................................
> │ > │ 
> │ > 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> │ > 
> ..;;;;;;;;;;<<<<<<<<............................................................
> │ > │ 
> │ > 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> │ > 
> ..<<<<<<<<<<....................................................................
> │ > │ 
> │ > 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<\.................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<...............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................;;;;;;;;;;;...............................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> │ > 
> ..............;;;;;;............................................................
> │ > │ 
> │ > 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> │ > 
> .>;;;;;;;;;;;;;;;;;;............................................................
> │ > │ 
> │ > 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> │ > 
> ./;;;;;;;;;;;;;;;;;;............................................................
> │ > │ 
> │ > 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> │ > 
> ./;;;;;;;;;;;;;;;;;;...............>;;;;;;;;;...................................
> │ > │ 
> │ > 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> │ > 
> ./;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;...................................
> │ > │ 
> │ > 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................
> │ > 
> ./;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;...................................
> │ > │ 
> │ > 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................
> │ > 
> ./;;;;;;;;;;;;;;;;;;\............../;;;;;;;;;...................................
> │ > │ 
> │ > 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
> │ > 
> ./;;;;;;;;;;;;;;;;;;;............../<<<<<<<<<...................................
> │ > │ 
> │ > 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
> │ > 
> ./;;;;;;;;;;;;;;;;;;;............../<<<<<<<<....................................
> │ > │ 
> │ > 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
> │ > 
> ./<<<<<<<<<<<<<<<<<<<...........................................................
> │ > │ 
> │ > 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
> │ > 
> ./<<<<<<<<<<<<<<<...............................................................
> │ > │ 
> │ > 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................<<<<<<<<<<................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> │ > 
> ..;;;;;;;;;;;;;;;;;;............................................................
> │ > │ 
> │ > 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> │ > 
> .>;;;;;;;;;;;;;;;;;;............................................................
> │ > │ 
> │ > 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> │ > 
> ./;;;;;;;;;;;;;;;;;;............................................................
> │ > │ 
> │ > 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................
> │ > 
> >/;;;;;;;;;;;;;;;;;;...............>;;;;;;;;;...................................
> │ > │ 
> │ > 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
> │ > 
> ./;;;;;;;;;;;;;;;;;;\............../;;;;;;;;;...................................
> │ > │ 
> │ > 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
> │ > 
> ./;;;;;;;;;;;;;;;;;;;............../;;;;;;;;;...................................
> │ > │ 
> │ > 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
> │ > 
> ./;;;;;;;;;;;;;;;;;;;............../;;;;;;;;;\..................................
> │ > │ 
> │ > 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................
> │ > 
> .//;;;;;;;;;;;;;;;;;;............../<<<<<<<<<\..................................
> │ > │ 
> │ > 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................
> │ > 
> .//;;;;;;;;;;;;;;;;;;............../<<<<<<<<....................................
> │ > │ 
> │ > 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................
> │ > 
> .//<<<<<<<<<<<<<<<<<<...........................................................
> │ > │ 
> │ > 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................
> │ > 
> ./<<<<<<<<<<<<<<<<..............................................................
> │ > │ 
> │ > 
> ........................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...............
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ........................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...............
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ........................;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<...............
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ........................<<<<<<<<<<<<<<<<<<<<<<..................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................../;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................../;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................../;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................../;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> │ > 
> ..;;;;;;;;;;;;;;;;;;............................................................
> │ > │ 
> │ > 
> ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> │ > 
> .>;;;;;;;;;;;;;;;;;;............................................................
> │ > │ 
> │ > 
> ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................
> │ > 
> >/;;;;;;;;;;;;;;;;;;............................................................
> │ > │ 
> │ > 
> ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
> │ > 
> //;;;;;;;;;;;;;;;;;;\..............>;;;;;;;;;...................................
> │ > │ 
> │ > 
> ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
> │ > 
> ///;;;;;;;;;;;;;;;;;;............../;;;;;;;;;...................................
> │ > │ 
> │ > 
> ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................
> │ > 
> ///;;;;;;;;;;;;;;;;;;............../;;;;;;;;;\..................................
> │ > │ 
> │ > 
> ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................
> │ > 
> ///;;;;;;;;;;;;;;;;;;............../;;;;;;;;;;..................................
> │ > │ 
> │ > 
> ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................
> │ > 
> .//;;;;;;;;;;;;;;;;;;;.............//<<<<<<<<<..................................
> │ > │ 
> │ > 
> .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...............
> │ > 
> .//;;;;;;;;;;;;;;;;<<<............./<<<<<<<<....................................
> │ > │ 
> │ > 
> .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...............
> │ > 
> .///<<<<<<<<<<<<<<<<<...........................................................
> │ > │ 
> │ > 
> .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..............
> │ > 
> ./<<<<<<<<<<<<<<<<..............................................................
> │ > │ 
> │ > 
> .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..............
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<..............
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................//;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................//<<<<<<<<<<<<<<<<<<<<<<<<<..............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ........................<<<<<<<.................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................>/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> │ > 
> ..;;;;;;;;;;;;;;;;;.............................................................
> │ > │ 
> │ > 
> .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> │ > 
> .>;;;;;;;;;;;;;;;;;;............................................................
> │ > │ 
> │ > 
> .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................
> │ > 
> >//;;;;;;;;;;;;;;;;;............................................................
> │ > │ 
> │ > 
> .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
> │ > 
> ///;;;;;;;;;;;;;;;;;\..............>;;;;;;;;;...................................
> │ > │ 
> │ > 
> .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................
> │ > 
> ///;;;;;;;;;;;;;;;;;;.............>/;;;;;;;;;...................................
> │ > │ 
> │ > 
> ......................///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................
> │ > 
> ///;;;;;;;;;;;;;;;;;;.............//;;;;;;;;;\..................................
> │ > │ 
> │ > 
> ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...............
> │ > 
> ////;;;;;;;;;;;;;;;;;;.............//;;;;;;;;;..................................
> │ > │ 
> │ > 
> ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...............
> │ > 
> ////;;;;;;;;;;;;;;;;;;.............//<<<<<<<<<..................................
> │ > │ 
> │ > 
> ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..............
> │ > 
> ////;;;;;;;<<<<<<<<<<<............./<<<<<<<<....................................
> │ > │ 
> │ > 
> ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..............
> │ > 
> .///<<<<<<<<<<<<<<<<<...........................................................
> │ > │ 
> │ > 
> ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............
> │ > 
> .//<<<<<<<<<<<<<<<..............................................................
> │ > │ 
> │ > 
> .......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<.............
> │ > 
> .<<<............................................................................
> │ > │ 
> │ > 
> .......................////;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<...............
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................////<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................////<<<<<<<<<<<<<<<<<<<<<<<<<............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................//<<<<<<<<<<<<<..........................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................>/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................>///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> │ > 
> ..;;;;;;;;;;;;;;;;;.............................................................
> │ > │ 
> │ > 
> ....................>////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> │ > 
> .>/;;;;;;;;;;;;;;;;;............................................................
> │ > │ 
> │ > 
> ....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
> │ > 
> >//;;;;;;;;;;;;;;;;;............................................................
> │ > │ 
> │ > 
> ....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...............>
> │ > 
> ///;;;;;;;;;;;;;;;;;;..............>;;;;;;;;;...................................
> │ > │ 
> │ > 
> ...................../////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............../
> │ > 
> ////;;;;;;;;;;;;;;;;;.............//;;;;;;;;;...................................
> │ > │ 
> │ > 
> .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............../
> │ > 
> ////;;;;;;;;;;;;;;;;;;............///;;;;;;;;;..................................
> │ > │ 
> │ > 
> .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...............
> │ > 
> ////;;;;;;;;;;;;;;;;;;............///;;;;;;;;;..................................
> │ > │ 
> │ > 
> .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..............
> │ > 
> ////;;;;;;;;;;;;;;;;;;;............//;<<<<<<<<..................................
> │ > │ 
> │ > 
> .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............
> │ > 
> /////<<<<<<<<<<<<<<<<<<............/<<<<<<<<....................................
> │ > │ 
> │ > 
> ......................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............
> │ > 
> .///<<<<<<<<<<<<<<<<............................................................
> │ > │ 
> │ > 
> ......................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<............
> │ > 
> .//<<<<<<<<<<<<<<<..............................................................
> │ > │ 
> │ > 
> ......................//////;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<.............
> │ > 
> .<<<<<<.........................................................................
> │ > │ 
> │ > 
> ......................///////;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<..................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................//////<<<<<<<<<<<<<<<<<<<<<<<<<<<<.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................////<<<<<<<<<<<<<<<<<<<<<<<<<<...........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................///<<<<<<<<<<<<<<<<......................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................./<<<<<...................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ........................;;;;;;..................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................>/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................>///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...................../////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................>/////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> │ > 
> ..;;;;;;;;;;;;;;;;;.............................................................
> │ > │ 
> │ > 
> ....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................
> │ > 
> .>/;;;;;;;;;;;;;;;;\............................................................
> │ > │ 
> │ > 
> ...................>///////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
> │ > 
> >//;;;;;;;;;;;;;;;;;............................................................
> │ > │ 
> │ > 
> ...................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............../
> │ > 
> ///;;;;;;;;;;;;;;;;;;..............>;;;;;;;;;...................................
> │ > │ 
> │ > 
> ....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............../
> │ > 
> ////;;;;;;;;;;;;;;;;;\............>/;;;;;;;;;\..................................
> │ > │ 
> │ > 
> ....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............./
> │ > 
> ////;;;;;;;;;;;;;;;;;;............///;;;;;;;;;..................................
> │ > │ 
> │ > 
> ....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............./
> │ > 
> /////;;;;;;;;;;;;;;;;;;...........///;;;;;;;<<\.................................
> │ > │ 
> │ > 
> .....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............
> │ > 
> /////;;;;;;;;;;;;;;<<<<............///<<<<<<<<..................................
> │ > │ 
> │ > 
> .....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............
> │ > 
> //////<<<<<<<<<<<<<<<<<............//<<<<<<<....................................
> │ > │ 
> │ > 
> ...................../////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............
> │ > 
> /////<<<<<<<<<<<<<<<............................................................
> │ > │ 
> │ > 
> ...................../////////;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<............
> │ > 
> .//<<<<<<<<<<<<<<<..............................................................
> │ > │ 
> │ > 
> ......................////////;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<................
> │ > 
> ./<<<<<<<<......................................................................
> │ > │ 
> │ > 
> ....................../////////<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................////////<<<<<<<<<<<<<<<<<<<<<<<<<<<.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................./////<<<<<<<<<<<<<<<<<<<<<<<<<...........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................///<<<<<<<<<<<<<<<<<<<<..................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................//<<<<<<<<<..............................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ........................;;;;;;;;;...............................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................>////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> │ > 
> ..;;;;;;;;;;;;;;;;;.............................................................
> │ > │ 
> │ > 
> ...................>////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................
> │ > 
> .>/;;;;;;;;;;;;;;;;\............................................................
> │ > │ 
> │ > 
> .................../////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................
> │ > 
> >///;;;;;;;;;;;;;;;;............................................................
> │ > │ 
> │ > 
> ..................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...............>
> │ > 
> ////;;;;;;;;;;;;;;;;;..............>;;;;;;;;;...................................
> │ > │ 
> │ > 
> ...................//////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............>/
> │ > 
> ////;;;;;;;;;;;;;;;;;;............>//;;;;;;;;\..................................
> │ > │ 
> │ > 
> ...................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............//
> │ > 
> /////;;;;;;;;;;;;;;;;;\...........///;;;;;;;;;..................................
> │ > │ 
> │ > 
> ...................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............/
> │ > 
> //////;;;;;;;;;;;;;;;;;...........////;;;<<<<<<.................................
> │ > │ 
> │ > 
> ....................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.........../
> │ > 
> ///////;;;;;;;<<<<<<<<<<...........///<<<<<<<<..................................
> │ > │ 
> │ > 
> ....................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...........
> │ > 
> ///////<<<<<<<<<<<<<<<.............//<<<<<<<....................................
> │ > │ 
> │ > 
> .....................//////////;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<...........
> │ > 
> /////<<<<<<<<<<<<<<<............................................................
> │ > │ 
> │ > 
> .....................///////////;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<..............
> │ > 
> .///<<<<<<<<<<<<<<..............................................................
> │ > │ 
> │ > 
> .....................////////////<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<.................
> │ > 
> .//<<<<<<<<<....................................................................
> │ > │ 
> │ > 
> ......................//////////<<<<<<<<<<<<<<<<<<<<<<<<<<<<....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................../////////<<<<<<<<<<<<<<<<<<<<<<<<<<.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................///////<<<<<<<<<<<<<<<<<<<<<<<<<..........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................./////<<<<<<<<<<<<<<<<<<<<................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................///<<<<<<<<<<<<..........................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ........................<<<<<...................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ........................;;;;;;;;;;..............................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................>////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> │ > 
> ../;;;;;;;;;;;;;;;..............................................................
> │ > │ 
> │ > 
> ...................>/////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................
> │ > 
> .>/;;;;;;;;;;;;;;;;.............................................................
> │ > │ 
> │ > 
> ..................>//////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................
> │ > 
> >///;;;;;;;;;;;;;;;;............................................................
> │ > │ 
> │ > 
> ..................////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..............>
> │ > 
> ////;;;;;;;;;;;;;;;;;..............>;;;;;;;;;...................................
> │ > │ 
> │ > 
> ................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............>/
> │ > 
> /////;;;;;;;;;;;;;;;;;............>//;;;;;;;;\..................................
> │ > │ 
> │ > 
> ................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...........//
> │ > 
> //////;;;;;;;;;;;;;;;;;..........////;;;;;;;;;\.................................
> │ > │ 
> │ > 
> .................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........//
> │ > 
> //////;;;;;;;;;;;;;;;;;;..........////;<<<<<<<<.................................
> │ > │ 
> │ > 
> .................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........../
> │ > 
> ///////;;<<<<<<<<<<<<<<<...........///<<<<<<<<..................................
> │ > │ 
> │ > 
> ..................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<...........
> │ > 
> ////////<<<<<<<<<<<<<<.............//<<<<<<<....................................
> │ > │ 
> │ > 
> ....................//////////////;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<.............
> │ > 
> //////<<<<<<<<<<<<<<............................................................
> │ > │ 
> │ > 
> ....................//////////////;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<...............
> │ > 
> .////<<<<<<<<<<<<<..............................................................
> │ > │ 
> │ > 
> ...................../////////////<<<<<<<<<<<<<<<<<<<<<<<<<<<<..................
> │ > 
> ..<<<<<<<<<<<...................................................................
> │ > │ 
> │ > 
> .....................////////////<<<<<<<<<<<<<<<<<<<<<<<<<<.....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................../////////<<<<<<<<<<<<<<<<<<<<<<<<<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................///////<<<<<<<<<<<<<<<<<<<<<<<<<..........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................./////<<<<<<<<<<<<<<<<<<<<<<..............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................////<<<<<<<<<<<<<<.......................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................../<<<<<<<<...............................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ........................;;;;;;;;;...............................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................>/////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................>///////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...................>/////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> │ > 
> ..;;;;;;;;;;;;;;;;..............................................................
> │ > │ 
> │ > 
> ...................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
> │ > 
> .>//;;;;;;;;;;;;;;;.............................................................
> │ > │ 
> │ > 
> ..................>////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................
> │ > 
> >///;;;;;;;;;;;;;;;;............................................................
> │ > │ 
> │ > 
> ................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............>
> │ > 
> /////;;;;;;;;;;;;;;;;..............>;;;;;;;;\...................................
> │ > │ 
> │ > 
> .................>//////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...........>/
> │ > 
> //////;;;;;;;;;;;;;;;;............>//;;;;;;;;\..................................
> │ > │ 
> │ > 
> .................////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.........///
> │ > 
> //////;;;;;;;;;;;;;;;;;..........>////;;;;;;;;;.................................
> │ > │ 
> │ > 
> ..................////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.........//
> │ > 
> ///////;;;;;;;;;;;;<<<<<........../////<<<<<<<<.................................
> │ > │ 
> │ > 
> ................../////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<........./
> │ > 
> ////////;<<<<<<<<<<<<<<...........////<<<<<<<<..................................
> │ > │ 
> │ > 
> ...................////////////////;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<.........../
> │ > 
> ////////<<<<<<<<<<<<<<.............//<<<<<<<....................................
> │ > │ 
> │ > 
> .................../////////////////;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<..............
> │ > 
> //////<<<<<<<<<<<<<<............................................................
> │ > │ 
> │ > 
> ....................////////////////<<<<<<<<<<<<<<<<<<<<<<<<<<<.................
> │ > 
> .///<<<<<<<<<<<<<<..............................................................
> │ > │ 
> │ > 
> .....................//////////////<<<<<<<<<<<<<<<<<<<<<<<<<<...................
> │ > 
> ..//<<<<<<<<<<..................................................................
> │ > │ 
> │ > 
> ...................../////////////<<<<<<<<<<<<<<<<<<<<<<<<<.....................
> │ > 
> ..<.............................................................................
> │ > │ 
> │ > 
> ......................//////////<<<<<<<<<<<<<<<<<<<<<<<<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................../////////<<<<<<<<<<<<<<<<<<<<<<<..........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................//////<<<<<<<<<<<<<<<<<<<<<<.............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ........................////<<<<<<<<<<<<<<<.....................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ........................//<<<<<<<<<<............................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .........................<<<....................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................>;;;;;;;;................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................>/;;;;;;;;;;;;;;;;;;;;;;;;;;;\...........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................>////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..................../////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...................>///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> │ > 
> ..;;;;;;;;;;;;;;;\..............................................................
> │ > │ 
> │ > 
> ..................>/////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
> │ > 
> .>/;;;;;;;;;;;;;;;;.............................................................
> │ > │ 
> │ > 
> ..................///////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................
> │ > 
> >///;;;;;;;;;;;;;;;;............................................................
> │ > │ 
> │ > 
> .................>////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............>
> │ > 
> /////;;;;;;;;;;;;;;;;..............>/;;;;;;;\...................................
> │ > │ 
> │ > 
> ................>//////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..........>/
> │ > 
> //////;;;;;;;;;;;;;;;;\...........>///;;;;;;;\..................................
> │ > │ 
> │ > 
> ................>///////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........>//
> │ > 
> ///////;;;;;;;;;;;;;;;;;.........>////;;;;;;;;;.................................
> │ > │ 
> │ > 
> .................///////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<.......///
> │ > 
> ////////;;;;;;<<<<<<<<<<.........//////<<<<<<<<.................................
> │ > │ 
> │ > 
> ................./////////////////////;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<.........//
> │ > 
> /////////<<<<<<<<<<<<<<...........////<<<<<<<<..................................
> │ > │ 
> │ > 
> ..................////////////////////;;;;<<<<<<<<<<<<<<<<<<<<<<<<<............/
> │ > 
> ////////<<<<<<<<<<<<<..............//<<<<<<<....................................
> │ > │ 
> │ > 
> ...................////////////////////<<<<<<<<<<<<<<<<<<<<<<<<<<...............
> │ > 
> ///////<<<<<<<<<<<<<............................................................
> │ > │ 
> │ > 
> ...................//////////////////<<<<<<<<<<<<<<<<<<<<<<<<<..................
> │ > 
> .////<<<<<<<<<<<<<..............................................................
> │ > │ 
> │ > 
> ....................////////////////<<<<<<<<<<<<<<<<<<<<<<<<....................
> │ > 
> ..//<<<<<<<<<<<.................................................................
> │ > │ 
> │ > 
> .....................//////////////<<<<<<<<<<<<<<<<<<<<<<<......................
> │ > 
> ...<<...........................................................................
> │ > │ 
> │ > 
> ......................////////////<<<<<<<<<<<<<<<<<<<<<<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................//////////<<<<<<<<<<<<<<<<<<<<<<..........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................///////<<<<<<<<<<<<<<<<<<<<<<............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................../////<<<<<<<<<<<<<<<<...................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ........................////<<<<<<<<<<..........................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ........................./<<<<<<................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................;;;;;;;..................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;.............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................>///;;;;;;;;;;;;;;;;;;;;;;;;;;;...........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................>////;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................///////;;;;;;;;;;;;;;;;;;;;;;;;;;;;........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................>/////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...................>///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...................>///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> │ > 
> ../;;;;;;;;;;;;;;...............................................................
> │ > │ 
> │ > 
> ..................>/////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
> │ > 
> .>/;;;;;;;;;;;;;;;;.............................................................
> │ > │ 
> │ > 
> ..................////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...............
> │ > 
> >///;;;;;;;;;;;;;;;;............................................................
> │ > │ 
> │ > 
> .................>//////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............>
> │ > 
> ///////;;;;;;;;;;;;;;..............>/;;;;;;;....................................
> │ > │ 
> │ > 
> ................>////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........>/
> │ > 
> ////////;;;;;;;;;;;;;;;...........>///;;;;;;;;..................................
> │ > │ 
> │ > 
> ................/////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<.......>//
> │ > 
> /////////;;;;;;;;;;;;;;<.........>////;;;;;;;;<.................................
> │ > │ 
> │ > 
> ...............////////////////////////;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<........///
> │ > 
> /////////;<<<<<<<<<<<<<<.........//////;<<<<<<<.................................
> │ > │ 
> │ > 
> ................////////////////////////;;;;<<<<<<<<<<<<<<<<<<<<<<<...........//
> │ > 
> //////////<<<<<<<<<<<<<.........../////<<<<<<<..................................
> │ > │ 
> │ > 
> .................////////////////////////<<<<<<<<<<<<<<<<<<<<<<<<<............./
> │ > 
> /////////<<<<<<<<<<<<..............//<<<<<<<....................................
> │ > │ 
> │ > 
> ..................//////////////////////<<<<<<<<<<<<<<<<<<<<<<<<................
> │ > 
> ////////<<<<<<<<<<<<............................................................
> │ > │ 
> │ > 
> ...................///////////////////<<<<<<<<<<<<<<<<<<<<<<<<..................
> │ > 
> ./////<<<<<<<<<<<<..............................................................
> │ > │ 
> │ > 
> ..................../////////////////<<<<<<<<<<<<<<<<<<<<<<<....................
> │ > 
> ..///<<<<<<<<<<.................................................................
> │ > │ 
> │ > 
> .....................///////////////<<<<<<<<<<<<<<<<<<<<<<......................
> │ > 
> .../<<<.........................................................................
> │ > │ 
> │ > 
> .....................//////////////<<<<<<<<<<<<<<<<<<<<<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................///////////<<<<<<<<<<<<<<<<<<<<<..........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................./////////<<<<<<<<<<<<<<<<<<<<............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ........................///////<<<<<<<<<<<<<<<..................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .........................////<<<<<<<<<<<........................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..........................//<<<<<<<.............................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...........................<<...................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................;;;;.....................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................>/;;;;;;;;;;;;;;;;;;;;;;;;................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................///;;;;;;;;;;;;;;;;;;;;;;;;;;.............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................>////;/;;;;;;;;;;;;;;;;;;;;;;;;;...........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................>////////;;;;;;;;;;;;;;;;;;;;;;;;;;.........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................>////////;/;;;;;;;;;;;;;;;;;;;;;;;;;;.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...................>///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...................///////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> │ > 
> ..;;;;;;;;;;;;;;\...............................................................
> │ > │ 
> │ > 
> ..................>////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................
> │ > 
> .>/;;;;;;;;;;;;;;;..............................................................
> │ > │ 
> │ > 
> .................>///////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..............
> │ > 
> >///;/;;;;;;;;;;;;;;............................................................
> │ > │ 
> │ > 
> ................./////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...........>
> │ > 
> //////;;;;;;;;;;;;;;;;.............>/;;;;;;;....................................
> │ > │ 
> │ > 
> ................>//////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\........>/
> │ > 
> ///////;/;;;;;;;;;;;;;;...........>///;;;;;;;;..................................
> │ > │ 
> │ > 
> ...............>////////////////////////;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<.......>//
> │ > 
> /////////;;;;;;;;;<<<<<<.........>////;;;;;;<<<.................................
> │ > │ 
> │ > 
> ...............>//////////////////////////;;;;<<<<<<<<<<<<<<<<<<<<<<.........///
> │ > 
> //////////;<<<<<<<<<<<<<.........///////<<<<<<<.................................
> │ > │ 
> │ > 
> ...............///////////////////////////<<<<<<<<<<<<<<<<<<<<<<<<...........///
> │ > 
> //////////<<<<<<<<<<<<............/////<<<<<<...................................
> │ > │ 
> │ > 
> ................//////////////////////////<<<<<<<<<<<<<<<<<<<<<<.............../
> │ > 
> /////////<<<<<<<<<<<<..............///<<<<<<....................................
> │ > │ 
> │ > 
> .................///////////////////////<<<<<<<<<<<<<<<<<<<<<<<.................
> │ > 
> ///////<<<<<<<<<<<<..................<..........................................
> │ > │ 
> │ > 
> ..................//////////////////////<<<<<<<<<<<<<<<<<<<<<...................
> │ > 
> .//////<<<<<<<<<<<..............................................................
> │ > │ 
> │ > 
> ...................//////////////////<<<<<<<<<<<<<<<<<<<<<<.....................
> │ > 
> ...//<<<<<<<<<<.................................................................
> │ > │ 
> │ > 
> ....................////////////////<<<<<<<<<<<<<<<<<<<<<<......................
> │ > 
> ..../<<<........................................................................
> │ > │ 
> │ > 
> .....................///////////////<<<<<<<<<<<<<<<<<<<<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................../////////////<<<<<<<<<<<<<<<<<<<..........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................//////////<<<<<<<<<<<<<<<<<<<<...........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ........................////////<<<<<<<<<<<<<<<.................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..........................////<<<<<<<<<<<<......................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..........................////<<<<<<<...........................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ............................<<<<................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................;;.......................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................>;;;;;;;;;;;;;;;;;;;;.....................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................///;;;;;;;;;;;;;;;;;;;;;;;;;..............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................>/////;;;;;;;;;;;;;;;;;;;;;;;;;............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................>////////;;;;;;;;;;;;;;;;;;;;;;;;;\.........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................//////////;;;;;;;;;;;;;;;;;;;;;;;;;;;.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...................>////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;.....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..................>///////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> │ > 
> .>/;;;;;;;;;;;;;................................................................
> │ > │ 
> │ > 
> ..................///////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;................
> │ > 
> >//;;;;;;;;;;;;;;;..............................................................
> │ > │ 
> │ > 
> .................>////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;..............
> │ > 
> >////;;;;;;;;;;;;;;;............................................................
> │ > │ 
> │ > 
> .................///////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........>
> │ > 
> ///////;;;;;;;;;;;;;;;.............>/;;;;;;;....................................
> │ > │ 
> │ > 
> ................>/////////////////////////;;;;;;;;;;;;;;;;;;<<<<<<<<<.........>/
> │ > 
> ////////;;;;;;;;;;;;;;;;..........>//;;;;;;;;;..................................
> │ > │ 
> │ > 
> ...............>/////////////////////////////;;;<<<<<<<<<<<<<<<<<<<<.........>//
> │ > 
> //////////;;;<<<<<<<<<<<.........>/////;;;<<<<<.................................
> │ > │ 
> │ > 
> ...............//////////////////////////////<<<<<<<<<<<<<<<<<<<<<<.........////
> │ > 
> ////////////<<<<<<<<<<<..........///////<<<<<<<.................................
> │ > │ 
> │ > 
> ..............>////////////////////////////<<<<<<<<<<<<<<<<<<<<<<............///
> │ > 
> ///////////<<<<<<<<<<<............/////<<<<<<...................................
> │ > │ 
> │ > 
> ...............////////////////////////////<<<<<<<<<<<<<<<<<<<<...............//
> │ > 
> //////////<<<<<<<<<<<..............///<<<<<<....................................
> │ > │ 
> │ > 
> ................/////////////////////////<<<<<<<<<<<<<<<<<<<<<..................
> │ > 
> ////////<<<<<<<<<<<..................<..........................................
> │ > │ 
> │ > 
> .................///////////////////////<<<<<<<<<<<<<<<<<<<<<...................
> │ > 
> .//////<<<<<<<<<<<..............................................................
> │ > │ 
> │ > 
> ...................////////////////////<<<<<<<<<<<<<<<<<<<<.....................
> │ > 
> ...///<<<<<<<<<<................................................................
> │ > │ 
> │ > 
> ....................//////////////////<<<<<<<<<<<<<<<<<<<<......................
> │ > 
> ..../<<<<.......................................................................
> │ > │ 
> │ > 
> .....................////////////////<<<<<<<<<<<<<<<<<<<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................//////////////<<<<<<<<<<<<<<<<<<..........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ........................///////////<<<<<<<<<<<<<<<<<<...........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .........................////////<<<<<<<<<<<<<<<................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..........................//////<<<<<<<<<<<.....................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...........................////<<<<<<<<.........................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ............................//<<<<..............................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................../;;;;;;;;;;;;;;;;.........................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................>///;;;;;;;;;;;;;;;;;;;;;;;................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................//////;;;;;;;;;;;;;;;;;;;;;;;;.............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..................../////////;;;;;;;;;;;;;;;;;;;;;;;;...........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...................>///////////;/;;;;;;;;;;;;;;;;;;;;;;;........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...................///////////////;;;;;;;;;;;;;;;;;;;;;;;;;.....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..................>/////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> │ > 
> .>;;;;;;;;;;;;;.................................................................
> │ > │ 
> │ > 
> ..................////////////////////;/;;;;;;;;;;;;;;;;;;;;;;;;................
> │ > 
> >//;/;;;;;;;;;;;;...............................................................
> │ > │ 
> │ > 
> .................>//////////////////////;/;;;;;;;;;;;;;;;;;;;;;;;;;\............
> │ > 
> //////;;;;;;;;;;;;;;............................................................
> │ > │ 
> │ > 
> ................>//////////////////////////;;;;;;;;;;;;;;;;;;;<<<<<<<..........>
> │ > 
> ///////;;;;;;;;;;;;;;;.............>/;;;;;;;....................................
> │ > │ 
> │ > 
> ................/////////////////////////////;;;;<<<<<<<<<<<<<<<<<<<..........>/
> │ > 
> ///////////;;;;;;;;;;;<<..........>//;;;;;;;;;..................................
> │ > │ 
> │ > 
> ...............>//////////////////////////////<<<<<<<<<<<<<<<<<<<<<..........>//
> │ > 
> ///////////;<<<<<<<<<<<<.........>/////;;<<<<<<.................................
> │ > │ 
> │ > 
> ...............///////////////////////////////<<<<<<<<<<<<<<<<<<<............///
> │ > 
> ////////////<<<<<<<<<<<..........///////<<<<<<..................................
> │ > │ 
> │ > 
> ..............>//////////////////////////////<<<<<<<<<<<<<<<<<<<............////
> │ > 
> ///////////<<<<<<<<<<<............/////<<<<<<...................................
> │ > │ 
> │ > 
> ..............//////////////////////////////<<<<<<<<<<<<<<<<<<<...............//
> │ > 
> //////////<<<<<<<<<<<...............///<<<<<....................................
> │ > │ 
> │ > 
> ...............///////////////////////////<<<<<<<<<<<<<<<<<<<...................
> │ > 
> /////////<<<<<<<<<<................../..........................................
> │ > │ 
> │ > 
> ................//////////////////////////<<<<<<<<<<<<<<<<<<....................
> │ > 
> .///////<<<<<<<<<<..............................................................
> │ > │ 
> │ > 
> ..................//////////////////////<<<<<<<<<<<<<<<<<<<.....................
> │ > 
> ...////<<<<<<<<<................................................................
> │ > │ 
> │ > 
> ....................///////////////////<<<<<<<<<<<<<<<<<<.......................
> │ > 
> ...../<<<.......................................................................
> │ > │ 
> │ > 
> ...................../////////////////<<<<<<<<<<<<<<<<<<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................///////////////<<<<<<<<<<<<<<<<<<.........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ........................////////////<<<<<<<<<<<<<<<<<...........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .........................//////////<<<<<<<<<<<<<<...............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...........................///////<<<<<<<<<<<...................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ............................/////<<<<<<<........................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..............................//<<<<............................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................>;;;;;;;;;;;;..............................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................///;;;;;;;;;;;;;;;;;;;;;;..................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................>//////;;;;;;;;;;;;;;;;;;;;;;...............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..................../////////;/;;;;;;;;;;;;;;;;;;;;;\...........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...................>/////////////;;;;;;;;;;;;;;;;;;;;;;\........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...................////////////////;/;;;;;;;;;;;;;;;;;;;;;;.....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..................>///////////////////;/;;;;;;;;;;;;;;;;;;;;;;..................
> │ > 
> .;;;;;;;;;;;;;..................................................................
> │ > │ 
> │ > 
> .................>///////////////////////;;;;;;;;;;;;;;;;;;;;;;;;\..............
> │ > 
> >///;;;;;;;;;;;;;...............................................................
> │ > │ 
> │ > 
> .................//////////////////////////;;;;;;;;;;;;;;;;;;;;;;<<<............
> │ > 
> /////;;;;;;;;;;;;;;;............................................................
> │ > │ 
> │ > 
> ................>/////////////////////////////;;;;<<<<<<<<<<<<<<<<<<...........>
> │ > 
> ////////;/;;;;;;;;;;;;;............>/;;;;;;;....................................
> │ > │ 
> │ > 
> ................////////////////////////////////<<<<<<<<<<<<<<<<<<<...........>/
> │ > 
> //////////;;;;;;;<<<<<<<..........>//;;;;;;;;;..................................
> │ > │ 
> │ > 
> ...............>///////////////////////////////<<<<<<<<<<<<<<<<<<<...........>//
> │ > 
> /////////////<<<<<<<<<<..........>///////<<<<<<.................................
> │ > │ 
> │ > 
> ...............///////////////////////////////<<<<<<<<<<<<<<<<<<.............///
> │ > 
> ////////////<<<<<<<<<<...........////////<<<<<..................................
> │ > │ 
> │ > 
> ..............>///////////////////////////////<<<<<<<<<<<<<<<<<.............>///
> │ > 
> ///////////<<<<<<<<<<............///////<<<<<...................................
> │ > │ 
> │ > 
> ..............//////////////////////////////<<<<<<<<<<<<<<<<<<...............///
> │ > 
> ///////////<<<<<<<<<................///<<<<<....................................
> │ > │ 
> │ > 
> ..............//////////////////////////////<<<<<<<<<<<<<<<<<................../
> │ > 
> //////////<<<<<<<<<.................../.........................................
> │ > │ 
> │ > 
> ...............////////////////////////////<<<<<<<<<<<<<<<<<....................
> │ > 
> ..///////<<<<<<<<<..............................................................
> │ > │ 
> │ > 
> ................./////////////////////////<<<<<<<<<<<<<<<<......................
> │ > 
> ....////<<<<<<<<................................................................
> │ > │ 
> │ > 
> ...................//////////////////////<<<<<<<<<<<<<<<<.......................
> │ > 
> ....../<<<......................................................................
> │ > │ 
> │ > 
> .....................//////////////////<<<<<<<<<<<<<<<<<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................../////////////////<<<<<<<<<<<<<<<<.........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ........................//////////////<<<<<<<<<<<<<<<...........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..........................///////////<<<<<<<<<<<<...............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ............................////////<<<<<<<<<<..................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .............................//////<<<<<<<......................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...............................///<<<<..........................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .................................<..............................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...................../;;;;;;;;..................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................>//;;;;;;;;;;;;;;;;;;;;;....................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................//////;;;;;;;;;;;;;;;;;;;;;.................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...................>//////////;/;;;;;;;;;;;;;;;;;;;.............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...................//////////////;/;;;;;;;;;;;;;;;;;;;;.........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..................>////////////////////;;;;;;;;;;;;;;;;;;;;.....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..................//////////////////////;;;;;;;;;;;;;;;;;;;;;;;.................
> │ > 
> .;;;;;;;;;;;;\..................................................................
> │ > │ 
> │ > 
> .................>/////////////////////////;;;;;;;;;;;;;;;;;;;;;;;..............
> │ > 
> >/;;/;;;;;;;;;;;;...............................................................
> │ > │ 
> │ > 
> .................////////////////////////////////;;;<<<<<<<<<<<<<<<<............
> │ > 
> /////;;/;;;;;;;;;;;;............................................................
> │ > │ 
> │ > 
> ................>/////////////////////////////////<<<<<<<<<<<<<<<<<............>
> │ > 
> ////////;;;;;;;;;;;;;;;............;;;;;;;;;....................................
> │ > │ 
> │ > 
> ................/////////////////////////////////<<<<<<<<<<<<<<<<.............>/
> │ > 
> ////////////;;<<<<<<<<<<..........>////;;;;;;;;.................................
> │ > │ 
> │ > 
> ...............>////////////////////////////////<<<<<<<<<<<<<<<<..............//
> │ > 
> //////////////<<<<<<<<<...........//////;<<<<<<.................................
> │ > │ 
> │ > 
> ...............////////////////////////////////<<<<<<<<<<<<<<<<..............>//
> │ > 
> /////////////<<<<<<<<<...........>///////<<<<<..................................
> │ > │ 
> │ > 
> ..............>///////////////////////////////<<<<<<<<<<<<<<<<..............>///
> │ > 
> ////////////<<<<<<<<<............///////<<<<<...................................
> │ > │ 
> │ > 
> ..............///////////////////////////////<<<<<<<<<<<<<<<<................///
> │ > 
> ///////////<<<<<<<<<................///<<<<<....................................
> │ > │ 
> │ > 
> .............>///////////////////////////////<<<<<<<<<<<<<<<.................../
> │ > 
> //////////<<<<<<<<<.............................................................
> │ > │ 
> │ > 
> ..............//////////////////////////////<<<<<<<<<<<<<<<.....................
> │ > 
> ..///////<<<<<<<<<..............................................................
> │ > │ 
> │ > 
> ................///////////////////////////<<<<<<<<<<<<<<<......................
> │ > 
> ..../////<<<<<<<................................................................
> │ > │ 
> │ > 
> ..................////////////////////////<<<<<<<<<<<<<<<.......................
> │ > 
> ......./<<......................................................................
> │ > │ 
> │ > 
> ..................../////////////////////<<<<<<<<<<<<<<<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................//////////////////<<<<<<<<<<<<<<<.........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ........................///////////////<<<<<<<<<<<<<<...........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...........................///////////<<<<<<<<<<<<..............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ............................//////////<<<<<<<<<.................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..............................///////<<<<<<.....................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................////<<<<........................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...................................<............................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................;;;;;......................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................>/;/;;;;;;;;;;;;;;..........................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................//////;/;;;;;;;;;;;;;;;;;...................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...................>//////////;;/;;;;;;;;;;;;;;;;;..............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...................////////////////;;;;;;;;;;;;;;;;;;;;.........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..................>///////////////////////;;;;;;;;;;;;;;;;;.....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................../////////////////////////;;;;;;;;;;;;;;;;;;;;;................
> │ > 
> .;;;;;;;;;;;....................................................................
> │ > │ 
> │ > 
> .................>///////////////////////////////;;;;;<<<<<<<<<<<<<.............
> │ > 
> >//;/;;;;;;;;;;;................................................................
> │ > │ 
> │ > 
> .................//////////////////////////////////<<<<<<<<<<<<<<<.............>
> │ > 
> //////;//;;;;;;;;;;;............................................................
> │ > │ 
> │ > 
> ................>/////////////////////////////////<<<<<<<<<<<<<<<..............>
> │ > 
> /////////;/;;;;;;;;;<<<<...........;;;;;;;;.....................................
> │ > │ 
> │ > 
> ................//////////////////////////////////<<<<<<<<<<<<<<..............>/
> │ > 
> //////////////<<<<<<<<<...........>///;;;;;;;<<.................................
> │ > │ 
> │ > 
> ...............>/////////////////////////////////<<<<<<<<<<<<<<<..............//
> │ > 
> //////////////<<<<<<<<<...........///////;<<<<<.................................
> │ > │ 
> │ > 
> .............../////////////////////////////////<<<<<<<<<<<<<<<..............>//
> │ > 
> /////////////<<<<<<<<<...........>///////<<<<<..................................
> │ > │ 
> │ > 
> ..............>////////////////////////////////<<<<<<<<<<<<<<<..............>///
> │ > 
> ////////////<<<<<<<<<............///////<<<<<...................................
> │ > │ 
> │ > 
> ..............>///////////////////////////////<<<<<<<<<<<<<<<...............////
> │ > 
> ////////////<<<<<<<<................////<<<<<...................................
> │ > │ 
> │ > 
> ..............////////////////////////////////<<<<<<<<<<<<<<.................../
> │ > 
> ///////////<<<<<<<<.............................................................
> │ > │ 
> │ > 
> .............>///////////////////////////////<<<<<<<<<<<<<<.....................
> │ > 
> ..////////<<<<<<<<..............................................................
> │ > │ 
> │ > 
> .............../////////////////////////////<<<<<<<<<<<<<<......................
> │ > 
> .....////<<<<<<<................................................................
> │ > │ 
> │ > 
> .................//////////////////////////<<<<<<<<<<<<<<.......................
> │ > 
> .......//<<.....................................................................
> │ > │ 
> │ > 
> ....................///////////////////////<<<<<<<<<<<<<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................////////////////////<<<<<<<<<<<<<.........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................../////////////////<<<<<<<<<<<<...........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .........................../////////////<<<<<<<<<<..............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .............................//////////<<<<<<<<.................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................///////<<<<<....................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..................................////<<<.......................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................................<..........................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................;;..........................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................//;/;;;;;;;;;...............................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...................>//////;;;/;;;;;;;;;;;;;.....................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...................////////////;;;;;;;;;;;;;;;;;................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..................>/////////////////////;;;;;;;;;;;;;;..........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..................>///////////////////////;;;/;;;;;;;;;;;;;;....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................../////////////////////////////;;/;;;;;;;;;;;;;;;...............
> │ > 
> ;;;;;;;;;;;.....................................................................
> │ > │ 
> │ > 
> .................>//////////////////////////////////<<<<<<<<<<<<<<..............
> │ > 
> >/;/;;;;;;;;;;;;................................................................
> │ > │ 
> │ > 
> .................//////////////////////////////////<<<<<<<<<<<<<<..............>
> │ > 
> ///////;;/;;;;;;;;;;;...........................................................
> │ > │ 
> │ > 
> ................>//////////////////////////////////<<<<<<<<<<<<<...............>
> │ > 
> //////////;;/;;;<<<<<<<............/;;;;;;;\....................................
> │ > │ 
> │ > 
> ................//////////////////////////////////<<<<<<<<<<<<<...............>/
> │ > 
> ///////////////<<<<<<<<...........>//;;/;;;;<<<.................................
> │ > │ 
> │ > 
> ...............>//////////////////////////////////<<<<<<<<<<<<................//
> │ > 
> //////////////<<<<<<<<............>///////<<<<..................................
> │ > │ 
> │ > 
> ...............>/////////////////////////////////<<<<<<<<<<<<<...............>//
> │ > 
> /////////////<<<<<<<<............>///////<<<<<..................................
> │ > │ 
> │ > 
> .............../////////////////////////////////<<<<<<<<<<<<<................>//
> │ > 
> /////////////<<<<<<<<............////////<<<<...................................
> │ > │ 
> │ > 
> ..............>////////////////////////////////<<<<<<<<<<<<<.................///
> │ > 
> ////////////<<<<<<<<................////<<<<<...................................
> │ > │ 
> │ > 
> ............../////////////////////////////////<<<<<<<<<<<<...................//
> │ > 
> ///////////<<<<<<<<.............................................................
> │ > │ 
> │ > 
> .............>////////////////////////////////<<<<<<<<<<<<<.....................
> │ > 
> ../////////<<<<<<<<.............................................................
> │ > │ 
> │ > 
> .............////////////////////////////////<<<<<<<<<<<<<......................
> │ > 
> ...../////<<<<<<................................................................
> │ > │ 
> │ > 
> ................/////////////////////////////<<<<<<<<<<<<.......................
> │ > 
> ........./<.....................................................................
> │ > │ 
> │ > 
> .................../////////////////////////<<<<<<<<<<<<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................../////////////////////<<<<<<<<<<<<.........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ........................///////////////////<<<<<<<<<<...........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ............................//////////////<<<<<<<<<.............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...............................//////////<<<<<<<................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..................................///////<<<<<..................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................................////<<<.....................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................................./........................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...................;/;;;;;;;;...................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...................//////;///;;;;;;;;;;.........................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..................>/////////////;;;;;;;;;;;;;;;.................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..................>////////////////////;//;;;;;;;;;;;;..........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................../////////////////////////////;/;;;;;;;;;;;;...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .................>///////////////////////////////////<<<<<<<<<<<<...............
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .................>//////////////////////////////////<<<<<<<<<<<<................
> │ > 
> /;;/;;;;;;;;;;;.................................................................
> │ > │ 
> │ > 
> .................///////////////////////////////////<<<<<<<<<<<<...............>
> │ > 
> ///////;;;;;;;;;;;;;;...........................................................
> │ > │ 
> │ > 
> ................>//////////////////////////////////<<<<<<<<<<<<................>
> │ > 
> /////////////;;<<<<<<<<............;;;;;;;;.....................................
> │ > │ 
> │ > 
> ................>//////////////////////////////////<<<<<<<<<<<................>/
> │ > 
> ///////////////<<<<<<<............>//;;/;;<<<<<.................................
> │ > │ 
> │ > 
> ................//////////////////////////////////<<<<<<<<<<<<................>/
> │ > 
> ///////////////<<<<<<<............>///////<<<<..................................
> │ > │ 
> │ > 
> ...............>//////////////////////////////////<<<<<<<<<<<.................//
> │ > 
> //////////////<<<<<<<............>///////<<<<<..................................
> │ > │ 
> │ > 
> ...............//////////////////////////////////<<<<<<<<<<<.................>//
> │ > 
> /////////////<<<<<<<.............>///////<<<<...................................
> │ > │ 
> │ > 
> ...............//////////////////////////////////<<<<<<<<<<<.................///
> │ > 
> /////////////<<<<<<<................////<<<<<...................................
> │ > │ 
> │ > 
> ..............>/////////////////////////////////<<<<<<<<<<<..................///
> │ > 
> ////////////<<<<<<<.............................................................
> │ > │ 
> │ > 
> ............../////////////////////////////////<<<<<<<<<<<......................
> │ > 
> ..//////////<<<<<<<.............................................................
> │ > │ 
> │ > 
> .............//////////////////////////////////<<<<<<<<<<<......................
> │ > 
> ....../////<<<<<................................................................
> │ > │ 
> │ > 
> ..............////////////////////////////////<<<<<<<<<<<.......................
> │ > 
> ........../<....................................................................
> │ > │ 
> │ > 
> ................./////////////////////////////<<<<<<<<<<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................////////////////////////<<<<<<<<<<<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ........................////////////////////<<<<<<<<<<..........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ............................////////////////<<<<<<<.............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................///////////<<<<<<...............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...................................////////<<<<.................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................................///<<....................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...................;;;;;........................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..................>//////;;;;;;;;;;.............................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..................>//////////////;;;;/;;;;;;....................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..................//////////////////////////;;;;;;;;;;..........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..................//////////////////////////////////;/<<<<<<<<<.................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .................>///////////////////////////////////<<<<<<<<<<.................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .................////////////////////////////////////<<<<<<<<<<.................
> │ > 
> ;/;;;;;;;;;;;;;.................................................................
> │ > │ 
> │ > 
> .................///////////////////////////////////<<<<<<<<<<.................>
> │ > 
> ///////;;;;;;;;;;;;;;<..........................................................
> │ > │ 
> │ > 
> ................>///////////////////////////////////<<<<<<<<<<................./
> │ > 
> //////////////;<<<<<<<.............;;;;;;;;.....................................
> │ > │ 
> │ > 
> ................>///////////////////////////////////<<<<<<<<<................../
> │ > 
> ///////////////<<<<<<<............>//;;//;<<<<..................................
> │ > │ 
> │ > 
> ................///////////////////////////////////<<<<<<<<<<.................>/
> │ > 
> ///////////////<<<<<<.............>///////<<<<..................................
> │ > │ 
> │ > 
> ...............>//////////////////////////////////<<<<<<<<<<..................//
> │ > 
> //////////////<<<<<<<.............////////<<<<..................................
> │ > │ 
> │ > 
> ...............>//////////////////////////////////<<<<<<<<<<..................//
> │ > 
> ///////////////<<<<<.............>///////<<<<...................................
> │ > │ 
> │ > 
> ...............///////////////////////////////////<<<<<<<<<..................>//
> │ > 
> /////////////<<<<<<<................/////<<<<...................................
> │ > │ 
> │ > 
> ...............//////////////////////////////////<<<<<<<<<<..................///
> │ > 
> /////////////<<<<<<.............................................................
> │ > │ 
> │ > 
> ..............>//////////////////////////////////<<<<<<<<<......................
> │ > 
> .///////////<<<<<<<.............................................................
> │ > │ 
> │ > 
> ..............>/////////////////////////////////<<<<<<<<<<......................
> │ > 
> ......./////<<<<................................................................
> │ > │ 
> │ > 
> ..............//////////////////////////////////<<<<<<<<<.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...............////////////////////////////////<<<<<<<<<<.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................///////////////////////////<<<<<<<<<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ........................//////////////////////<<<<<<<<..........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ............................./////////////////<<<<<<............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .................................////////////<<<<<..............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................................///////<<<................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..........................................//<<..................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..................;;;...........................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..................//;;;;;;/;;;;;;;;.............................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..................////////////////;;//;;;;;;;;;;;...............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .................>///////////////////////////////;;;/;<<<<<.....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .................>////////////////////////////////////<<<<<<<<..................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................./////////////////////////////////////<<<<<<<<..................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .................////////////////////////////////////<<<<<<<<<.................>
> │ > 
> /;;;;;;;;;;;;;..................................................................
> │ > │ 
> │ > 
> .................////////////////////////////////////<<<<<<<<..................>
> │ > 
> ///////;;;;;;;;/<<<<<<..........................................................
> │ > │ 
> │ > 
> ................>///////////////////////////////////<<<<<<<<<................../
> │ > 
> ////////////////<<<<<<.............;;;;;;;;.....................................
> │ > │ 
> │ > 
> ................>///////////////////////////////////<<<<<<<<.................../
> │ > 
> ///////////////<<<<<<.............>//;;;//<<<<..................................
> │ > │ 
> │ > 
> ................////////////////////////////////////<<<<<<<<..................>/
> │ > 
> ///////////////<<<<<<.............>///////<<<<..................................
> │ > │ 
> │ > 
> ................///////////////////////////////////<<<<<<<<<..................>/
> │ > 
> //////////////<<<<<<..............////////<<<...................................
> │ > │ 
> │ > 
> ................///////////////////////////////////<<<<<<<<...................//
> │ > 
> //////////////<<<<<<..............///////<<<<...................................
> │ > │ 
> │ > 
> ...............>///////////////////////////////////<<<<<<<<...................//
> │ > 
> //////////////<<<<<<................/////<<<<...................................
> │ > │ 
> │ > 
> ...............>//////////////////////////////////<<<<<<<<...................>//
> │ > 
> /////////////<<<<<<.............................................................
> │ > │ 
> │ > 
> ...............///////////////////////////////////<<<<<<<<......................
> │ > 
> .////////////<<<<<<.............................................................
> │ > │ 
> │ > 
> ...............///////////////////////////////////<<<<<<<<......................
> │ > 
> ......../////<<<................................................................
> │ > │ 
> │ > 
> ..............>//////////////////////////////////<<<<<<<<.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..............>//////////////////////////////////<<<<<<<<.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..................//////////////////////////////<<<<<<<<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................./////////////////////////<<<<<<..........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .............................///////////////////<<<<............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...................................////////////<<<<.............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .........................................//////<<...............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ............................................../.................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .................>;;;;;;;;;;;;/;;;;;;;;.........................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .................>////////////////////;;/;;/;;/;;;;;;;;<<.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .................>////////////////////////////////////<<<<<<....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................./////////////////////////////////////<<<<<<<...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................./////////////////////////////////////<<<<<<<...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................./////////////////////////////////////<<<<<<...................;
> │ > 
> ;;;;;/;;;;;;;...................................................................
> │ > │ 
> │ > 
> .................////////////////////////////////////<<<<<<<...................>
> │ > 
> ////////;;;///;;<<<<<...........................................................
> │ > │ 
> │ > 
> ................>////////////////////////////////////<<<<<<<.................../
> │ > 
> ////////////////<<<<<..............;;;;;;;;.....................................
> │ > │ 
> │ > 
> ................>////////////////////////////////////<<<<<<..................../
> │ > 
> ///////////////<<<<<<.............>//;;;;;<<<<..................................
> │ > │ 
> │ > 
> ................>////////////////////////////////////<<<<<<..................../
> │ > 
> ///////////////<<<<<..............>///////<<<<..................................
> │ > │ 
> │ > 
> ................>///////////////////////////////////<<<<<<<...................>/
> │ > 
> ///////////////<<<<<..............>///////<<<...................................
> │ > │ 
> │ > 
> ................////////////////////////////////////<<<<<<<...................>/
> │ > 
> ///////////////<<<<<..............////////<<<...................................
> │ > │ 
> │ > 
> ................////////////////////////////////////<<<<<<....................>/
> │ > 
> ///////////////<<<<<...............///////<<=...................................
> │ > │ 
> │ > 
> ................////////////////////////////////////<<<<<<....................//
> │ > 
> //////////////<<<<<.............................................................
> │ > │ 
> │ > 
> ...............>///////////////////////////////////<<<<<<<...................../
> │ > 
> //////////////<<<<<.............................................................
> │ > │ 
> │ > 
> ...............>///////////////////////////////////<<<<<<.......................
> │ > 
> ........./////<<................................................................
> │ > │ 
> │ > 
> ...............>///////////////////////////////////<<<<<<.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...............>///////////////////////////////////<<<<<<.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...............///////////////////////////////////<<<<<<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................////////////////////////////<<<<<.........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..............................////////////////////<<<...........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...................................../////////////<<............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .............................................////<<.............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .................//////////////////////////////////////<<<......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .................//////////////////////////////////////<<<<.....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................./////////////////////////////////////<<<<<.....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................./////////////////////////////////////<<<<<.....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................./////////////////////////////////////<<<<<....................;
> │ > 
> ;/;;;;;;;;;;....................................................................
> │ > │ 
> │ > 
> ................./////////////////////////////////////<<<<<..................../
> │ > 
> ////////////;;;;<<<<............................................................
> │ > │ 
> │ > 
> ................./////////////////////////////////////<<<<<..................../
> │ > 
> ////////////////<<<<...............;;;;;;;;.....................................
> │ > │ 
> │ > 
> ................>/////////////////////////////////////<<<<<..................../
> │ > 
> ////////////////<<<<..............>//;;;;;<<<<..................................
> │ > │ 
> │ > 
> ................>/////////////////////////////////////<<<<...................../
> │ > 
> ////////////////<<<<..............>///////<<<...................................
> │ > │ 
> │ > 
> ................>////////////////////////////////////<<<<<...................../
> │ > 
> ///////////////<<<<<..............>///////<<<...................................
> │ > │ 
> │ > 
> ................>////////////////////////////////////<<<<<...................../
> │ > 
> ///////////////<<<<<..............>///////<<<...................................
> │ > │ 
> │ > 
> ................>////////////////////////////////////<<<<<...................../
> │ > 
> ///////////////<<<<<..............////////<<....................................
> │ > │ 
> │ > 
> ................>////////////////////////////////////<<<<<....................>/
> │ > 
> ///////////////<<<<.............................................................
> │ > │ 
> │ > 
> ................>////////////////////////////////////<<<<<....................//
> │ > 
> ///////////////<<<<.............................................................
> │ > │ 
> │ > 
> ................>////////////////////////////////////<<<<.......................
> │ > 
> ............///<................................................................
> │ > │ 
> │ > 
> ................>////////////////////////////////////<<<<.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................////////////////////////////////////<<<<<.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................////////////////////////////////////<<<<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .................///////////////////////////////////<<<.........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .............................///////////////////////<<..........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .........................................///////////<...........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................;//////////////////////////////////////<<.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................>//////////////////////////////////////<<<......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................>//////////////////////////////////////<<<......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................>//////////////////////////////////////<<<......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................>//////////////////////////////////////<<<.....................;
> │ > 
> ;;;;;;;;;;;;;;;;<<<.............................................................
> │ > │ 
> │ > 
> .................//////////////////////////////////////<<<...................../
> │ > 
> ////////////////<<<<............................................................
> │ > │ 
> │ > 
> .................//////////////////////////////////////<<<...................../
> │ > 
> ////////////////<<<<...............;;;;;;;;;<...................................
> │ > │ 
> │ > 
> .................//////////////////////////////////////<<<...................../
> │ > 
> ////////////////<<<<..............;;;;;;;;;<<...................................
> │ > │ 
> │ > 
> .................//////////////////////////////////////<<<...................../
> │ > 
> ////////////////<<<<..............>////////<<...................................
> │ > │ 
> │ > 
> ................./////////////////////////////////////<<<<...................../
> │ > 
> ////////////////<<<<..............>////////<<...................................
> │ > │ 
> │ > 
> ................./////////////////////////////////////<<<<...................../
> │ > 
> ////////////////<<<<..............>////////<<...................................
> │ > │ 
> │ > 
> ................./////////////////////////////////////<<<<...................../
> │ > 
> ////////////////<<<<..............////////<<....................................
> │ > │ 
> │ > 
> ................./////////////////////////////////////<<<<...................../
> │ > 
> ////////////////<<<<............................................................
> │ > │ 
> │ > 
> ................./////////////////////////////////////<<<<.....................>
> │ > 
> ////////////////<<..............................................................
> │ > │ 
> │ > 
> ................./////////////////////////////////////<<<.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................./////////////////////////////////////<<<.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................./////////////////////////////////////<<<.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................./////////////////////////////////////<<<.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .................>////////////////////////////////////<<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..........................////////////////////////////<<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................//////<.........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..............................................;;;;;;;;;<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .........................;;;;;;;;;;;;;;;;;;;;;/////////<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................;;;;;;;;;//////////////////////////////<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................///////////////////////////////////////<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................>//////////////////////////////////////<<.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................>//////////////////////////////////////<<.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................>//////////////////////////////////////<<.......................
> │ > 
> ..;;;;;;;;;;;;;;<<<.............................................................
> │ > │ 
> │ > 
> ................>//////////////////////////////////////<<......................;
> │ > 
> ;;//////////////<<<.............................................................
> │ > │ 
> │ > 
> .................//////////////////////////////////////<<....................../
> │ > 
> ////////////////<<<....................;;;;<<...................................
> │ > │ 
> │ > 
> .................//////////////////////////////////////<<....................../
> │ > 
> ////////////////<<<...............;;;;;////<<...................................
> │ > │ 
> │ > 
> .................//////////////////////////////////////<<......................>
> │ > 
> ////////////////<<<...............>////////<<...................................
> │ > │ 
> │ > 
> .................>//////////////////////////////////////<......................>
> │ > 
> ////////////////<<<................////////<<...................................
> │ > │ 
> │ > 
> .................>//////////////////////////////////////<......................>
> │ > 
> /////////////////<<<...............////////<<...................................
> │ > │ 
> │ > 
> .................>//////////////////////////////////////<......................>
> │ > 
> /////////////////<<<.............../////////....................................
> │ > │ 
> │ > 
> .................>//////////////////////////////////////<.......................
> │ > 
> /////////////////<<<............................................................
> │ > │ 
> │ > 
> ..................//////////////////////////////////////<.......................
> │ > 
> /////////////////<<.............................................................
> │ > │ 
> │ > 
> ..................//////////////////////////////////////<<......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..................//////////////////////////////////////<<......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..................//////////////////////////////////////<<......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..................>/////////////////////////////////////<<......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..................>/////////////////////////////////////<.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..................//////////////////////////////////////<.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................................................<.........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .........................................;;;;;;;;;;;;;<.........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...........................;;;;;;;;;;;;;;//////////////<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...............;;;;;;;;;;;;;///////////////////////////<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...............>///////////////////////////////////////<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................///////////////////////////////////////<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................///////////////////////////////////////<<.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................>///////////////////////////////////////<.......................
> │ > 
> ....;;;;;;;;;;;;<<..............................................................
> │ > │ 
> │ > 
> ................>///////////////////////////////////////<......................;
> │ > 
> ;;;;////////////<<..............................................................
> │ > │ 
> │ > 
> .................///////////////////////////////////////<....................../
> │ > 
> ////////////////<<<....................;;;<<....................................
> │ > │ 
> │ > 
> .................///////////////////////////////////////<....................../
> │ > 
> /////////////////<<...............;;;;;////<<...................................
> │ > │ 
> │ > 
> .................>//////////////////////////////////////<<.....................>
> │ > 
> /////////////////<<...............>////////<<...................................
> │ > │ 
> │ > 
> .................>///////////////////////////////////////<.....................>
> │ > 
> /////////////////<<................////////<<...................................
> │ > │ 
> │ > 
> ..................///////////////////////////////////////<......................
> │ > 
> /////////////////<<................////////<<...................................
> │ > │ 
> │ > 
> ..................///////////////////////////////////////<......................
> │ > 
> /////////////////<<<...............>////////....................................
> │ > │ 
> │ > 
> ..................>//////////////////////////////////////<......................
> │ > 
> >/////////////////<<............................................................
> │ > │ 
> │ > 
> ..................>///////////////////////////////////////<.....................
> │ > 
> >/////////////////<.............................................................
> │ > │ 
> │ > 
> ...................///////////////////////////////////////<.....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...................///////////////////////////////////////<.....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...................>//////////////////////////////////////<.....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...................>//////////////////////////////////////<.....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...................>///////////////////////////////////////<....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................////////////////////////////................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .................................................;;;;;<.........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................................;;;;;;;;;;/////<.........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .............................;;;;;;;;;;///////////////<<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...................;;;;;;;;;;//////////////////////////<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...............;;;;////////////////////////////////////<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...............>///////////////////////////////////////<<.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...............>////////////////////////////////////////<.......................
> │ > 
> ................<...............................................................
> │ > │ 
> │ > 
> ................////////////////////////////////////////<.......................
> │ > 
> .....;;;;;;;;;;;<...............................................................
> │ > │ 
> │ > 
> ................>///////////////////////////////////////<<....................;;
> │ > 
> ;;;;;///////////<<..............................................................
> │ > │ 
> │ > 
> .................////////////////////////////////////////<...................../
> │ > 
> ////////////////<<.....................;;;<<....................................
> │ > │ 
> │ > 
> .................>///////////////////////////////////////<...................../
> │ > 
> /////////////////<................;;;;;////<....................................
> │ > │ 
> │ > 
> .................>///////////////////////////////////////<<....................>
> │ > 
> /////////////////<<...............>////////<<...................................
> │ > │ 
> │ > 
> ..................////////////////////////////////////////<.....................
> │ > 
> /////////////////<<................////////<<...................................
> │ > │ 
> │ > 
> ..................>///////////////////////////////////////<.....................
> │ > 
> //////////////////<................>////////<...................................
> │ > │ 
> │ > 
> ..................>///////////////////////////////////////<<....................
> │ > 
> >/////////////////<<................//////......................................
> │ > │ 
> │ > 
> ...................////////////////////////////////////////<....................
> │ > 
> .//////////////////<............................................................
> │ > │ 
> │ > 
> ...................>///////////////////////////////////////<....................
> │ > 
> .>///////////////...............................................................
> │ > │ 
> │ > 
> ...................>///////////////////////////////////////<<...................
> │ > 
> .///............................................................................
> │ > │ 
> │ > 
> ....................////////////////////////////////////////<...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................>///////////////////////////////////////<...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................>///////////////////////////////////////<<..................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...................../////////////////////////////////////......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................>/////////////////////.....................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................///////...................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................................................<..........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..............................................;;;;;;;<<.........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................................;;;;;;;;;////////<.........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .............................;;;;;;;;;////////////////<<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................;;;;;;;//////////////////////////<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...............;;;;;;;/////////////////////////////////<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .............../////////////////////////////////////////<.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...............>////////////////////////////////////////<.......................
> │ > 
> .............;;;<...............................................................
> │ > │ 
> │ > 
> ................/////////////////////////////////////////<......................
> │ > 
> .....;;;;;;;;///<...............................................................
> │ > │ 
> │ > 
> ................>////////////////////////////////////////<....................;;
> │ > 
> ;;;;;///////////<<..............................................................
> │ > │ 
> │ > 
> ................./////////////////////////////////////////<...................>/
> │ > 
> /////////////////<.....................;;;<<....................................
> │ > │ 
> │ > 
> .................>////////////////////////////////////////<..................../
> │ > 
> /////////////////<<...............;;;;;////<....................................
> │ > │ 
> │ > 
> ................../////////////////////////////////////////<...................>
> │ > 
> //////////////////<...............>////////<<...................................
> │ > │ 
> │ > 
> ..................>////////////////////////////////////////<....................
> │ > 
> //////////////////<................/////////<...................................
> │ > │ 
> │ > 
> ..................>////////////////////////////////////////<<...................
> │ > 
> >//////////////////<...............>////////<...................................
> │ > │ 
> │ > 
> ...................>////////////////////////////////////////<...................
> │ > 
> .//////////////////<................/////=......................................
> │ > │ 
> │ > 
> ...................>////////////////////////////////////////<<..................
> │ > 
> .>/////////////////<<...........................................................
> │ > │ 
> │ > 
> ....................>////////////////////////////////////////<..................
> │ > 
> ../////////////.................................................................
> │ > │ 
> │ > 
> ....................>////////////////////////////////////////<<.................
> │ > 
> ..>///..........................................................................
> │ > │ 
> │ > 
> ...................../////////////////////////////////////////<.................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................>////////////////////////////////////////<.................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................///////////////////////////////////////...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................>/////////////////////////////............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................////////////////////.....................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................>//////////..............................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..................................................;;;<..........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ............................................;;;;;;///<..........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................................;;;;;;;/////////<<.........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..............................;;;;;;;/////////////////<<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................;;;;;;;/////////////////////////<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .................;;;;;;;///////////////////////////////<<.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..............;;;///////////////////////////////////////<.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...............//////////////////////////////////////////<......................
> │ > 
> ............;;;<................................................................
> │ > │ 
> │ > 
> ...............>/////////////////////////////////////////<<.....................
> │ > 
> .....;;;;;;;////<...............................................................
> │ > │ 
> │ > 
> ................>/////////////////////////////////////////<....................;
> │ > 
> ;;;;;///////////<<..............................................................
> │ > │ 
> │ > 
> ................./////////////////////////////////////////<<..................;/
> │ > 
> /////////////////<.....................;;;<<....................................
> │ > │ 
> │ > 
> .................>/////////////////////////////////////////<.................../
> │ > 
> /////////////////<<...............;;;;;////<....................................
> │ > │ 
> │ > 
> ..................//////////////////////////////////////////<...................
> │ > 
> //////////////////<<..............>////////<<...................................
> │ > │ 
> │ > 
> ..................>/////////////////////////////////////////<<..................
> │ > 
> >//////////////////<...............>////////<...................................
> │ > │ 
> │ > 
> ...................>/////////////////////////////////////////<..................
> │ > 
> .//////////////////<<...............////////<<..................................
> │ > │ 
> │ > 
> ..................../////////////////////////////////////////<<.................
> │ > 
> .>//////////////////<...............>////.......................................
> │ > │ 
> │ > 
> ....................>/////////////////////////////////////////<.................
> │ > 
> ..///////////////////...........................................................
> │ > │ 
> │ > 
> ...................../////////////////////////////////////////<<................
> │ > 
> ..>////////////.................................................................
> │ > │ 
> │ > 
> .....................>/////////////////////////////////////////<................
> │ > 
> ...>////........................................................................
> │ > │ 
> │ > 
> ......................>/////////////////////////////////////////<...............
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................./////////////////////////////////////////................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................>/////////////////////////////////.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ........................//////////////////////////..............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ........................>//////////////////.....................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .........................>//////////............................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..........................////..................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................;;;/;...........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..........................................;;;;/;//////..........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................................;;;;///////////////.........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...............................;;/;;///////////////////<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .........................;;;;/;/////////////////////////........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...................;;;;//;///////////////////////////////.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..............;;/;;//////////////////////////////////////<......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..............>>//////////////////////////////////////////......................
> │ > 
> ...........;;;//................................................................
> │ > │ 
> │ > 
> ...............>>//////////////////////////////////////////.....................
> │ > 
> ......;;/////////...............................................................
> │ > │ 
> │ > 
> ................>///////////////////////////////////////////....................
> │ > 
> ;;;///////////////..............................................................
> │ > │ 
> │ > 
> .................>//////////////////////////////////////////<.................;>
> │ > 
> //////////////////<...................;;///<....................................
> │ > │ 
> │ > 
> .................>>//////////////////////////////////////////..................>
> │ > 
> ///////////////////...............;;;;//////....................................
> │ > │ 
> │ > 
> ..................>>//////////////////////////////////////////..................
> │ > 
> >///////////////////...............>/////////...................................
> │ > │ 
> │ > 
> ...................>//////////////////////////////////////////<.................
> │ > 
> >>///////////////////..............>>////////<..................................
> │ > │ 
> │ > 
> ....................>//////////////////////////////////////////.................
> │ > 
> .>>//////////////////...............>>////////..................................
> │ > │ 
> │ > 
> ....................>>//////////////////////////////////////////................
> │ > 
> ..>///////////////////...............>///.......................................
> │ > │ 
> │ > 
> .....................>///////////////////////////////////////////...............
> │ > 
> ...>////////////////............................................................
> │ > │ 
> │ > 
> ......................>//////////////////////////////////////////<..............
> │ > 
> ...>>/////////..................................................................
> │ > │ 
> │ > 
> ......................>>//////////////////////////////////////////..............
> │ > 
> ....>////.......................................................................
> │ > │ 
> │ > 
> .......................>>/////////////////////////////////////////..............
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ........................>>//////////////////////////////////....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .........................>////////////////////////////..........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .........................>>//////////////////////...............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..........................>>////////////////....................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...........................>///////////.........................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ............................>////...............................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...................................................;............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..............................................;/;;///...........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .........................................;;;//////////..........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................................;;;///////////////<.........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...............................;;;/;///////////////////<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..........................;;;/;/////////////////////////<.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................;;/////////////////////////////////.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .................;;;//////////////////////////////////////......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..............;>///////////////////////////////////////////.....................
> │ > 
> ...........;;;;/................................................................
> │ > │ 
> │ > 
> ...............>///////////////////////////////////////////<....................
> │ > 
> ......;;/////////...............................................................
> │ > │ 
> │ > 
> ................>///////////////////////////////////////////<...................
> │ > 
> .;;;//////////////..............................................................
> │ > │ 
> │ > 
> .................>///////////////////////////////////////////<................;>
> │ > 
> ///////////////////...................;;///<....................................
> │ > │ 
> │ > 
> .................>>///////////////////////////////////////////.................>
> │ > 
> >///////////////////..............;;;;//////....................................
> │ > │ 
> │ > 
> ..................>>///////////////////////////////////////////.................
> │ > 
> >///////////////////<.............>>/////////...................................
> │ > │ 
> │ > 
> ...................>>///////////////////////////////////////////................
> │ > 
> .>///////////////////<.............>>/////////..................................
> │ > │ 
> │ > 
> ....................>>///////////////////////////////////////////...............
> │ > 
> .>>///////////////////..............>>////////..................................
> │ > │ 
> │ > 
> .....................>///////////////////////////////////////////<..............
> │ > 
> ..>>///////////////////..............>////......................................
> │ > │ 
> │ > 
> ......................>///////////////////////////////////////////<.............
> │ > 
> ...>>//////////////.............................................................
> │ > │ 
> │ > 
> .......................>///////////////////////////////////////////.............
> │ > 
> ....>>////////..................................................................
> │ > │ 
> │ > 
> ........................>//////////////////////////////////////////.............
> │ > 
> .....>////......................................................................
> │ > │ 
> │ > 
> ........................>>/////////////////////////////////////.................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .........................>>///////////////////////////////......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..........................>>//////////////////////////..........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...........................>>////////////////////...............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ............................>>///////////////...................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .............................>>/////////........................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..............................>/////............................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .............................../................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................;;/<............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ............................................;;//////<...........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ........................................;;;//////////<..........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................................;/;;//////////////<.........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................;;/////////////////////<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...........................;;//;////////////////////////........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................;;;///////////////////////////////<......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...................;/;////////////////////////////////////<.....................
> │ > 
> ..............;.................................................................
> │ > │ 
> │ > 
> ..............;;;;/////////////////////////////////////////<....................
> │ > 
> ..........;/////................................................................
> │ > │ 
> │ > 
> ..............;>////////////////////////////////////////////<...................
> │ > 
> ......;;;;///////...............................................................
> │ > │ 
> │ > 
> ................>////////////////////////////////////////////<..................
> │ > 
> ..;///////////////..............................................................
> │ > │ 
> │ > 
> .................>////////////////////////////////////////////.................;
> │ > 
> ;//////////////////...................;;;//<....................................
> │ > │ 
> │ > 
> ..................>////////////////////////////////////////////................>
> │ > 
> >///////////////////..............;;;///////<...................................
> │ > │ 
> │ > 
> ...................>////////////////////////////////////////////<..............>
> │ > 
> >>///////////////////.............>>/////////<..................................
> │ > │ 
> │ > 
> ....................>////////////////////////////////////////////<..............
> │ > 
> >>>///////////////////.............>>/////////..................................
> │ > │ 
> │ > 
> .....................>////////////////////////////////////////////<.............
> │ > 
> .>>>///////////////////.............>>////////..................................
> │ > │ 
> │ > 
> ......................>////////////////////////////////////////////<............
> │ > 
> ..>>>/////////////////...............>>///......................................
> │ > │ 
> │ > 
> .......................>////////////////////////////////////////////............
> │ > 
> ...>>>////////////..............................................................
> │ > │ 
> │ > 
> ........................>///////////////////////////////////////////............
> │ > 
> ....>>>///////..................................................................
> │ > │ 
> │ > 
> .........................>>/////////////////////////////////////................
> │ > 
> .....>>////.....................................................................
> │ > │ 
> │ > 
> ..........................>/////////////////////////////////....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...........................>>////////////////////////////.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ............................>>///////////////////////...........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .............................>////////////////////..............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..............................>>//////////////..................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...............................>>/////////......................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................>>////..........................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .................................>/.............................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...............................................;;;/.............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...........................................;;;//////............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................................;;;///////////...........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................................;;////////////////..........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................;;;////////////////////<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ............................;;/;////////////////////////<.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .........................;;//////////////////////////////<......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................;/////////////////////////////////////.....................
> │ > 
> .............;;.................................................................
> │ > │ 
> │ > 
> .................;/;////////////////////////////////////////....................
> │ > 
> ..........;;////................................................................
> │ > │ 
> │ > 
> ...............;/////////////////////////////////////////////...................
> │ > 
> ......;;;////////...............................................................
> │ > │ 
> │ > 
> ...............>>/////////////////////////////////////////////..................
> │ > 
> ...;//////////////<.............................................................
> │ > │ 
> │ > 
> ................>>/////////////////////////////////////////////................;
> │ > 
> ;///////////////////..................;;;//<....................................
> │ > │ 
> │ > 
> ..................>>////////////////////////////////////////////<.............;;
> │ > 
> >////////////////////..............;/////////...................................
> │ > │ 
> │ > 
> ...................>>////////////////////////////////////////////<............\>
> │ > 
> >>////////////////////............;>//////////..................................
> │ > │ 
> │ > 
> ....................>>////////////////////////////////////////////<.............
> │ > 
> >>>////////////////////...........\>>//////////.................................
> │ > │ 
> │ > 
> .....................>>/////////////////////////////////////////////............
> │ > 
> .>>>////////////////////............>>>//////...................................
> │ > │ 
> │ > 
> .......................>/////////////////////////////////////////////...........
> │ > 
> ..>>>////////////////................>>///......................................
> │ > │ 
> │ > 
> ........................>////////////////////////////////////////////...........
> │ > 
> ...>>>////////////..............................................................
> │ > │ 
> │ > 
> .........................>>///////////////////////////////////////..............
> │ > 
> ....>>>>///////.................................................................
> │ > │ 
> │ > 
> ..........................>>///////////////////////////////////.................
> │ > 
> .....\>>>///....................................................................
> │ > │ 
> │ > 
> ...........................>>//////////////////////////////.....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ............................>>//////////////////////////........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .............................>>//////////////////////...........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...............................>//////////////////..............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................>>/////////////.................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .................................>>/////////....................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..................................>>/////.......................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...................................>//..........................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .............................................;;///..............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..........................................;;;//////<............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................................;////////////<...........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................................;/////////////////..........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................;;;////////////////////<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .............................;;;////////////////////////<.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..........................;///////////////////////////////......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................;;///////////////////////////////////.....................
> │ > 
> .............;/.................................................................
> │ > │ 
> │ > 
> ...................;;;//////////////////////////////////////<...................
> │ > 
> ..........;;////................................................................
> │ > │ 
> │ > 
> ................;;////////////////////////////////////////////..................
> │ > 
> ......;;;////////...............................................................
> │ > │ 
> │ > 
> ...............;>//////////////////////////////////////////////.................
> │ > 
> ...;;//////////////......................<......................................
> │ > │ 
> │ > 
> ................>>//////////////////////////////////////////////................
> │ > 
> ;///////////////////..................;;;//<....................................
> │ > │ 
> │ > 
> .................>>>//////////////////////////////////////////////............;;
> │ > 
> >////////////////////..............;;;///////...................................
> │ > │ 
> │ > 
> ..................>>>//////////////////////////////////////////////...........>>
> │ > 
> >>////////////////////<..........;;;>/////////..................................
> │ > │ 
> │ > 
> ...................>>>//////////////////////////////////////////////...........>
> │ > 
> >>>/////////////////////..........>>>>/////////.................................
> │ > │ 
> │ > 
> .....................>>>/////////////////////////////////////////////<..........
> │ > 
> >>>>>//////////////////............>>>>//////...................................
> │ > │ 
> │ > 
> ......................>>>////////////////////////////////////////////...........
> │ > 
> .\>>>>///////////////................>>>//......................................
> │ > │ 
> │ > 
> ........................>>>////////////////////////////////////////.............
> │ > 
> ...>>>>///////////..............................................................
> │ > │ 
> │ > 
> .........................>>>////////////////////////////////////................
> │ > 
> ....>>>>>//////.................................................................
> │ > │ 
> │ > 
> ..........................>>>////////////////////////////////...................
> │ > 
> ......>>>>//....................................................................
> │ > │ 
> │ > 
> ............................>>>////////////////////////////.....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .............................>>>////////////////////////........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..............................>>>////////////////////...........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................>>>////////////////.............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .................................>>>////////////................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...................................>>>////////..................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................................>>>////.....................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................................>//.......................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...............................................;<...............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ............................................;;;//<..............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..........................................;;///////<............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................................;////////////<...........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................................;/////////////////..........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .................................;/////////////////////<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..............................;;/////////////////////////.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...........................;;/////////////////////////////......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ........................;;//////////////////////////////////....................
> │ > 
> ............;;<.................................................................
> │ > │ 
> │ > 
> .....................;;//////////////////////////////////////...................
> │ > 
> .........;//////................................................................
> │ > │ 
> │ > 
> ..................;///////////////////////////////////////////<.................
> │ > 
> .......;//////////..............................................................
> │ > │ 
> │ > 
> ................;///////////////////////////////////////////////................
> │ > 
> ....;;/////////////......................;......................................
> │ > │ 
> │ > 
> ................>>>//////////////////////////////////////////////<..............
> │ > 
> .;;/////////////////<.................;;///<....................................
> │ > │ 
> │ > 
> ................>>>>///////////////////////////////////////////////............;
> │ > 
> >/////////////////////.............;;////////...................................
> │ > │ 
> │ > 
> ................;>>>>>//////////////////////////////////////////////<........;;>
> │ > 
> >>/////////////////////<.........;;;>/////////<.................................
> │ > │ 
> │ > 
> ..................>>>>>//////////////////////////////////////////////<........>>
> │ > 
> >>>>////////////////////..........>>>>/////////.................................
> │ > │ 
> │ > 
> ...................>>>>>//////////////////////////////////////////////..........
> │ > 
> >>>>>//////////////////............>>>>>/////...................................
> │ > │ 
> │ > 
> .....................>>>>>//////////////////////////////////////////............
> │ > 
> .>>>>>>/////////////.................>>>>/......................................
> │ > │ 
> │ > 
> ......................>>>>>>/////////////////////////////////////...............
> │ > 
> ...>>>>>//////////..............................................................
> │ > │ 
> │ > 
> ........................>>>>>//////////////////////////////////.................
> │ > 
> ....>>>>>>/////.................................................................
> │ > │ 
> │ > 
> ..........................>>>>>//////////////////////////////...................
> │ > 
> ......>>>>>//...................................................................
> │ > │ 
> │ > 
> ...........................>>>>>///////////////////////////.....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .............................>>>>>///////////////////////.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..............................>>>>>///////////////////..........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................>>>>>///////////////............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .................................>>>>>>///////////..............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...................................=>>>>///////.................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................................>>>>///...................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ........................................=>/.....................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..............................................;/................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ............................................;////...............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .........................................;;///////<.............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................................;;////////////............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................................;;///////////////<..........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .................................;/////////////////////<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..............................;;;////////////////////////.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ............................;/////////////////////////////<.....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .........................;;/////////////////////////////////....................
> │ > 
> ...........;;/..................................................................
> │ > │ 
> │ > 
> .......................;;/////////////////////////////////////..................
> │ > 
> .........;;/////................................................................
> │ > │ 
> │ > 
> ....................;;/////////////////////////////////////////.................
> │ > 
> .......;//////////..............................................................
> │ > │ 
> │ > 
> ..................;;/////////////////////////////////////////////...............
> │ > 
> ....;;/////////////......................;......................................
> │ > │ 
> │ > 
> ................;;>///////////////////////////////////////////////<.............
> │ > 
> ..;;/////////////////.................;;///<....................................
> │ > │ 
> │ > 
> ................;>>>////////////////////////////////////////////////...........;
> │ > 
> ;/////////////////////.............\;////////<..................................
> │ > │ 
> │ > 
> ................>>>>>>///////////////////////////////////////////////<.......;;;
> │ > 
> >>>/////////////////////.........;;;>//////////.................................
> │ > │ 
> │ > 
> ................>>>>>>>>//////////////////////////////////////////////.......>>>
> │ > 
> >>>>////////////////////.........>>>>>>////////.................................
> │ > │ 
> │ > 
> ..................>>>>>>>>//////////////////////////////////////////...........>
> │ > 
> >>>>>>////////////////.............>>>>>/////...................................
> │ > │ 
> │ > 
> ...................\>>>>>>>///////////////////////////////////////..............
> │ > 
> .>>>>>>>////////////.................>>>>//.....................................
> │ > │ 
> │ > 
> .....................>>>>>>>>///////////////////////////////////................
> │ > 
> ..>>>>>>>/////////..............................................................
> │ > │ 
> │ > 
> .......................>>>>>>>>///////////////////////////////..................
> │ > 
> ....>>>>>>>/////................................................................
> │ > │ 
> │ > 
> .........................>>>>>>>/////////////////////////////...................
> │ > 
> ......>>>>>>//..................................................................
> │ > │ 
> │ > 
> ..........................>>>>>>>>/////////////////////////.....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ............................>>>>>>>>/////////////////////.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..............................>>>>>>>>/////////////////.........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................>>>>>>>//////////////...........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .................................>>>>>>>>//////////.............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................................>>>>>>>//////...............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ........................................>>>>///.................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...........................................>>/..................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .............................................;/.................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...........................................;;////...............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ........................................;;////////<.............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................................;/////////////............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................................;/////////////////..........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .................................;;////////////////////<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...............................;/////////////////////////.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .............................;/////////////////////////////.....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..........................;;////////////////////////////////<...................
> │ > 
> ...........;;/..................................................................
> │ > │ 
> │ > 
> ........................;;////////////////////////////////////..................
> │ > 
> ........;;//////................................................................
> │ > │ 
> │ > 
> ......................;/////////////////////////////////////////................
> │ > 
> ......;;//////////..............................................................
> │ > │ 
> │ > 
> ...................;;////////////////////////////////////////////<..............
> │ > 
> ....;;;////////////<....................;;......................................
> │ > │ 
> │ > 
> .................;;////////////////////////////////////////////////<............
> │ > 
> ..;;/////////////////................;;;////....................................
> │ > │ 
> │ > 
> ................;;>>>////////////////////////////////////////////////...........
> │ > 
> ;;/////////////////////............\;;///////<..................................
> │ > │ 
> │ > 
> ................;>>>>>>///////////////////////////////////////////////.......;;;
> │ > 
> ;>>/////////////////////.........;;;>//////////.................................
> │ > │ 
> │ > 
> ...............;>>>>>>>>/////////////////////////////////////////////........;>>
> │ > 
> >>>>>///////////////////.........;>>>>>////////.................................
> │ > │ 
> │ > 
> ................>>>>>>>>>>/////////////////////////////////////////...........>>
> │ > 
> >>>>>>>///////////////.............>>>>>>////...................................
> │ > │ 
> │ > 
> ..................>>>>>>>>>>>////////////////////////////////////...............
> │ > 
> >>>>>>>>>///////////................\>>>>>/.....................................
> │ > │ 
> │ > 
> ....................>>>>>>>>>>//////////////////////////////////................
> │ > 
> ..>>>>>>>>////////..............................................................
> │ > │ 
> │ > 
> ......................>>>>>>>>>>//////////////////////////////..................
> │ > 
> ....>>>>>>>>////................................................................
> │ > │ 
> │ > 
> ........................>>>>>>>>>>///////////////////////////...................
> │ > 
> ......>>>>>>>//.................................................................
> │ > │ 
> │ > 
> ..........................>>>>>>>>>>///////////////////////.....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ............................>>>>>>>>>>///////////////////.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..............................>>>>>>>>>>////////////////........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................>>>>>>>>>>////////////..........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..................................>>>>>>>>>>////////............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................................=>>>>>>>>>/////.............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..........................................>>>>>//...............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .............................................../................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ............................................;;..................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..........................................;;////................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ........................................;;////////..............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................................;////////////<............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................................;////////////////<..........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..................................;////////////////////<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................;////////////////////////<......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..............................;////////////////////////////.....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ............................;////////////////////////////////...................
> │ > 
> ..........;;//..................................................................
> │ > │ 
> │ > 
> ..........................;////////////////////////////////////.................
> │ > 
> ........;;//////................................................................
> │ > │ 
> │ > 
> ........................;///////////////////////////////////////<...............
> │ > 
> .....;;;//////////..............................................................
> │ > │ 
> │ > 
> ......................;///////////////////////////////////////////<.............
> │ > 
> ...\;;//////////////....................;<......................................
> │ > │ 
> │ > 
> ....................;;//////////////////////////////////////////////<...........
> │ > 
> ..;;;/////////////////...............;;;///<....................................
> │ > │ 
> │ > 
> ..................;;>////////////////////////////////////////////////...........
> │ > 
> ;;;/////////////////////...........;;;///////<..................................
> │ > │ 
> │ > 
> ................;;>>>>>//////////////////////////////////////////////.........;;
> │ > 
> ;;>/////////////////////..........;;;//////////.................................
> │ > │ 
> │ > 
> ...............;;>>>>>>>>//////////////////////////////////////////.........\;;>
> │ > 
> >>>>>//////////////////..........;;>>>>////////.................................
> │ > │ 
> │ > 
> ..............;>>>>>>>>>>>>///////////////////////////////////////...........>>>
> │ > 
> >>>>>>>///////////////.............>>>>>>////...................................
> │ > │ 
> │ > 
> ................>>>>>>>>>>>>>////////////////////////////////////...............
> │ > 
> >>>>>>>>>>//////////.................>>>>>/.....................................
> │ > │ 
> │ > 
> ..................>>>>>>>>>>>>>>///////////////////////////////.................
> │ > 
> .\>>>>>>>>>////////...................=.........................................
> │ > │ 
> │ > 
> ....................\>>>>>>>>>>>>>////////////////////////////..................
> │ > 
> ....>>>>>>>>>////...............................................................
> │ > │ 
> │ > 
> .......................>>>>>>>>>>>>>/////////////////////////...................
> │ > 
> ......>>>>>>>>>/................................................................
> │ > │ 
> │ > 
> .........................>>>>>>>>>>>>>/////////////////////.....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...........................>>>>>>>>>>>>>//////////////////......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .............................>>>>>>>>>>>>>///////////////.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...............................>>>>>>>>>>>>>>//////////.........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..................................>>>>>>>>>>>>>///////..........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................................=>>>>>>>>>>>>////...........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ............................................=>>>>>/.............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...........................................;/<..................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .........................................;;////<................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................................;;////////<..............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................................;;////////////<............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...................................;;;///////////////<..........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .................................;;////////////////////<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................;;///////////////////////<......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..............................;;///////////////////////////<....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ............................;;///////////////////////////////<..................
> │ > 
> ..........;;//..................................................................
> │ > │ 
> │ > 
> ..........................;;;//////////////////////////////////.................
> │ > 
> .......;;;//////................................................................
> │ > │ 
> │ > 
> .........................;;//////////////////////////////////////...............
> │ > 
> .....;;;//////////..............................................................
> │ > │ 
> │ > 
> .......................;;//////////////////////////////////////////<............
> │ > 
> ...;;;;/////////////....................;/......................................
> │ > │ 
> │ > 
> .....................;;//////////////////////////////////////////////...........
> │ > 
> .;;;;/////////////////...............;;;////....................................
> │ > │ 
> │ > 
> ...................;;;///////////////////////////////////////////////...........
> │ > 
> ;;;;////////////////////...........;;;////////..................................
> │ > │ 
> │ > 
> ..................;;>>>>////////////////////////////////////////////..........;;
> │ > 
> ;;;>////////////////////..........;;;//////////.................................
> │ > │ 
> │ > 
> ................;;>>>>>>>>////////////////////////////////////////...........;;;
> │ > 
> >>>>>>/////////////////..........;;>>>>///////..................................
> │ > │ 
> │ > 
> ..............;;>>>>>>>>>>>>/////////////////////////////////////...........;>>>
> │ > 
> >>>>>>>>/////////////.............>>>>>>>>///...................................
> │ > │ 
> │ > 
> ..............>>>>>>>>>>>>>>>>>/////////////////////////////////...............>
> │ > 
> >>>>>>>>>>//////////................\>>>>>>/....................................
> │ > │ 
> │ > 
> ................\>>>>>>>>>>>>>>>>//////////////////////////////.................
> │ > 
> .>>>>>>>>>>>///////....................=........................................
> │ > │ 
> │ > 
> ...................>>>>>>>>>>>>>>>>///////////////////////////..................
> │ > 
> ...>>>>>>>>>>>>///..............................................................
> │ > │ 
> │ > 
> .....................\>>>>>>>>>>>>>>>>///////////////////////...................
> │ > 
> ......>>>>>>>>>>................................................................
> │ > │ 
> │ > 
> ........................>>>>>>>>>>>>>>>>////////////////////....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..........................>>>>>>>>>>>>>>>>/////////////////.....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .............................>>>>>>>>>>>>>>>>/////////////......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...............................>>>>>>>>>>>>>>>>/////////........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..................................>>>>>>>>>>>>>>>>/////.........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................................=>>>>>>>>>>>>>>>//..........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .................................................>>>>...........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..........................................;//...................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ........................................;;/////.................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................................;;/////////...............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................................;;;////////////.............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..................................;;;////////////////...........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................;;;;///////////////////<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..............................;;;;///////////////////////<......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .............................;;;;//////////////////////////<....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...........................;;;;///////////////////////////////..................
> │ > 
> .........;;;//..................................................................
> │ > │ 
> │ > 
> ..........................;;;;//////////////////////////////////................
> │ > 
> ......;;;;//////................................................................
> │ > │ 
> │ > 
> ........................;;;;//////////////////////////////////////..............
> │ > 
> ....;;;;;/////////..............................................................
> │ > │ 
> │ > 
> ......................;;;;;/////////////////////////////////////////............
> │ > 
> ...;;;;/////////////<..................<;<......................................
> │ > │ 
> │ > 
> .....................;;;;///////////////////////////////////////////............
> │ > 
> .;;;;;/////////////////..............;;;////....................................
> │ > │ 
> │ > 
> ...................;;;;;////////////////////////////////////////////............
> │ > 
> ;;;;////////////////////...........;;;;///////..................................
> │ > │ 
> │ > 
> ..................;;;;;>///////////////////////////////////////////...........;;
> │ > 
> ;;;>////////////////////..........;;;//////////.................................
> │ > │ 
> │ > 
> ................;;;;;>>>>>////////////////////////////////////////...........;;;
> │ > 
> ;;>>>>/////////////////..........;;;>>>>//////..................................
> │ > │ 
> │ > 
> ...............;;;>>>>>>>>>>>////////////////////////////////////...........;;>>
> │ > 
> >>>>>>>>>/////////////............>>>>>>>>///...................................
> │ > │ 
> │ > 
> .............;;;>>>>>>>>>>>>>>>>////////////////////////////////..............>>
> │ > 
> >>>>>>>>>>>/////////................>>>>>>>/....................................
> │ > │ 
> │ > 
> ..............\>>>>>>>>>>>>>>>>>>>/////////////////////////////.................
> │ > 
> .>>>>>>>>>>>>>/////....................>........................................
> │ > │ 
> │ > 
> .................>>>>>>>>>>>>>>>>>>>>/////////////////////////..................
> │ > 
> ...>>>>>>>>>>>>>//..............................................................
> │ > │ 
> │ > 
> ....................>>>>>>>>>>>>>>>>>>>>/////////////////////...................
> │ > 
> ......>>>>>>>>>>>...............................................................
> │ > │ 
> │ > 
> .......................>>>>>>>>>>>>>>>>>>>//////////////////....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..........................>>>>>>>>>>>>>>>>>>>//////////////.....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ............................>>>>>>>>>>>>>>>>>>>>///////////.....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...............................>>>>>>>>>>>>>>>>>>>////////......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..................................>>>>>>>>>>>>>>>>>>>////.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................................>>>>>>>>>>>>>>>>>>/........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .........................................;;/....................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................................;;/////<.................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................................;;;/////////...............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...................................;;;;////////////.............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .................................;;;;;///////////////...........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...............................;;;;;///////////////////<........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .............................;;;;;;//////////////////////<......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...........................;;;;;;;//////////////////////////....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..........................;;;;;;//////////////////////////////..................
> │ > 
> .........;;//<..................................................................
> │ > │ 
> │ > 
> .........................;;;;;;/////////////////////////////////................
> │ > 
> ......;;;;//////................................................................
> │ > │ 
> │ > 
> .......................;;;;;;;////////////////////////////////////<.............
> │ > 
> ...;;;;;;/////////<.............................................................
> │ > │ 
> │ > 
> ......................;;;;;;;///////////////////////////////////////............
> │ > 
> ..;;;;;//////////////..................;;.......................................
> │ > │ 
> │ > 
> .....................;;;;;;////////////////////////////////////////.............
> │ > 
> .;;;;;;////////////////.............;;;;////....................................
> │ > │ 
> │ > 
> ...................;;;;;;;////////////////////////////////////////..............
> │ > 
> ;;;;;;//////////////////...........;;;;///////<.................................
> │ > │ 
> │ > 
> ..................;;;;;;;/////////////////////////////////////////............\;
> │ > 
> ;;;;///////////////////...........;;;;/////////.................................
> │ > │ 
> │ > 
> .................;;;;;;;>>>//////////////////////////////////////............;;;
> │ > 
> ;;;>>>>///////////////...........;;;;>>>//////..................................
> │ > │ 
> │ > 
> ...............;;;;;;>>>>>>>>>>/////////////////////////////////............;;;>
> │ > 
> >>>>>>>>>////////////............\>>>>>>>>>//...................................
> │ > │ 
> │ > 
> ..............;;;;>>>>>>>>>>>>>>>///////////////////////////////.............>>>
> │ > 
> >>>>>>>>>>>>/////////...............>>>>>>>>....................................
> │ > │ 
> │ > 
> .............;;>>>>>>>>>>>>>>>>>>>>>///////////////////////////.................
> │ > 
> >>>>>>>>>>>>>>>/////...................>........................................
> │ > │ 
> │ > 
> ...............>>>>>>>>>>>>>>>>>>>>>>>>///////////////////////..................
> │ > 
> ...>>>>>>>>>>>>>>>/.............................................................
> │ > │ 
> │ > 
> ..................>>>>>>>>>>>>>>>>>>>>>>>>////////////////////..................
> │ > 
> ......>>>>>>>>>>>/..............................................................
> │ > │ 
> │ > 
> .....................>>>>>>>>>>>>>>>>>>>>>>>>////////////////...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ........................>>>>>>>>>>>>>>>>>>>>>>>>////////////....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ............................>>>>>>>>>>>>>>>>>>>>>>>/////////....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...............................>>>>>>>>>>>>>>>>>>>>>>>/////.....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..................................>>>>>>>>>>>>>>>>>>>>>>//......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................................>>>>>>>>>>>>>>>>>>>>/......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ........................................;;/<....................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................................;;;/////..................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................................;;;;////////................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..................................;;;;;////////////.............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................;;;;;;///////////////...........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..............................;;;;;;;//////////////////.........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ............................;;;;;;;;//////////////////////......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..........................;;;;;;;;//////////////////////////....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .........................;;;;;;;;/////////////////////////////<.................
> │ > 
> ........;;;//...................................................................
> │ > │ 
> │ > 
> ........................;;;;;;;;////////////////////////////////<...............
> │ > 
> .....;;;;;//////................................................................
> │ > │ 
> │ > 
> .......................;;;;;;;;////////////////////////////////////.............
> │ > 
> ..<;;;;;;/////////<.............................................................
> │ > │ 
> │ > 
> .....................\;;;;;;;;/////////////////////////////////////.............
> │ > 
> ..;;;;;;/////////////..................;;<......................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;/////////////////////////////////////..............
> │ > 
> \;;;;;;/////////////////............;;;;////....................................
> │ > │ 
> │ > 
> ...................;;;;;;;;;//////////////////////////////////////..............
> │ > 
> ;;;;;;/////////////////............;;;;////////.................................
> │ > │ 
> │ > 
> ..................;;;;;;;;;//////////////////////////////////////.............\;
> │ > 
> ;;;;;//////////////////...........;;;;/////////.................................
> │ > │ 
> │ > 
> .................;;;;;;;;;;>/////////////////////////////////////............\;;
> │ > 
> ;;;;;>>///////////////...........;;;;;>>>/////..................................
> │ > │ 
> │ > 
> ................;;;;;;;;>>>>>>>>////////////////////////////////............\;;;
> │ > 
> ;>>>>>>>>>////////////...........;>>>>>>>>>//...................................
> │ > │ 
> │ > 
> ...............;;;;;;>>>>>>>>>>>>>>/////////////////////////////............;>>>
> │ > 
> >>>>>>>>>>>>>////////...............>>>>>>>>/...................................
> │ > │ 
> │ > 
> ..............;;;;>>>>>>>>>>>>>>>>>>>>/////////////////////////................>
> │ > 
> >>>>>>>>>>>>>>>>////...................=>.......................................
> │ > │ 
> │ > 
> .............;>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////////////////.................
> │ > 
> ..\>>>>>>>>>>>>>>>>.............................................................
> │ > │ 
> │ > 
> ................>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////////////..................
> │ > 
> ......>>>>>>>>>=>...............................................................
> │ > │ 
> │ > 
> ....................>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////////..................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................>>>>>>>>>>>>>>>>>>>>>>>>>>>///////////...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...........................>>>>>>>>>>>>>>>>>>>>>>>>>>>///////...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..............................>>>>>>>>>>>>>>>>>>>>>>>>>>>///....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..................................>>>>>>>>>>>>>>>>>>>>>>>>>/....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................................>>>>>=>=>>................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................................;;//.....................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................................;;;/////<..................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...................................;;;;/////////................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .................................;;;;;;///////////<.............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...............................;;;;;;;///////////////...........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .............................;;;;;;;;//////////////////.........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...........................;;;;;;;;;//////////////////////......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .........................;;;;;;;;;;/////////////////////////....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ........................;;;;;;;;;;;///////////////////////////<.................
> │ > 
> ........;;;//...................................................................
> │ > │ 
> │ > 
> .......................;;;;;;;;;;;///////////////////////////////...............
> │ > 
> .....;;;;;//////................................................................
> │ > │ 
> │ > 
> ......................;;;;;;;;;;;/////////////////////////////////..............
> │ > 
> ..;;;;;;;/////////<.............................................................
> │ > │ 
> │ > 
> .....................;;;;;;;;;;;//////////////////////////////////..............
> │ > 
> .;;;;;;;/////////////..................;;<......................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;//////////////////////////////////...............
> │ > 
> ;;;;;;;;///////////////.............;;;;////<...................................
> │ > │ 
> │ > 
> ...................;;;;;;;;;;;;//////////////////////////////////..............;
> │ > 
> ;;;;;;;////////////////............;;;;////////.................................
> │ > │ 
> │ > 
> ..................;;;;;;;;;;;;///////////////////////////////////..............;
> │ > 
> ;;;;;;/////////////////...........;;;;;////////.................................
> │ > │ 
> │ > 
> .................;;;;;;;;;;;;///////////////////////////////////..............;;
> │ > 
> ;;;;;;>>//////////////...........;;;;;>>>/////..................................
> │ > │ 
> │ > 
> ................;;;;;;;;;;;;>>>>>///////////////////////////////.............;;;
> │ > 
> ;;>>>>>>>>>///////////...........;>>>>>>>>>>//..................................
> │ > │ 
> │ > 
> ...............;;;;;;;;;>>>>>>>>>>>>////////////////////////////............\;;>
> │ > 
> >>>>>>>>>>>>>>///////...............>>>>>>>>>...................................
> │ > │ 
> │ > 
> ..............;;;;;;;>>>>>>>>>>>>>>>>>>>///////////////////////...............\>
> │ > 
> >>>>>>>>>>>>>>>>>>///..................>=.......................................
> │ > │ 
> │ > 
> .............;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>////////////////////.................
> │ > 
> ..>>>>>>>>>>>>>>>>>>............................................................
> │ > │ 
> │ > 
> .............>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/////////////////.................
> │ > 
> ......>>>>>>>>>>=...............................................................
> │ > │ 
> │ > 
> .................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////////////..................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////////..................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..........................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/////..................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..............................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//..................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..................................>>>>>>>>>>>>>>>>>>>>>>>>>>>...................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................................>>>==.....................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................................;;/<.....................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................................<;;;/////...................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..................................;;;;;////////<................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................;;;;;;;///////////..............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..............................;;;;;;;;//////////////<...........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ............................;;;;;;;;;;/////////////////.........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..........................;;;;;;;;;;;////////////////////<......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ........................;;;;;;;;;;;;////////////////////////....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................;;;;;;;;;;;;;///////////////////////////.................
> │ > 
> ........;;///...................................................................
> │ > │ 
> │ > 
> ......................;;;;;;;;;;;;;//////////////////////////////...............
> │ > 
> .....;;;;;//////................................................................
> │ > │ 
> │ > 
> .....................;;;;;;;;;;;;;;//////////////////////////////...............
> │ > 
> ..;;;;;;;//////////.............................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;///////////////////////////////...............
> │ > 
> \;;;;;;;;////////////<.................;;.......................................
> │ > │ 
> │ > 
> ...................\;;;;;;;;;;;;;///////////////////////////////................
> │ > 
> ;;;;;;;;///////////////............<;;;;////<...................................
> │ > │ 
> │ > 
> ...................;;;;;;;;;;;;;;///////////////////////////////...............;
> │ > 
> ;;;;;;;;///////////////...........\;;;;////////.................................
> │ > │ 
> │ > 
> ..................;;;;;;;;;;;;;;////////////////////////////////..............\;
> │ > 
> ;;;;;;;///////////////............;;;;;////////.................................
> │ > │ 
> │ > 
> .................;;;;;;;;;;;;;;;////////////////////////////////..............;;
> │ > 
> ;;;;;;;>//////////////...........\;;;;;>>>////..................................
> │ > │ 
> │ > 
> ................;;;;;;;;;;;;;;;>>>//////////////////////////////.............;;;
> │ > 
> ;;;;>>>>>>>>//////////...........;;>>>>>>>>>>/..................................
> │ > │ 
> │ > 
> ................;;;;;;;;;;;;>>>>>>>>>>//////////////////////////.............;;;
> │ > 
> >>>>>>>>>>>>>>>>/////..............\>>>>>>>>/...................................
> │ > │ 
> │ > 
> ...............;;;;;;;;;>>>>>>>>>>>>>>>>>>//////////////////////.............\>>
> │ > 
> >>>>>>>>>>>>>>>>>>>//..................\=.......................................
> │ > │ 
> │ > 
> ..............;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>//////////////////................
> │ > 
> .\>>>>>>>>>>>>>>>>>>/...........................................................
> │ > │ 
> │ > 
> .............;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/////////////.................
> │ > 
> ......>>>>>>>>>>................................................................
> │ > │ 
> │ > 
> ...............>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////.................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...................\>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////.................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ........................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//.................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .............................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/.................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..................................>>>>>>>>>>>>>>>>>>>>==........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................................>==......................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................................;;//......................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................................;;;;////....................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..................................;;;;;////////.................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...............................<;;;;;;;///////////..............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .............................;;;;;;;;;//////////////............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...........................;;;;;;;;;;;/////////////////.........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .........................;;;;;;;;;;;;;///////////////////<......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................;;;;;;;;;;;;;;///////////////////////....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................\;;;;;;;;;;;;;;;//////////////////////////.................
> │ > 
> .......<;;//<...................................................................
> │ > │ 
> │ > 
> .....................;;;;;;;;;;;;;;;;///////////////////////////................
> │ > 
> ....<;;;;;//////................................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;////////////////////////////................
> │ > 
> ..;;;;;;;;/////////.............................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;////////////////////////////................
> │ > 
> ;;;;;;;;;/////////////.................;/.......................................
> │ > │ 
> │ > 
> ...................;;;;;;;;;;;;;;;;/////////////////////////////...............;
> │ > 
> ;;;;;;;;;/////////////.............<;;;;////<...................................
> │ > │ 
> │ > 
> ..................;;;;;;;;;;;;;;;;;/////////////////////////////...............;
> │ > 
> ;;;;;;;;//////////////............\;;;;;//////..................................
> │ > │ 
> │ > 
> ..................;;;;;;;;;;;;;;;;;/////////////////////////////..............\;
> │ > 
> ;;;;;;;;//////////////............;;;;;///////..................................
> │ > │ 
> │ > 
> .................;;;;;;;;;;;;;;;;;//////////////////////////////..............;;
> │ > 
> ;;;;;;;;>/////////////............;;;;;>>>////..................................
> │ > │ 
> │ > 
> .................;;;;;;;;;;;;;;;;;>/////////////////////////////..............;;
> │ > 
> ;;;;;;>>>>>>>/////////...........;;;>>>>>>>>>/..................................
> │ > │ 
> │ > 
> ................;;;;;;;;;;;;;;;;>>>>>>>/////////////////////////.............;;;
> │ > 
> ;;>>>>>>>>>>>>>>>/////.............\>>>>>>>>>=..................................
> │ > │ 
> │ > 
> ...............;;;;;;;;;;;;;>>>>>>>>>>>>>>>/////////////////////.............;>>
> │ > 
> >>>>>>>>>>>>>>>>>>>>>/..................>.......................................
> │ > │ 
> │ > 
> ...............;;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>////////////////................
> │ > 
> .>>>>>>>>>>>>>>>>>>>/...........................................................
> │ > │ 
> │ > 
> ..............;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////////////................
> │ > 
> ......>>>>>>>>>>................................................................
> │ > │ 
> │ > 
> ..............;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////////................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ............................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>..................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..................................>>>>>>>>>>>>>>>>>>............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................................>=.......................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................................<;;/<......................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...................................;;;;;///<....................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .................................;;;;;;///////<.................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...............................;;;;;;;;//////////<..............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ............................<;;;;;;;;;;/////////////............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..........................<;;;;;;;;;;;;///////////////<.........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ........................;;;;;;;;;;;;;;;//////////////////<......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ......................;;;;;;;;;;;;;;;;//////////////////////....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;////////////////////////..................
> │ > 
> .......;;;//....................................................................
> │ > │ 
> │ > 
> ....................;;;;;;;;;;;;;;;;;;/////////////////////////.................
> │ > 
> ....;;;;;;//////................................................................
> │ > │ 
> │ > 
> ...................;;;;;;;;;;;;;;;;;;;/////////////////////////.................
> │ > 
> .<;;;;;;;;////////<.............................................................
> │ > │ 
> │ > 
> ...................;;;;;;;;;;;;;;;;;;;/////////////////////////................;
> │ > 
> ;;;;;;;;;;////////////.................;/.......................................
> │ > │ 
> │ > 
> ..................\;;;;;;;;;;;;;;;;;;//////////////////////////................;
> │ > 
> ;;;;;;;;;/////////////.............<;;;;////<...................................
> │ > │ 
> │ > 
> ..................;;;;;;;;;;;;;;;;;;;//////////////////////////................;
> │ > 
> ;;;;;;;;;/////////////............;;;;;;//////..................................
> │ > │ 
> │ > 
> ..................;;;;;;;;;;;;;;;;;;;///////////////////////////..............;;
> │ > 
> ;;;;;;;;;/////////////............;;;;;;//////..................................
> │ > │ 
> │ > 
> .................;;;;;;;;;;;;;;;;;;;;///////////////////////////..............;;
> │ > 
> ;;;;;;;;;>////////////............;;;;;;>>////..................................
> │ > │ 
> │ > 
> .................;;;;;;;;;;;;;;;;;;;;///////////////////////////..............;;
> │ > 
> ;;;;;;;;>>>>/>////////............;;;>>>>>>>>>..................................
> │ > │ 
> │ > 
> ................;;;;;;;;;;;;;;;;;;;;>>>>>///////////////////////.............\;;
> │ > 
> ;;;>>>>>>>>>>>>>/>////.............>>>>>>>>>=...................................
> │ > │ 
> │ > 
> ................;;;;;;;;;;;;;;;;>>>>>>>>>>>>>>//////////////////.............;;;
> │ > 
> >>>>>>>>>>>>>>>>>>>>>>..................=.......................................
> │ > │ 
> │ > 
> ...............;;;;;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>//////////////................
> │ > 
> >>>>>>>>>>>>>>>>>>>>>...........................................................
> │ > │ 
> │ > 
> ...............;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////...............
> │ > 
> .....\>>>>>>>>=.................................................................
> │ > │ 
> │ > 
> ..............;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/////...............
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..............;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/...............
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ....................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>...............
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..........................\>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .................................>>>>>>>>>>>>>>>>...............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ........................................=.......................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................................;;//.......................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...................................;;;;////<....................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................<;;;;;;///////..................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..............................<;;;;;;;;/////////<...............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ............................;;;;;;;;;;;////////////<............................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ..........................;;;;;;;;;;;;;///////////////<.........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .......................<;;;;;;;;;;;;;;;//////////////////.......................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .....................;;;;;;;;;;;;;;;;;;/////////////////////....................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...................;;;;;;;;;;;;;;;;;;;;//////////////////////...................
> │ > 
> .......;;;//....................................................................
> │ > │ 
> │ > 
> ...................;;;;;;;;;;;;;;;;;;;;///////////////////////..................
> │ > 
> ....;;;;;;//////................................................................
> │ > │ 
> │ > 
> ..................\;;;;;;;;;;;;;;;;;;;;///////////////////////..................
> │ > 
> .;;;;;;;;;/////////.............................................................
> │ > │ 
> │ > 
> ..................;;;;;;;;;;;;;;;;;;;;;///////////////////////.................;
> │ > 
> ;;;;;;;;;;///////////..................;/.......................................
> │ > │ 
> │ > 
> ..................;;;;;;;;;;;;;;;;;;;;;////////////////////////................;
> │ > 
> ;;;;;;;;;;////////////.............<;;;;////<...................................
> │ > │ 
> │ > 
> ..................;;;;;;;;;;;;;;;;;;;;;////////////////////////...............\;
> │ > 
> ;;;;;;;;;;////////////............;;;;;;//////..................................
> │ > │ 
> │ > 
> .................;;;;;;;;;;;;;;;;;;;;;;////////////////////////...............;;
> │ > 
> ;;;;;;;;;;////////////............;;;;;;//////..................................
> │ > │ 
> │ > 
> .................;;;;;;;;;;;;;;;;;;;;;;/////////////////////////..............;;
> │ > 
> ;;;;;;;;;;>///////////............;;;;;;>>>///..................................
> │ > │ 
> │ > 
> .................;;;;;;;;;;;;;;;;;;;;;;/////////////////////////..............;;
> │ > 
> ;;;;;;;;;>>>>>>///////............;;;;>>>>>>>>..................................
> │ > │ 
> │ > 
> ................;;;;;;;;;;;;;;;;;;;;;;;>>>>/////////////////////..............;;
> │ > 
> ;;;;;;>>>>>>>>>>>>>>//.............>>>>>>>>>=...................................
> │ > │ 
> │ > 
> ................;;;;;;;;;;;;;;;;;;;>>>>>>>>>>>>>/////////////////.............;;
> │ > 
> ;;>>>>>>>>>>>>>>>>>>>>..................=.......................................
> │ > │ 
> │ > 
> ................;;;;;;;;;;;;;;;;>>>>>>>>>>>>>>>>>>>>>////////////..............\
> │ > 
> >>>>>>>>>>>>>>>>>>>>............................................................
> │ > │ 
> │ > 
> ...............\;;;;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>///////...............
> │ > 
> .....>>>>>>>>>=.................................................................
> │ > │ 
> │ > 
> ...............;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>///..............
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ...............;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>..............
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>=..................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ........................\>>>>>>>>>>>>>>>>>>>>>>>>>>>>>=.........................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> .................................\>>>>>>>>>>>>>=................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > 
> ................................................................................
> │ > 
> ................................................................................
> │ > │ 
> │ > │ 
> │ 00:00:24 v #3 runtime.execute_with_options / result / {
> exit_code = 0; std_trace_length = 449170 }
> │ 00:00:24 d #4 runtime.execute_with_options / { 
> file_name = jupyter; arguments = ["nbconvert", 
> "c:/home/git/polyglot/apps/spiral/temp/cube/cube.dib.ipynb", "--to", "html", 
> "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert 
> "c:/home/git/polyglot/apps/spiral/temp/cube/cube.dib.ipynb" --to html 
> --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = 
> Array(MutCell([])); on_line = None; stdin = None; trace = true; 
> working_directory = None } }
> │ 00:00:26 v #5 ! [NbConvertApp] Converting notebook 
> c:/home/git/polyglot/apps/spiral/temp/cube/cube.dib.ipynb to html
> │ 00:00:26 v #6 ! 
> C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.
> py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a 
> hard error in future nbformat versions. You may want to use `normalize()` on 
> your notebooks before validations (available since nbformat 5.1.4). Previous 
> versions of nbformat are fixing this issue transparently, and will stop doing so
> in the future.
> │ 00:00:26 v #7 !   validate(nb)
> │ 00:00:26 v #8 ! 
> C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\
> highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python
> 3
> │ 00:00:26 v #9 !   return _pygments_highlight(
> │ 00:00:27 v #10 ! [NbConvertApp] Writing 800315 bytes to
> c:\home\git\polyglot\apps\spiral\temp\cube\cube.dib.html
> │ 00:00:27 v #11 runtime.execute_with_options / result / 
> { exit_code = 0; std_trace_length = 872 }
> │ 00:00:27 d #12 spiral.run / dib / jupyter nbconvert / {
> exit_code = 0; jupyter_result_length = 872 }
> │ 00:00:27 d #13 runtime.execute_with_options / { 
> file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 
> 'c:/home/git/polyglot/apps/spiral/temp/cube/cube.dib.html'; (Get-Content $path 
> -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + 
> $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1;
> $path = 'c:/home/git/polyglot/apps/spiral/temp/cube/cube.dib.html'; (Get-Content
> $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + 
> $counter++ } | Set-Content $path"; cancellation_token = None; 
> environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace 
> = true; working_directory = None } }
> │ 00:00:28 v #14 runtime.execute_with_options / result / 
> { exit_code = 0; std_trace_length = 0 }
> │ 00:00:28 d #15 spiral.run / dib / html cell ids / { 
> exit_code = 0; pwsh_replace_html_result_length = 0 }
> │ 00:00:28 d #16 spiral.run / dib / { exit_code = 0; 
> result_length = 450101 }
> │ 00:00:00 d #1 writeDibCode / output: Spi / path: 
> cube.dib
> │ 00:00:00 d #2 parseDibCode / output: Spi / file: 
> cube.dib
> │ 00:00:00 d #1 persistCodeProject / packages: 
> [Fable.Core] / modules: [deps/spiral/lib/spiral/common.fsx; 
> deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: 
> cube / hash:  / code.Length: 48514
> │ spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: 
> C:\home\git\polyglot\target\Builder\cube
> │ polyglot/scripts/core.ps1/ResolveLink #4 / Path: 
> C:\home\git\polyglot\deps\spiral\lib\spiral/../../deps/polyglot / parent_target:
> / path_target: C:\home\git\polyglot / parent: 
> C:\home\git\polyglot\deps\spiral\lib\spiral\..\..\deps / End: polyglot
> │ spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: 
> C:\home\git\polyglot\target\Builder\cube / ProjectName: cube / Language: rs / 
> Runtime:  / root: C:\home\git\polyglot
> │ Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha)
> │ 
> │ Thanks to the contributor! @davidpodhola
> │ Stand with Ukraine! https://standwithukraine.com.ua/
> │ 
> │ Parsing target\Builder\cube\cube.fsproj...
> │ Retrieving project options from cache, in case of issues run 
> `dotnet fable clean` or try `--noCache` option.
> │ Project and references (14 source files) parsed in 183ms
> │ 
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this 
> assembly. Original error: The exception has been reported. This internal 
> exception should now be caught at an error recovery point on the stack. Original
> message: The type 'MetadataUpdateHandlerAttribute' is required here and is 
> unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping 
> this assembly. Original error: The exception has been reported. This internal 
> exception should now be caught at an error recovery point on the stack. Original
> message: The type 'MetadataUpdateHandlerAttribute' is required here and is 
> unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable 
> plugins, skipping this assembly. Original error: The exception has been 
> reported. This internal exception should now be caught at an error recovery 
> point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' 
> is required here and is unavailable. You must add a reference to assembly 
> 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, 
> PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, 
> skipping this assembly. Original error: The exception has been reported. This 
> internal exception should now be caught at an error recovery point on the stack.
> Original message: The type 'MetadataUpdateHandlerAttribute' is required here and
> is unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this 
> assembly. Original error: The exception has been reported. This internal 
> exception should now be caught at an error recovery point on the stack. Original
> message: The type 'MetadataUpdateHandlerAttribute' is required here and is 
> unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping 
> this assembly. Original error: The exception has been reported. This internal 
> exception should now be caught at an error recovery point on the stack. Original
> message: The type 'MetadataUpdateHandlerAttribute' is required here and is 
> unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, 
> skipping this assembly. Original error: The exception has been reported. This 
> internal exception should now be caught at an error recovery point on the stack.
> Original message: The type 'MetadataUpdateHandlerAttribute' is required here and
> is unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, 
> skipping this assembly. Original error: The exception has been reported. This 
> internal exception should now be caught at an error recovery point on the stack.
> Original message: The type 'MetadataUpdateHandlerAttribute' is required here and
> is unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable 
> plugins, skipping this assembly. Original error: The exception has been 
> reported. This internal exception should now be caught at an error recovery 
> point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' 
> is required here and is unavailable. You must add a reference to assembly 
> 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, 
> PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping
> this assembly. Original error: The exception has been reported. This internal 
> exception should now be caught at an error recovery point on the stack. Original
> message: The type 'MetadataUpdateHandlerAttribute' is required here and is 
> unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ 
> │ Started Fable compilation...
> │ 
> │ Fable compilation finished in 9363ms
> │ 
> │ .\deps\spiral\lib\spiral\sm.fsx(560,0): (560,2) warning 
> FABLE: For Rust, support for F# static and module do bindings is disabled by 
> default. It can be enabled with the 'static_do_bindings' feature. Use at your 
> own risk!
> │ .\deps\spiral\lib\spiral\common.fsx(2193,0): (2193,2) warning
> FABLE: For Rust, support for F# static and module do bindings is disabled by 
> default. It can be enabled with the 'static_do_bindings' feature. Use at your 
> own risk!
> │ .\deps\spiral\lib\spiral\async_.fsx(250,0): (250,2) warning 
> FABLE: For Rust, support for F# static and module do bindings is disabled by 
> default. It can be enabled with the 'static_do_bindings' feature. Use at your 
> own risk!
> │ .\deps\spiral\lib\spiral\crypto.fsx(2420,0): (2420,2) warning
> FABLE: For Rust, support for F# static and module do bindings is disabled by 
> default. It can be enabled with the 'static_do_bindings' feature. Use at your 
> own risk!
> │ .\deps\spiral\lib\spiral\threading.fsx(139,0): (139,2) 
> warning FABLE: For Rust, support for F# static and module do bindings is 
> disabled by default. It can be enabled with the 'static_do_bindings' feature. 
> Use at your own risk!
> │ .\deps\spiral\lib\spiral\date_time.fsx(2546,0): (2546,2) 
> warning FABLE: For Rust, support for F# static and module do bindings is 
> disabled by default. It can be enabled with the 'static_do_bindings' feature. 
> Use at your own risk!
> │ .\deps\spiral\lib\spiral\platform.fsx(121,0): (121,2) warning
> FABLE: For Rust, support for F# static and module do bindings is disabled by 
> default. It can be enabled with the 'static_do_bindings' feature. Use at your 
> own risk!
> │ .\deps\spiral\lib\spiral\networking.fsx(5011,0): (5011,2) 
> warning FABLE: For Rust, support for F# static and module do bindings is 
> disabled by default. It can be enabled with the 'static_do_bindings' feature. 
> Use at your own risk!
> │ .\deps\spiral\lib\spiral\trace.fsx(2226,0): (2226,2) warning 
> FABLE: For Rust, support for F# static and module do bindings is disabled by 
> default. It can be enabled with the 'static_do_bindings' feature. Use at your 
> own risk!
> │ .\deps\spiral\lib\spiral\runtime.fsx(7234,0): (7234,2) 
> warning FABLE: For Rust, support for F# static and module do bindings is 
> disabled by default. It can be enabled with the 'static_do_bindings' feature. 
> Use at your own risk!
> │ .\deps\spiral\lib\spiral\file_system.fsx(18760,0): (18760,2) 
> warning FABLE: For Rust, support for F# static and module do bindings is 
> disabled by default. It can be enabled with the 'static_do_bindings' feature. 
> Use at your own risk!
> │ polyglot/scripts/core.ps1/ResolveLink #4 / Path: 
> C:\home\git\polyglot\deps\spiral\lib\spiral/../../deps/polyglot / parent_target:
> / path_target: C:\home\git\polyglot / parent: 
> C:\home\git\polyglot\deps\spiral\lib\spiral\..\..\deps / End: polyglot
> │ spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: 
> C:\home\git\polyglot\target\Builder\cube / ProjectName: cube / Language: ts / 
> Runtime:  / root: C:\home\git\polyglot
> │ Fable 5.0.0-alpha.9: F# to TypeScript compiler
> │ Minimum @fable-org/fable-library-ts version (when installed 
> from npm): 1.10.0
> │ 
> │ Thanks to the contributor! @FrankBro
> │ Stand with Ukraine! https://standwithukraine.com.ua/
> │ 
> │ Parsing target\Builder\cube\cube.fsproj...
> │ Retrieving project options from cache, in case of issues run 
> `dotnet fable clean` or try `--noCache` option.
> │ Project and references (14 source files) parsed in 156ms
> │ 
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this 
> assembly. Original error: The exception has been reported. This internal 
> exception should now be caught at an error recovery point on the stack. Original
> message: The type 'MetadataUpdateHandlerAttribute' is required here and is 
> unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping 
> this assembly. Original error: The exception has been reported. This internal 
> exception should now be caught at an error recovery point on the stack. Original
> message: The type 'MetadataUpdateHandlerAttribute' is required here and is 
> unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable 
> plugins, skipping this assembly. Original error: The exception has been 
> reported. This internal exception should now be caught at an error recovery 
> point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' 
> is required here and is unavailable. You must add a reference to assembly 
> 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, 
> PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, 
> skipping this assembly. Original error: The exception has been reported. This 
> internal exception should now be caught at an error recovery point on the stack.
> Original message: The type 'MetadataUpdateHandlerAttribute' is required here and
> is unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this 
> assembly. Original error: The exception has been reported. This internal 
> exception should now be caught at an error recovery point on the stack. Original
> message: The type 'MetadataUpdateHandlerAttribute' is required here and is 
> unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping 
> this assembly. Original error: The exception has been reported. This internal 
> exception should now be caught at an error recovery point on the stack. Original
> message: The type 'MetadataUpdateHandlerAttribute' is required here and is 
> unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, 
> skipping this assembly. Original error: The exception has been reported. This 
> internal exception should now be caught at an error recovery point on the stack.
> Original message: The type 'MetadataUpdateHandlerAttribute' is required here and
> is unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, 
> skipping this assembly. Original error: The exception has been reported. This 
> internal exception should now be caught at an error recovery point on the stack.
> Original message: The type 'MetadataUpdateHandlerAttribute' is required here and
> is unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable 
> plugins, skipping this assembly. Original error: The exception has been 
> reported. This internal exception should now be caught at an error recovery 
> point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' 
> is required here and is unavailable. You must add a reference to assembly 
> 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, 
> PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping
> this assembly. Original error: The exception has been reported. This internal 
> exception should now be caught at an error recovery point on the stack. Original
> message: The type 'MetadataUpdateHandlerAttribute' is required here and is 
> unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ 
> │ Started Fable compilation...
> │ 
> │ Fable compilation finished in 10192ms
> │ 
> │ .\deps\spiral\lib\spiral\sm.fsx(38,20): (38,49) warning 
> FABLE: CultureInfo argument is ignored
> │ .\deps\spiral\lib\spiral\sm.fsx(307,20): (307,51) warning 
> FABLE: CultureInfo argument is ignored
> │ polyglot/scripts/core.ps1/ResolveLink #4 / Path: 
> C:\home\git\polyglot\deps\spiral\lib\spiral/../../deps/polyglot / parent_target:
> / path_target: C:\home\git\polyglot / parent: 
> C:\home\git\polyglot\deps\spiral\lib\spiral\..\..\deps / End: polyglot
> │ spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: 
> C:\home\git\polyglot\target\Builder\cube / ProjectName: cube / Language: py / 
> Runtime:  / root: C:\home\git\polyglot
> │ Fable 5.0.0-alpha.9: F# to Python compiler (status: beta)
> │ 
> │ Thanks to the contributor! @2sComplement
> │ Stand with Ukraine! https://standwithukraine.com.ua/
> │ 
> │ Parsing target\Builder\cube\cube.fsproj...
> │ Retrieving project options from cache, in case of issues run 
> `dotnet fable clean` or try `--noCache` option.
> │ Project and references (14 source files) parsed in 155ms
> │ 
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this 
> assembly. Original error: The exception has been reported. This internal 
> exception should now be caught at an error recovery point on the stack. Original
> message: The type 'MetadataUpdateHandlerAttribute' is required here and is 
> unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping 
> this assembly. Original error: The exception has been reported. This internal 
> exception should now be caught at an error recovery point on the stack. Original
> message: The type 'MetadataUpdateHandlerAttribute' is required here and is 
> unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable 
> plugins, skipping this assembly. Original error: The exception has been 
> reported. This internal exception should now be caught at an error recovery 
> point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' 
> is required here and is unavailable. You must add a reference to assembly 
> 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, 
> PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, 
> skipping this assembly. Original error: The exception has been reported. This 
> internal exception should now be caught at an error recovery point on the stack.
> Original message: The type 'MetadataUpdateHandlerAttribute' is required here and
> is unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this 
> assembly. Original error: The exception has been reported. This internal 
> exception should now be caught at an error recovery point on the stack. Original
> message: The type 'MetadataUpdateHandlerAttribute' is required here and is 
> unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping 
> this assembly. Original error: The exception has been reported. This internal 
> exception should now be caught at an error recovery point on the stack. Original
> message: The type 'MetadataUpdateHandlerAttribute' is required here and is 
> unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, 
> skipping this assembly. Original error: The exception has been reported. This 
> internal exception should now be caught at an error recovery point on the stack.
> Original message: The type 'MetadataUpdateHandlerAttribute' is required here and
> is unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, 
> skipping this assembly. Original error: The exception has been reported. This 
> internal exception should now be caught at an error recovery point on the stack.
> Original message: The type 'MetadataUpdateHandlerAttribute' is required here and
> is unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable 
> plugins, skipping this assembly. Original error: The exception has been 
> reported. This internal exception should now be caught at an error recovery 
> point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' 
> is required here and is unavailable. You must add a reference to assembly 
> 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, 
> PublicKeyToken=b03f5f7f11d50a3a'.)
> │ Could not scan 
> C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/
> 9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping
> this assembly. Original error: The exception has been reported. This internal 
> exception should now be caught at an error recovery point on the stack. Original
> message: The type 'MetadataUpdateHandlerAttribute' is required here and is 
> unavailable. You must add a reference to assembly 'System.Runtime.Loader, 
> Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
> │ 
> │ Started Fable compilation...
> │ 
> │ Fable compilation finished in 10780ms
> │ 
> │ .\deps\spiral\lib\spiral\sm.fsx(38,20): (38,49) warning 
> FABLE: CultureInfo argument is ignored
> │ .\deps\spiral\lib\spiral\sm.fsx(307,20): (307,51) warning 
> FABLE: CultureInfo argument is ignored
> │ polyglot/apps/spiral/temp/cube/build.ps1 / $targetDir: 
> C:\home\git\polyglot\target\Builder\cube / $projectName: cube / $env:CI:''
> │ bun install v1.2.5 (013fdddc)
> │ 
> │ Checked 11 installs across 13 packages (no changes) [55.00ms]
> │ [INFO]: 🎯  Checking for the Wasm target...
> │ [INFO]: 🌀  Compiling to Wasm...
> │     Finished `dev` profile [unoptimized + debuginfo] 
> target(s) in 1.38s
> │ [INFO]: ⬇️  Installing wasm-bindgen...
> │ [INFO]: Optional field missing from Cargo.toml: 
> 'description'. This is not necessary, but recommended
> │ [INFO]: ✨   Done in 2.46s
> │ [INFO]: 📦   Your wasm pkg is ready to publish at 
> C:\home\git\polyglot\apps\spiral\temp\extension\pkg.
> │ ▲ [WARNING] "import.meta" is not available with the 
> "iife" output format and will be empty [empty-import-meta]
> │ 
> │     pkg/spiral_temp_extension.js:1445:66:
> │       1445 │ ...ath = new 
> URL('spiral_temp_extension_bg.wasm', import.meta.url);
> │            ╵
> ~~~~~~~~~~~
> │ 
> │   You need to set the output format to "esm" for 
> "import.meta" to work correctly.
> │ 
> │ 1 warning
> │ 
> │   dist\spiral_temp_extension_bg-IZFFKPLC.wasm   4.5mb 
> ⚠️
> │   dist\devtools.js                             29.0kb
> │   dist\content_script.js                       26.4kb
> │   dist\service_worker.js                        2.2kb
> │ 
> │ ⚡ Done in 57ms
> │ $ playwright test
> │ 
> │ Running 3 tests using 3 workers
> │ 
> │ [1/3] [Desktop Chrome] › extension.spec.ts:3:5 › popup 
> localhost
> │ [2/3] [Desktop Chrome] › extension.spec.ts:15:5 › libgen
> │ [3/3] [Desktop Chrome] › extension.spec.ts:10:5 › popup 
> extension
> │   3 passed (9.6s)
> │ 
> │ To open last HTML report run:
> │ 
> │   npx playwright show-report
> │ 
> │ 00:00:00 d #1 spiral.main / { args = 
> Array(MutCell(["dib", "--path", "build.dib"])) }
> │ 00:00:00 d #2 runtime.execute_with_options / { 
> file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", 
> "c:/home/git/polyglot/apps/spiral/temp/test/build.dib", "--output-path", 
> "c:/home/git/polyglot/apps/spiral/temp/test/build.dib.ipynb"]; options = { 
> command = dotnet repl --exit-after-run --run 
> "c:/home/git/polyglot/apps/spiral/temp/test/build.dib" --output-path 
> "c:/home/git/polyglot/apps/spiral/temp/test/build.dib.ipynb"; cancellation_token
> = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), 
> ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; 
> working_directory = None } }
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ # test
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## include scripts
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### include notebook core
> │ > 
> │ > ── pwsh 
> ────────────────────────────────────────────────────────────────────────
> │ > . ../../../../scripts/nbs_header.ps1
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### Include core functions script
> │ > 
> │ > ── pwsh 
> ────────────────────────────────────────────────────────────────────────
> │ > . ../../../../scripts/core.ps1
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### Include spiral library
> │ > 
> │ > ── pwsh 
> ────────────────────────────────────────────────────────────────────────
> │ > . ../../../../deps/spiral/lib/spiral/lib.ps1
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## execute project commands
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### run notebook with retries using 
> spiral supervisor
> │ > 
> │ > ── pwsh 
> ────────────────────────────────────────────────────────────────────────
> │ > { . 
> ../../../../deps/spiral/workspace/target/release/spiral$(_exe) dib --path 
> │ > test.dib --retries 3 } | Invoke-Block
> │ > 
> │ > ── [ 16.03s - stdout ] 
> ─────────────────────────────────────────────────────────
> │ > │ 00:00:00 d #1 spiral.main / { args
> = 
> │ > Array(MutCell(["dib", "--path", "test.dib", "--retries", 
> "3"])) }
> │ > │ 00:00:00 d #2 
> runtime.execute_with_options / { 
> │ > file_name = dotnet; arguments = ["repl", 
> "--exit-after-run", "--run", 
> │ > "c:/home/git/polyglot/apps/spiral/temp/test/test.dib", 
> "--output-path", 
> │ > 
> "c:/home/git/polyglot/apps/spiral/temp/test/test.dib.ipynb"]; options = { 
> │ > command = dotnet repl --exit-after-run --run 
> │ > "c:/home/git/polyglot/apps/spiral/temp/test/test.dib" 
> --output-path 
> │ > 
> "c:/home/git/polyglot/apps/spiral/temp/test/test.dib.ipynb"; cancellation_token 
> │ > = None; environment_variables = 
> Array(MutCell([("TRACE_LEVEL", "Verbose"), 
> │ > ("AUTOMATION", "True")])); on_line = None; stdin = None; 
> trace = false; 
> │ > working_directory = None } }
> │ > │ > 
> │ > │ > ── markdown 
> │ > 
> ────────────────────────────────────────────────────────────────────
> │ > │ > │ # test (Polyglot)
> │ > │ > 
> │ > │ > ── spiral 
> │ > 
> ──────────────────────────────────────────────────────────────────────
> │ > │ > //// test
> │ > │ > 
> │ > │ > open testing
> │ > │ > 
> │ > │ > ── spiral 
> │ > 
> ──────────────────────────────────────────────────────────────────────
> │ > │ > //// test
> │ > │ > //// print_code
> │ > │ > 
> │ > │ > inl jp = [[ "J"; "P" ]]
> │ > │ > inl tf = [[ "T"; "F" ]]
> │ > │ > inl sn = [[ "S"; "N" ]]
> │ > │ > inl ie = [[ "I"; "E" ]]
> │ > │ > 
> │ > │ > (ie, ([[]] : _ string))
> │ > │ > ||> listm.foldBack fun ie' acc =>
> │ > │ >     inl ssnn acc' jp' =
> │ > │ >         (sn, acc')
> │ > │ >         ||> listm.foldBack fun sn' 
> acc' =>
> │ > │ >             inl c' ie' sn' tf' jp' =
> │ > │ >                 
> $'$"{!ie'}{!sn'}{!tf'}{!jp'}"'
> │ > │ > 
> │ > │ >             if listm.length acc' % 
> 4i32 = 2 then
> │ > │ >                 (tf, acc')
> │ > │ >                 ||> listm.foldBack fun
> tf' acc'' =>
> │ > │ >                     c' ie' sn' tf' jp'
> :: acc''
> │ > │ >             else
> │ > │ >                 (acc', tf)
> │ > │ >                 ||> listm.fold fun 
> acc'' tf' =>
> │ > │ >                     c' ie' sn' tf' jp'
> :: acc''
> │ > │ >     if acc = [[]] then
> │ > │ >         (acc, jp)
> │ > │ >         ||> listm.fold fun acc' jp' =>
> │ > │ >             ssnn acc' jp'
> │ > │ >     else
> │ > │ >         (jp, acc)
> │ > │ >         ||> listm.foldBack fun jp' 
> acc' =>
> │ > │ >             ssnn acc' jp'
> │ > │ > |> listm'.box
> │ > │ > |> listm'.to_array'
> │ > │ > |> _assert_eq' ;[[
> │ > │ >     "ISTJ"; "ISFJ"; "INFJ"; "INTJ"
> │ > │ >     "ISTP"; "ISFP"; "INFP"; "INTP"
> │ > │ >     "ESTP"; "ESFP"; "ENFP"; "ENTP"
> │ > │ >     "ESTJ"; "ESFJ"; "ENFJ"; "ENTJ"
> │ > │ > ]]
> │ > │ > 
> │ > │ > ── [ 1.06s - stdout ] 
> │ > ──────────────────────────────────────────────────────────
> │ > │ > │ let rec method1 (v0
> : bool) : bool =
> │ > │ > │     v0
> │ > │ > │ and closure0 (v0 : 
> string) () : unit =
> │ > │ > │     let v1 : 
> (string -> unit) = 
> │ > System.Console.WriteLine
> │ > │ > │     v1 v0
> │ > │ > │ and method0 () : 
> unit =
> │ > │ > │     let v0 : string
> = "E"
> │ > │ > │     let v1 : string
> = "N"
> │ > │ > │     let v2 : string
> = "T"
> │ > │ > │     let v3 : string
> = "J"
> │ > │ > │     let v4 : string
> = 
> │ > $"{v0}{v1}{v2}{v3}"
> │ > │ > │     let v5 : string
> = "F"
> │ > │ > │     let v6 : string
> = 
> │ > $"{v0}{v1}{v5}{v3}"
> │ > │ > │     let v7 : string
> = "S"
> │ > │ > │     let v8 : string
> = 
> │ > $"{v0}{v7}{v5}{v3}"
> │ > │ > │     let v9 : string
> = 
> │ > $"{v0}{v7}{v2}{v3}"
> │ > │ > │     let v10 : 
> string = "P"
> │ > │ > │     let v11 : 
> string = 
> │ > $"{v0}{v1}{v2}{v10}"
> │ > │ > │     let v12 : 
> string = 
> │ > $"{v0}{v1}{v5}{v10}"
> │ > │ > │     let v13 : 
> string = 
> │ > $"{v0}{v7}{v5}{v10}"
> │ > │ > │     let v14 : 
> string = 
> │ > $"{v0}{v7}{v2}{v10}"
> │ > │ > │     let v15 : 
> string = "I"
> │ > │ > │     let v16 : 
> string = 
> │ > $"{v15}{v1}{v2}{v10}"
> │ > │ > │     let v17 : 
> string = 
> │ > $"{v15}{v1}{v5}{v10}"
> │ > │ > │     let v18 : 
> string = 
> │ > $"{v15}{v7}{v5}{v10}"
> │ > │ > │     let v19 : 
> string = 
> │ > $"{v15}{v7}{v2}{v10}"
> │ > │ > │     let v20 : 
> string = 
> │ > $"{v15}{v1}{v2}{v3}"
> │ > │ > │     let v21 : 
> string = 
> │ > $"{v15}{v1}{v5}{v3}"
> │ > │ > │     let v22 : 
> string = 
> │ > $"{v15}{v7}{v5}{v3}"
> │ > │ > │     let v23 : 
> string = 
> │ > $"{v15}{v7}{v2}{v3}"
> │ > │ > │     let v24 : 
> string list = []
> │ > │ > │     let v26 : 
> string list = v4 :: v24 
> │ > │ > │     let v30 : 
> string list = v6 :: v26 
> │ > │ > │     let v34 : 
> string list = v8 :: v30 
> │ > │ > │     let v38 : 
> string list = v9 :: v34 
> │ > │ > │     let v42 : 
> string list = v11 :: v38 
> │ > │ > │     let v46 : 
> string list = v12 :: v42 
> │ > │ > │     let v50 : 
> string list = v13 :: v46 
> │ > │ > │     let v54 : 
> string list = v14 :: v50 
> │ > │ > │     let v58 : 
> string list = v16 :: v54 
> │ > │ > │     let v62 : 
> string list = v17 :: v58 
> │ > │ > │     let v66 : 
> string list = v18 :: v62 
> │ > │ > │     let v70 : 
> string list = v19 :: v66 
> │ > │ > │     let v74 : 
> string list = v20 :: v70 
> │ > │ > │     let v78 : 
> string list = v21 :: v74 
> │ > │ > │     let v82 : 
> string list = v22 :: v78 
> │ > │ > │     let v86 : 
> string list = v23 :: v82 
> │ > │ > │     let v90 : 
> (string list -> (string 
> │ > [])) = List.toArray
> │ > │ > │     let v91 : 
> (string []) = v90 v86
> │ > │ > │     let v94 : 
> string = "ISTJ"
> │ > │ > │     let v95 : 
> string = "ISFJ"
> │ > │ > │     let v96 : 
> string = "INFJ"
> │ > │ > │     let v97 : 
> string = "INTJ"
> │ > │ > │     let v98 : 
> string = "ISTP"
> │ > │ > │     let v99 : 
> string = "ISFP"
> │ > │ > │     let v100 : 
> string = "INFP"
> │ > │ > │     let v101 : 
> string = "INTP"
> │ > │ > │     let v102 : 
> string = "ESTP"
> │ > │ > │     let v103 : 
> string = "ESFP"
> │ > │ > │     let v104 : 
> string = "ENFP"
> │ > │ > │     let v105 : 
> string = "ENTP"
> │ > │ > │     let v106 : 
> string = "ESTJ"
> │ > │ > │     let v107 : 
> string = "ESFJ"
> │ > │ > │     let v108 : 
> string = "ENFJ"
> │ > │ > │     let v109 : 
> string = "ENTJ"
> │ > │ > │     let v110 : 
> (string []) = [|v94; v95;
> │ > v96; v97; v98; v99; 
> │ > │ > v100; v101; v102; v103; v104; v105; 
> v106; v107; v108; 
> │ > v109|]
> │ > │ > │     let v112 : bool
> = v91 = v110 
> │ > │ > │     let v116 : bool
> =
> │ > │ > │         if v112 
> then
> │ > │ > │             true
> │ > │ > │         else
> │ > │ > │             
> method1(v112)
> │ > │ > │     let v121 : 
> string = "__assert_eq'"
> │ > │ > │     let v122 : 
> string = $"{v121} / 
> │ > actual: %A{v91} / 
> │ > │ > expected: %A{v110}"
> │ > │ > │     let v125 : unit
> = ()
> │ > │ > │     let v126 : 
> (unit -> unit) = 
> │ > closure0(v122)
> │ > │ > │     let v127 : unit
> = (fun () -> v126 
> │ > (); v125) ()
> │ > │ > │     let v129 : bool
> = v116 = false
> │ > │ > │     if v129 then
> │ > │ > │         
> failwith<unit> v122
> │ > │ > │ method0()
> │ > │ > │ 
> │ > │ > │ __assert_eq' / 
> actual: [|"ISTJ"; "ISFJ";
> │ > "INFJ"; "INTJ"; 
> │ > │ > "ISTP"; "ISFP"; "INFP"; "INTP"; 
> "ESTP"; "ESFP";
> │ > │ > │   "ENFP"; "ENTP"; 
> "ESTJ"; "ESFJ"; 
> │ > "ENFJ"; "ENTJ"|] / 
> │ > │ > expected: [|"ISTJ"; "ISFJ"; "INFJ"; 
> "INTJ"; "ISTP"; "ISFP";
> │ > "INFP"; "INTP"; 
> │ > │ > "ESTP"; "ESFP";
> │ > │ > │   "ENFP"; "ENTP"; 
> "ESTJ"; "ESFJ"; 
> │ > "ENFJ"; "ENTJ"|]
> │ > │ > │ 
> │ > │ > 
> │ > │ > ── spiral 
> │ > 
> ──────────────────────────────────────────────────────────────────────
> │ > │ > //// test
> │ > │ > //// print_code
> │ > │ > 
> │ > │ > inl i_e =
> │ > │ >     listm'.replicate 8i32 "I" ++ 
> listm'.replicate 8i32 "E"
> │ > │ > inl s_n =
> │ > │ >     [[ "S"; "S"; "N"; "N" ]]
> │ > │ >     |> listm'.replicate 4i32
> │ > │ >     |> listm'.collect id
> │ > │ > inl t_f =
> │ > │ >     [[ "T"; "F"; "F"; "T" ]]
> │ > │ >     |> listm'.replicate 4i32
> │ > │ >     |> listm'.collect id
> │ > │ > inl j_p =
> │ > │ >     [[ "J"; "J"; "J"; "J" ]]
> │ > │ >     ++ [[ "P"; "P"; "P"; "P" ]]
> │ > │ >     ++ [[ "P"; "P"; "P"; "P" ]]
> │ > │ >     ++ [[ "J"; "J"; "J"; "J" ]]
> │ > │ > inl mbti =
> │ > │ >     listm'.map4 (fun a b c d => 
> $'$"{!a}{!b}{!c}{!d}"') i_e
> │ > s_n t_f j_p
> │ > │ > 
> │ > │ > mbti
> │ > │ > |> listm'.box
> │ > │ > |> listm'.to_array'
> │ > │ > |> _assert_eq' ;[[
> │ > │ >     "ISTJ"; "ISFJ"; "INFJ"; "INTJ"
> │ > │ >     "ISTP"; "ISFP"; "INFP"; "INTP"
> │ > │ >     "ESTP"; "ESFP"; "ENFP"; "ENTP"
> │ > │ >     "ESTJ"; "ESFJ"; "ENFJ"; "ENTJ"
> │ > │ > ]]
> │ > │ > 
> │ > │ > ── [ 299.08ms - stdout ] 
> │ > ───────────────────────────────────────────────────────
> │ > │ > │ let rec method1 (v0
> : bool) : bool =
> │ > │ > │     v0
> │ > │ > │ and closure0 (v0 : 
> string) () : unit =
> │ > │ > │     let v1 : 
> (string -> unit) = 
> │ > System.Console.WriteLine
> │ > │ > │     v1 v0
> │ > │ > │ and method0 () : 
> unit =
> │ > │ > │     let v0 : string
> = "I"
> │ > │ > │     let v1 : string
> = "S"
> │ > │ > │     let v2 : string
> = "T"
> │ > │ > │     let v3 : string
> = "J"
> │ > │ > │     let v4 : string
> = 
> │ > $"{v0}{v1}{v2}{v3}"
> │ > │ > │     let v5 : string
> = "F"
> │ > │ > │     let v6 : string
> = 
> │ > $"{v0}{v1}{v5}{v3}"
> │ > │ > │     let v7 : string
> = "N"
> │ > │ > │     let v8 : string
> = 
> │ > $"{v0}{v7}{v5}{v3}"
> │ > │ > │     let v9 : string
> = 
> │ > $"{v0}{v7}{v2}{v3}"
> │ > │ > │     let v10 : 
> string = "P"
> │ > │ > │     let v11 : 
> string = 
> │ > $"{v0}{v1}{v2}{v10}"
> │ > │ > │     let v12 : 
> string = 
> │ > $"{v0}{v1}{v5}{v10}"
> │ > │ > │     let v13 : 
> string = 
> │ > $"{v0}{v7}{v5}{v10}"
> │ > │ > │     let v14 : 
> string = 
> │ > $"{v0}{v7}{v2}{v10}"
> │ > │ > │     let v15 : 
> string = "E"
> │ > │ > │     let v16 : 
> string = 
> │ > $"{v15}{v1}{v2}{v10}"
> │ > │ > │     let v17 : 
> string = 
> │ > $"{v15}{v1}{v5}{v10}"
> │ > │ > │     let v18 : 
> string = 
> │ > $"{v15}{v7}{v5}{v10}"
> │ > │ > │     let v19 : 
> string = 
> │ > $"{v15}{v7}{v2}{v10}"
> │ > │ > │     let v20 : 
> string = 
> │ > $"{v15}{v1}{v2}{v3}"
> │ > │ > │     let v21 : 
> string = 
> │ > $"{v15}{v1}{v5}{v3}"
> │ > │ > │     let v22 : 
> string = 
> │ > $"{v15}{v7}{v5}{v3}"
> │ > │ > │     let v23 : 
> string = 
> │ > $"{v15}{v7}{v2}{v3}"
> │ > │ > │     let v24 : 
> string list = []
> │ > │ > │     let v26 : 
> string list = v23 :: v24 
> │ > │ > │     let v30 : 
> string list = v22 :: v26 
> │ > │ > │     let v34 : 
> string list = v21 :: v30 
> │ > │ > │     let v38 : 
> string list = v20 :: v34 
> │ > │ > │     let v42 : 
> string list = v19 :: v38 
> │ > │ > │     let v46 : 
> string list = v18 :: v42 
> │ > │ > │     let v50 : 
> string list = v17 :: v46 
> │ > │ > │     let v54 : 
> string list = v16 :: v50 
> │ > │ > │     let v58 : 
> string list = v14 :: v54 
> │ > │ > │     let v62 : 
> string list = v13 :: v58 
> │ > │ > │     let v66 : 
> string list = v12 :: v62 
> │ > │ > │     let v70 : 
> string list = v11 :: v66 
> │ > │ > │     let v74 : 
> string list = v9 :: v70 
> │ > │ > │     let v78 : 
> string list = v8 :: v74 
> │ > │ > │     let v82 : 
> string list = v6 :: v78 
> │ > │ > │     let v86 : 
> string list = v4 :: v82 
> │ > │ > │     let v90 : 
> (string list -> (string 
> │ > [])) = List.toArray
> │ > │ > │     let v91 : 
> (string []) = v90 v86
> │ > │ > │     let v94 : 
> string = "ISTJ"
> │ > │ > │     let v95 : 
> string = "ISFJ"
> │ > │ > │     let v96 : 
> string = "INFJ"
> │ > │ > │     let v97 : 
> string = "INTJ"
> │ > │ > │     let v98 : 
> string = "ISTP"
> │ > │ > │     let v99 : 
> string = "ISFP"
> │ > │ > │     let v100 : 
> string = "INFP"
> │ > │ > │     let v101 : 
> string = "INTP"
> │ > │ > │     let v102 : 
> string = "ESTP"
> │ > │ > │     let v103 : 
> string = "ESFP"
> │ > │ > │     let v104 : 
> string = "ENFP"
> │ > │ > │     let v105 : 
> string = "ENTP"
> │ > │ > │     let v106 : 
> string = "ESTJ"
> │ > │ > │     let v107 : 
> string = "ESFJ"
> │ > │ > │     let v108 : 
> string = "ENFJ"
> │ > │ > │     let v109 : 
> string = "ENTJ"
> │ > │ > │     let v110 : 
> (string []) = [|v94; v95;
> │ > v96; v97; v98; v99; 
> │ > │ > v100; v101; v102; v103; v104; v105; 
> v106; v107; v108; 
> │ > v109|]
> │ > │ > │     let v112 : bool
> = v91 = v110 
> │ > │ > │     let v116 : bool
> =
> │ > │ > │         if v112 
> then
> │ > │ > │             true
> │ > │ > │         else
> │ > │ > │             
> method1(v112)
> │ > │ > │     let v121 : 
> string = "__assert_eq'"
> │ > │ > │     let v122 : 
> string = $"{v121} / 
> │ > actual: %A{v91} / 
> │ > │ > expected: %A{v110}"
> │ > │ > │     let v125 : unit
> = ()
> │ > │ > │     let v126 : 
> (unit -> unit) = 
> │ > closure0(v122)
> │ > │ > │     let v127 : unit
> = (fun () -> v126 
> │ > (); v125) ()
> │ > │ > │     let v129 : bool
> = v116 = false
> │ > │ > │     if v129 then
> │ > │ > │         
> failwith<unit> v122
> │ > │ > │ method0()
> │ > │ > │ 
> │ > │ > │ __assert_eq' / 
> actual: [|"ISTJ"; "ISFJ";
> │ > "INFJ"; "INTJ"; 
> │ > │ > "ISTP"; "ISFP"; "INFP"; "INTP"; 
> "ESTP"; "ESFP";
> │ > │ > │   "ENFP"; "ENTP"; 
> "ESTJ"; "ESFJ"; 
> │ > "ENFJ"; "ENTJ"|] / 
> │ > │ > expected: [|"ISTJ"; "ISFJ"; "INFJ"; 
> "INTJ"; "ISTP"; "ISFP";
> │ > "INFP"; "INTP"; 
> │ > │ > "ESTP"; "ESFP";
> │ > │ > │   "ENFP"; "ENTP"; 
> "ESTJ"; "ESFJ"; 
> │ > "ENFJ"; "ENTJ"|]
> │ > │ > │ 
> │ > │ > 
> │ > │ > ── spiral 
> │ > 
> ──────────────────────────────────────────────────────────────────────
> │ > │ > //// test
> │ > │ > //// print_code
> │ > │ > 
> │ > │ > fun i =>
> │ > │ >     inl i_e =
> │ > │ >         if i < 8
> │ > │ >         then "I"
> │ > │ >         else "E"
> │ > │ >     inl s_n = 
> │ > │ >         inl group = (i / 2) % 2
> │ > │ >         if group = 0
> │ > │ >         then "S"
> │ > │ >         else "N"
> │ > │ >     inl t_f =
> │ > │ >         match i % 4 with
> │ > │ >         | 0 => "T"
> │ > │ >         | 1 => "F"
> │ > │ >         | 2 => "F"
> │ > │ >         | _ => "T"
> │ > │ >     inl j_p =
> │ > │ >         if i < 4
> │ > │ >         then "J"
> │ > │ >         elif i < 12
> │ > │ >         then "P"
> │ > │ >         else "J"
> │ > │ >     $'$"{!i_e}{!s_n}{!t_f}{!j_p}"'
> │ > │ > |> listm.init 16i32
> │ > │ > |> listm'.box
> │ > │ > |> listm'.to_array'
> │ > │ > |> _assert_eq' ;[[
> │ > │ >     "ISTJ"; "ISFJ"; "INFJ"; "INTJ"
> │ > │ >     "ISTP"; "ISFP"; "INFP"; "INTP"
> │ > │ >     "ESTP"; "ESFP"; "ENFP"; "ENTP"
> │ > │ >     "ESTJ"; "ESFJ"; "ENFJ"; "ENTJ"
> │ > │ > ]]
> │ > │ > 
> │ > │ > ── [ 339.35ms - stdout ] 
> │ > ───────────────────────────────────────────────────────
> │ > │ > │ let rec method1 (v0
> : bool) : bool =
> │ > │ > │     v0
> │ > │ > │ and closure0 (v0 : 
> string) () : unit =
> │ > │ > │     let v1 : 
> (string -> unit) = 
> │ > System.Console.WriteLine
> │ > │ > │     v1 v0
> │ > │ > │ and method0 () : 
> unit =
> │ > │ > │     let v0 : string
> = "I"
> │ > │ > │     let v1 : string
> = "S"
> │ > │ > │     let v2 : string
> = "T"
> │ > │ > │     let v3 : string
> = "J"
> │ > │ > │     let v4 : string
> = 
> │ > $"{v0}{v1}{v2}{v3}"
> │ > │ > │     let v5 : string
> = "F"
> │ > │ > │     let v6 : string
> = 
> │ > $"{v0}{v1}{v5}{v3}"
> │ > │ > │     let v7 : string
> = "N"
> │ > │ > │     let v8 : string
> = 
> │ > $"{v0}{v7}{v5}{v3}"
> │ > │ > │     let v9 : string
> = 
> │ > $"{v0}{v7}{v2}{v3}"
> │ > │ > │     let v10 : 
> string = "P"
> │ > │ > │     let v11 : 
> string = 
> │ > $"{v0}{v1}{v2}{v10}"
> │ > │ > │     let v12 : 
> string = 
> │ > $"{v0}{v1}{v5}{v10}"
> │ > │ > │     let v13 : 
> string = 
> │ > $"{v0}{v7}{v5}{v10}"
> │ > │ > │     let v14 : 
> string = 
> │ > $"{v0}{v7}{v2}{v10}"
> │ > │ > │     let v15 : 
> string = "E"
> │ > │ > │     let v16 : 
> string = 
> │ > $"{v15}{v1}{v2}{v10}"
> │ > │ > │     let v17 : 
> string = 
> │ > $"{v15}{v1}{v5}{v10}"
> │ > │ > │     let v18 : 
> string = 
> │ > $"{v15}{v7}{v5}{v10}"
> │ > │ > │     let v19 : 
> string = 
> │ > $"{v15}{v7}{v2}{v10}"
> │ > │ > │     let v20 : 
> string = 
> │ > $"{v15}{v1}{v2}{v3}"
> │ > │ > │     let v21 : 
> string = 
> │ > $"{v15}{v1}{v5}{v3}"
> │ > │ > │     let v22 : 
> string = 
> │ > $"{v15}{v7}{v5}{v3}"
> │ > │ > │     let v23 : 
> string = 
> │ > $"{v15}{v7}{v2}{v3}"
> │ > │ > │     let v24 : 
> string list = []
> │ > │ > │     let v26 : 
> string list = v23 :: v24 
> │ > │ > │     let v30 : 
> string list = v22 :: v26 
> │ > │ > │     let v34 : 
> string list = v21 :: v30 
> │ > │ > │     let v38 : 
> string list = v20 :: v34 
> │ > │ > │     let v42 : 
> string list = v19 :: v38 
> │ > │ > │     let v46 : 
> string list = v18 :: v42 
> │ > │ > │     let v50 : 
> string list = v17 :: v46 
> │ > │ > │     let v54 : 
> string list = v16 :: v50 
> │ > │ > │     let v58 : 
> string list = v14 :: v54 
> │ > │ > │     let v62 : 
> string list = v13 :: v58 
> │ > │ > │     let v66 : 
> string list = v12 :: v62 
> │ > │ > │     let v70 : 
> string list = v11 :: v66 
> │ > │ > │     let v74 : 
> string list = v9 :: v70 
> │ > │ > │     let v78 : 
> string list = v8 :: v74 
> │ > │ > │     let v82 : 
> string list = v6 :: v78 
> │ > │ > │     let v86 : 
> string list = v4 :: v82 
> │ > │ > │     let v90 : 
> (string list -> (string 
> │ > [])) = List.toArray
> │ > │ > │     let v91 : 
> (string []) = v90 v86
> │ > │ > │     let v94 : 
> string = "ISTJ"
> │ > │ > │     let v95 : 
> string = "ISFJ"
> │ > │ > │     let v96 : 
> string = "INFJ"
> │ > │ > │     let v97 : 
> string = "INTJ"
> │ > │ > │     let v98 : 
> string = "ISTP"
> │ > │ > │     let v99 : 
> string = "ISFP"
> │ > │ > │     let v100 : 
> string = "INFP"
> │ > │ > │     let v101 : 
> string = "INTP"
> │ > │ > │     let v102 : 
> string = "ESTP"
> │ > │ > │     let v103 : 
> string = "ESFP"
> │ > │ > │     let v104 : 
> string = "ENFP"
> │ > │ > │     let v105 : 
> string = "ENTP"
> │ > │ > │     let v106 : 
> string = "ESTJ"
> │ > │ > │     let v107 : 
> string = "ESFJ"
> │ > │ > │     let v108 : 
> string = "ENFJ"
> │ > │ > │     let v109 : 
> string = "ENTJ"
> │ > │ > │     let v110 : 
> (string []) = [|v94; v95;
> │ > v96; v97; v98; v99; 
> │ > │ > v100; v101; v102; v103; v104; v105; 
> v106; v107; v108; 
> │ > v109|]
> │ > │ > │     let v112 : bool
> = v91 = v110 
> │ > │ > │     let v116 : bool
> =
> │ > │ > │         if v112 
> then
> │ > │ > │             true
> │ > │ > │         else
> │ > │ > │             
> method1(v112)
> │ > │ > │     let v121 : 
> string = "__assert_eq'"
> │ > │ > │     let v122 : 
> string = $"{v121} / 
> │ > actual: %A{v91} / 
> │ > │ > expected: %A{v110}"
> │ > │ > │     let v125 : unit
> = ()
> │ > │ > │     let v126 : 
> (unit -> unit) = 
> │ > closure0(v122)
> │ > │ > │     let v127 : unit
> = (fun () -> v126 
> │ > (); v125) ()
> │ > │ > │     let v129 : bool
> = v116 = false
> │ > │ > │     if v129 then
> │ > │ > │         
> failwith<unit> v122
> │ > │ > │ method0()
> │ > │ > │ 
> │ > │ > │ __assert_eq' / 
> actual: [|"ISTJ"; "ISFJ";
> │ > "INFJ"; "INTJ"; 
> │ > │ > "ISTP"; "ISFP"; "INFP"; "INTP"; 
> "ESTP"; "ESFP";
> │ > │ > │   "ENFP"; "ENTP"; 
> "ESTJ"; "ESFJ"; 
> │ > "ENFJ"; "ENTJ"|] / 
> │ > │ > expected: [|"ISTJ"; "ISFJ"; "INFJ"; 
> "INTJ"; "ISTP"; "ISFP";
> │ > "INFP"; "INTP"; 
> │ > │ > "ESTP"; "ESFP";
> │ > │ > │   "ENFP"; "ENTP"; 
> "ESTJ"; "ESFJ"; 
> │ > "ENFJ"; "ENTJ"|]
> │ > │ > │ 
> │ > │ > 
> │ > │ > ── fsharp 
> │ > 
> ──────────────────────────────────────────────────────────────────────
> │ > │ > type PhonologicalFeature =
> │ > │ >     | VowelFeature of
> │ > │ >         height: Height
> │ > │ >         * backness: Backness
> │ > │ >         * roundedness: Roundedness
> │ > │ >         * tone: Option<Tone>
> │ > │ >         * stress: Option<Stress>
> │ > │ >         * length: Option<Length>
> │ > │ >     | ConsonantFeature of
> │ > │ >         place: PlaceOfArticulation
> │ > │ >         * manner: MannerOfArticulation
> │ > │ >         * voicing: Voicing
> │ > │ >         * length: Option<Length>
> │ > │ >     | VowelHarmonyFeature
> │ > │ >     | PitchAccentFeature
> │ > │ > 
> │ > │ > and Stress = Primary | Secondary
> │ > │ > and Length = Long | Short | HalfLong
> │ > │ > 
> │ > │ > and Height =
> │ > │ >     | High | NearHigh | HighMid
> │ > │ >     | Mid | LowMid | NearLow
> │ > │ >     | Low
> │ > │ > 
> │ > │ > and Backness = Front | Central | Back
> │ > │ > 
> │ > │ > and Roundedness = Rounded | Unrounded
> │ > │ > 
> │ > │ > and PlaceOfArticulation =
> │ > │ >     | Bilabial | Labiodental | Dental
> │ > │ >     | Alveolar | Postalveolar | 
> Retroflex
> │ > │ >     | Palatal | Velar | Uvular
> │ > │ >     | Pharyngeal | Epiglottal | 
> Glottal
> │ > │ > 
> │ > │ > and MannerOfArticulation =
> │ > │ >     | Plosive | Nasal | Trill
> │ > │ >     | TapOrFlap | Fricative | 
> LateralFricative
> │ > │ >     | Approximant | LateralApproximant
> │ > │ > 
> │ > │ > and Voicing = Voiced | Voiceless
> │ > │ > 
> │ > │ > and SecondaryArticulation =
> │ > │ >     | Labialization | Palatalization |
> Velarization
> │ > │ >     | Pharyngealization | Aspiration
> │ > │ > 
> │ > │ > and Tone =
> │ > │ >     | LevelTone of int
> │ > │ >     | ContourTone of int list
> │ > │ > 
> │ > │ > and MorphologicalFeature =
> │ > │ >     | RootFeature of string
> │ > │ >     | AffixFeature of AffixType * 
> string
> │ > │ >     | IncorporationFeature of string *
> MorphologicalFeature
> │ > │ >     | NonConcatenativePattern of 
> string * string
> │ > │ >     | AgglutinativeAffixFeature of 
> AgglutinativeAffixType *
> │ > string
> │ > │ >     | HonorificFeature of 
> HonorificType * string
> │ > │ > 
> │ > │ > and AgglutinativeAffixType = Suffix | 
> Prefix
> │ > │ > 
> │ > │ > and HonorificType = VerbHonorific | 
> NounHonorific
> │ > │ > 
> │ > │ > and AffixType =
> │ > │ >     | Prefix | Suffix | Infix
> │ > │ >     | Circumfix
> │ > │ > 
> │ > │ > type SyntacticFeature =
> │ > │ >     | WordFeature of 
> MorphologicalFeature list * 
> │ > LexicalCategory
> │ > │ >     | PhraseFeature of PhraseType * 
> SyntacticFeature list
> │ > │ >     | GrammaticalRelation of 
> GrammaticalRelationType * 
> │ > SyntacticFeature list
> │ > │ >     | SOVOrderFeature
> │ > │ >     | TopicCommentFeature
> │ > │ > 
> │ > │ > and GrammaticalRelationType =
> │ > │ >     | Ergative | Absolutive | 
> Nominative
> │ > │ >     | Accusative
> │ > │ > 
> │ > │ > and LexicalCategory =
> │ > │ >     | Noun | Verb | Adjective
> │ > │ >     | Adverb | Pronoun | Preposition
> │ > │ >     | Conjunction | Determiner | 
> Interjection
> │ > │ > 
> │ > │ > and PhraseType =
> │ > │ >     | NP | VP | AP
> │ > │ >     | PP | CP
> │ > │ > 
> │ > │ > and SemanticFeature =
> │ > │ >     | Meaning of string
> │ > │ >     | SemanticRole of SemanticRoleType
> * SemanticFeature
> │ > │ > 
> │ > │ > and SemanticRoleType =
> │ > │ >     | Agent | Patient | Instrument
> │ > │ >     | Location | Time | Cause
> │ > │ > 
> │ > │ > and PragmaticFeature =
> │ > │ >     | UseContext of string
> │ > │ >     | PolitenessLevel of Politeness
> │ > │ >     | SpeechAct of SpeechActType
> │ > │ >     | SpeechLevel of SpeechLevelType
> │ > │ > 
> │ > │ > and Politeness = Formal | Informal | 
> Neutral
> │ > │ > 
> │ > │ > and SpeechActType =
> │ > │ >     | Assertive | Directive | 
> Commissive
> │ > │ >     | Expressive | Declarative
> │ > │ > 
> │ > │ > and SpeechLevelType =
> │ > │ >     | FormalHigh | FormalLow | 
> InformalHigh
> │ > │ >     | InformalLow | Neutral
> │ > │ > 
> │ > │ > type LinguisticFeature =
> │ > │ >     | Phonological of 
> PhonologicalFeature
> │ > │ >     | Morphological of 
> MorphologicalFeature
> │ > │ >     | Syntactic of SyntacticFeature
> │ > │ >     | Semantic of SemanticFeature
> │ > │ >     | Pragmatic of PragmaticFeature
> │ > │ > 
> │ > │ > type LanguageConstruct =
> │ > │ >     | LanguageElement of 
> LinguisticFeature
> │ > │ >     | LanguageStructure of 
> LanguageConstruct list
> │ > │ >     | TranslationElement of 
> TranslationFeature
> │ > │ > 
> │ > │ > and TranslationFeature =
> │ > │ >     | LinkedPhonological of 
> PhonologicalFeature * 
> │ > PhonologicalFeature
> │ > │ >     | LinkedMorphological of 
> MorphologicalFeature * 
> │ > MorphologicalFeature
> │ > │ >     | LinkedSyntactic of 
> SyntacticFeature * 
> │ > SyntacticFeature
> │ > │ >     | LinkedSemantic of 
> SemanticFeature * SemanticFeature
> │ > │ > 
> │ > │ > type Discourse = DiscourseUnit of 
> LanguageConstruct list
> │ > │ > 
> │ > │ > type LanguageModel =
> │ > │ >     | Model of discourse: Discourse
> │ > │ > 
> │ > │ > ── fsharp 
> │ > 
> ──────────────────────────────────────────────────────────────────────
> │ > │ > let testEnglish =
> │ > │ >     Model(
> │ > │ >         DiscourseUnit [[
> │ > │ >             LanguageElement 
> (Phonological (ConsonantFeature
> │ > (Alveolar, Nasal, 
> │ > │ > Voiced, Some(HalfLong))));
> │ > │ >             LanguageElement 
> (Phonological (VowelFeature 
> │ > (High, Front, Unrounded,
> │ > │ > Some(LevelTone 1), Some(Primary), 
> Some(Short))));
> │ > │ >             LanguageElement 
> (Phonological (VowelFeature 
> │ > (Low, Front, Unrounded, 
> │ > │ > Some(LevelTone 2), Some(Secondary), 
> Some(Long))));
> │ > │ >             LanguageElement 
> (Phonological (ConsonantFeature
> │ > (Velar, Plosive, 
> │ > │ > Voiceless, Some(HalfLong))));
> │ > │ >             LanguageElement 
> (Morphological (RootFeature 
> │ > "I"));
> │ > │ >             LanguageElement 
> (Morphological (RootFeature 
> │ > "see"));
> │ > │ >             LanguageElement 
> (Morphological (RootFeature 
> │ > "a"));
> │ > │ >             LanguageElement 
> (Morphological (RootFeature 
> │ > "cat"));
> │ > │ >             LanguageElement (Syntactic
> (PhraseFeature (NP, 
> │ > [[WordFeature 
> │ > │ > ([[RootFeature "I"]], Pronoun)]])));
> │ > │ >             LanguageElement (Syntactic
> (PhraseFeature (VP, 
> │ > [[WordFeature 
> │ > │ > ([[RootFeature "see"]], Verb)]])));
> │ > │ >             LanguageElement (Syntactic
> (PhraseFeature (NP, 
> │ > [[WordFeature 
> │ > │ > ([[RootFeature "a"; RootFeature 
> "cat"]], Noun)]])));
> │ > │ >             LanguageElement (Semantic 
> (Meaning "Perception 
> │ > act of a feline by 
> │ > │ > the speaker"));
> │ > │ >             LanguageElement (Pragmatic
> (UseContext 
> │ > "Statement of an action being
> │ > │ > observed"))
> │ > │ >         ]]
> │ > │ >     )
> │ > │ > 
> │ > │ > let testPortuguese =
> │ > │ >     Model(
> │ > │ >         DiscourseUnit [[
> │ > │ >             LanguageElement 
> (Phonological (VowelFeature 
> │ > (High, Front, Unrounded,
> │ > │ > Some(LevelTone 1), Some(Primary), 
> Some(Short))));
> │ > │ >             LanguageElement 
> (Phonological (VowelFeature 
> │ > (Low, Front, Unrounded, 
> │ > │ > Some(LevelTone 2), Some(Secondary), 
> Some(Long))));
> │ > │ >             LanguageElement 
> (Phonological (VowelFeature 
> │ > (Mid, Back, Rounded, 
> │ > │ > Some(LevelTone 3), Some(Primary), 
> Some(Short))));
> │ > │ >             LanguageElement 
> (Phonological (ConsonantFeature
> │ > (Velar, Plosive, 
> │ > │ > Voiceless, Some(HalfLong))));
> │ > │ >             LanguageElement 
> (Morphological (RootFeature 
> │ > "Eu"));
> │ > │ >             LanguageElement 
> (Morphological (RootFeature 
> │ > "ver" |> ignore; 
> │ > │ > AffixFeature (Suffix, "o")));
> │ > │ >             LanguageElement 
> (Morphological (RootFeature 
> │ > "um"));
> │ > │ >             LanguageElement 
> (Morphological (RootFeature 
> │ > "gato"));
> │ > │ >             LanguageElement (Syntactic
> (PhraseFeature (NP, 
> │ > [[WordFeature 
> │ > │ > ([[RootFeature "Eu"]], Pronoun)]])));
> │ > │ >             LanguageElement (Syntactic
> (PhraseFeature (VP, 
> │ > [[WordFeature 
> │ > │ > ([[RootFeature "vejo"]], Verb)]])));
> │ > │ >             LanguageElement (Syntactic
> (PhraseFeature (NP, 
> │ > [[WordFeature 
> │ > │ > ([[RootFeature "um"; RootFeature 
> "gato"]], Noun)]])));
> │ > │ >             LanguageElement (Semantic 
> (Meaning "Ação de 
> │ > percepção de um felino 
> │ > │ > pelo falante"));
> │ > │ >             LanguageElement (Pragmatic
> (UseContext 
> │ > "Declaração de uma ação sendo
> │ > │ > observada"))
> │ > │ >         ]]
> │ > │ >     )
> │ > │ > 
> │ > │ > let testKorean =
> │ > │ >     Model(
> │ > │ >         DiscourseUnit [[
> │ > │ >             LanguageElement 
> (Phonological (ConsonantFeature
> │ > (Alveolar, Nasal, 
> │ > │ > Voiced, Some(Short))));
> │ > │ >             LanguageElement 
> (Phonological (VowelFeature 
> │ > (High, Back, Rounded, 
> │ > │ > None, None, Some(Short))));
> │ > │ >             LanguageElement 
> (Phonological (VowelFeature 
> │ > (Mid, Front, Unrounded, 
> │ > │ > None, None, Some(Long))));
> │ > │ >             LanguageElement 
> (Phonological (ConsonantFeature
> │ > (Bilabial, Plosive, 
> │ > │ > Voiceless, Some(Short))));
> │ > │ >             LanguageElement 
> (Morphological (RootFeature 
> │ > "나"));
> │ > │ >             LanguageElement 
> (Morphological (RootFeature 
> │ > "보다"));
> │ > │ >             LanguageElement 
> (Morphological (AffixFeature 
> │ > (Suffix, "아")));
> │ > │ >             LanguageElement 
> (Morphological (RootFeature 
> │ > "고양이"));
> │ > │ >             LanguageElement (Syntactic
> (PhraseFeature (NP, 
> │ > [[WordFeature 
> │ > │ > ([[RootFeature "나"]], Pronoun)]])));
> │ > │ >             LanguageElement (Syntactic
> (PhraseFeature (VP, 
> │ > [[WordFeature 
> │ > │ > ([[RootFeature "보다"; AffixFeature 
> (Suffix, "아")]], 
> │ > Verb)]])));
> │ > │ >             LanguageElement (Syntactic
> (PhraseFeature (NP, 
> │ > [[WordFeature 
> │ > │ > ([[RootFeature "고양이"]], Noun)]])));
> │ > │ >             LanguageElement (Semantic 
> (Meaning "화자에 의한
> │ > 고양이의 관찰 
> │ > │ > 행위"));
> │ > │ >             LanguageElement (Pragmatic
> (UseContext 
> │ > "관찰되고 있는 행동의 진술"))
> │ > │ >         ]]
> │ > │ >     )
> │ > │ > 
> │ > │ > ── markdown 
> │ > 
> ────────────────────────────────────────────────────────────────────
> │ > │ > │ ## main
> │ > │ > 
> │ > │ > ── spiral 
> │ > 
> ──────────────────────────────────────────────────────────────────────
> │ > │ > inl main (_args : array_base string) =
> │ > │ >     0i32
> │ > │ > 
> │ > │ > inl main () =
> │ > │ >     $'let main args = !main args' : ()
> │ > │ > 
> │ > │ > ── spiral 
> │ > 
> ──────────────────────────────────────────────────────────────────────
> │ > │ > inl app () =
> │ > │ >     "test" |> console.write_line
> │ > │ >     0i32
> │ > │ > 
> │ > │ > inl main () =
> │ > │ >     print_static "<test>"
> │ > │ > 
> │ > │ >     app
> │ > │ >     |> dyn
> │ > │ >     |> ignore
> │ > │ > 
> │ > │ >     print_static "</test>"
> │ > │ 00:00:13 v #3 
> runtime.execute_with_options / result / {
> │ > exit_code = 0; std_trace_length = 27103 }
> │ > │ 00:00:13 d #4 
> runtime.execute_with_options / { 
> │ > file_name = jupyter; arguments = ["nbconvert", 
> │ > 
> "c:/home/git/polyglot/apps/spiral/temp/test/test.dib.ipynb", "--to", "html", 
> │ > "--HTMLExporter.theme=dark"]; options = { command = jupyter
> nbconvert 
> │ > "c:/home/git/polyglot/apps/spiral/temp/test/test.dib.ipynb"
> --to html 
> │ > --HTMLExporter.theme=dark; cancellation_token = None; 
> environment_variables = 
> │ > Array(MutCell([])); on_line = None; stdin = None; trace = 
> true; 
> │ > working_directory = None } }
> │ > │ 00:00:14 v #5 ! [NbConvertApp] 
> Converting notebook 
> │ > c:/home/git/polyglot/apps/spiral/temp/test/test.dib.ipynb 
> to html
> │ > │ 00:00:14 v #6 ! 
> │ > 
> C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.
> │ > py:96: MissingIDFieldWarning: Cell is missing an id field, 
> this will become a 
> │ > hard error in future nbformat versions. You may want to use
> `normalize()` on 
> │ > your notebooks before validations (available since nbformat
> 5.1.4). Previous 
> │ > versions of nbformat are fixing this issue transparently, 
> and will stop doing so
> │ > in the future.
> │ > │ 00:00:14 v #7 !   validate(nb)
> │ > │ 00:00:15 v #8 ! 
> │ > 
> C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\
> │ > highlight.py:71: UserWarning: IPython3 lexer unavailable, 
> falling back on Python
> │ > 3
> │ > │ 00:00:15 v #9 !   return 
> _pygments_highlight(
> │ > │ 00:00:15 v #10 ! [NbConvertApp] 
> Writing 332790 bytes to
> │ > c:\home\git\polyglot\apps\spiral\temp\test\test.dib.html
> │ > │ 00:00:15 v #11 
> runtime.execute_with_options / result / 
> │ > { exit_code = 0; std_trace_length = 872 }
> │ > │ 00:00:15 d #12 spiral.run / dib / 
> jupyter nbconvert / {
> │ > exit_code = 0; jupyter_result_length = 872 }
> │ > │ 00:00:15 d #13 
> runtime.execute_with_options / { 
> │ > file_name = pwsh; arguments = ["-c", "$counter = 1; $path =│ > 'c:/home/git/polyglot/apps/spiral/temp/test/test.dib.html';
> (Get-Content $path 
> │ > -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { 
> $_.Groups[1].Value + 
> │ > $counter++ } | Set-Content $path"]; options = { command = 
> pwsh -c "$counter = 1;
> │ > $path = 
> 'c:/home/git/polyglot/apps/spiral/temp/test/test.dib.html'; (Get-Content
> │ > $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { 
> $_.Groups[1].Value + 
> │ > $counter++ } | Set-Content $path"; cancellation_token = 
> None; 
> │ > environment_variables = Array(MutCell([])); on_line = None;
> stdin = None; trace 
> │ > = true; working_directory = None } }
> │ > │ 00:00:15 v #14 
> runtime.execute_with_options / result / 
> │ > { exit_code = 0; std_trace_length = 0 }
> │ > │ 00:00:15 d #15 spiral.run / dib / 
> html cell ids / { 
> │ > exit_code = 0; pwsh_replace_html_result_length = 0 }
> │ > │ 00:00:15 d #16 spiral.run / dib / 
> { exit_code = 0; 
> │ > result_length = 28034 }
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### parse the .dib file into .spi 
> format with dibparser
> │ > 
> │ > ── pwsh 
> ────────────────────────────────────────────────────────────────────────
> │ > { . ../../../../apps/parser/dist/DibParser$(_exe) test.dib 
> spi } | Invoke-Block
> │ > 
> │ > ── [ 452.98ms - stdout ] 
> ───────────────────────────────────────────────────────
> │ > │ 00:00:00 d #1 writeDibCode / 
> output: Spi / path: 
> │ > test.dib
> │ > │ 00:00:00 d #2 parseDibCode / 
> output: Spi / file: 
> │ > test.dib
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### build .fsx file from .spi using 
> supervisor
> │ > 
> │ > ── pwsh 
> ────────────────────────────────────────────────────────────────────────
> │ > { . ../../../../apps/spiral/dist/Supervisor$(_exe) 
> --build-file test.spi 
> │ > test.fsx } | Invoke-Block
> │ > 
> │ > ── [ 4.35s - stdout ] 
> ──────────────────────────────────────────────────────────
> │ > │ <test>
> │ > │ </test>
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## compile and format the project
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### compile project with fable 
> targeting optimized rust
> │ > 
> │ > ── pwsh 
> ────────────────────────────────────────────────────────────────────────
> │ > dotnet fable --optimize --lang rs --extension .rs
> │ > 
> │ > ── [ 2.98s - stdout ] 
> ──────────────────────────────────────────────────────────
> │ > │ Fable 5.0.0-alpha.9: F# to Rust compiler
> (status: alpha)
> │ > │ 
> │ > │ Thanks to the contributor! 
> @inchingforward
> │ > │ Stand with Ukraine! 
> https://standwithukraine.com.ua/
> │ > │ 
> │ > │ Parsing test.fsproj...
> │ > │ Retrieving project options from cache, 
> in case of issues run 
> │ > `dotnet fable clean` or try `--noCache` option.
> │ > │ Project and references (1 source files) 
> parsed in 152ms
> │ > │ 
> │ > │ Started Fable compilation...
> │ > │ 
> │ > │ Fable compilation finished in 1504ms
> │ > │ 
> │ > │ .\test.fsx(11,0): (11,2) warning FABLE: 
> For Rust, support for
> │ > F# static and module do bindings is disabled by default. It
> can be enabled with 
> │ > the 'static_do_bindings' feature. Use at your own risk!
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### fix formatting issues in the .rs 
> file using regex and 
> │ > set-content
> │ > 
> │ > ── pwsh 
> ────────────────────────────────────────────────────────────────────────
> │ > (Get-Content test.rs) `
> │ >     -replace [[regex]]::Escape("),);"), "));" `
> │ >     | FixRust `
> │ > | Set-Content test.rs
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### format the rust code using cargo 
> fmt
> │ > 
> │ > ── pwsh 
> ────────────────────────────────────────────────────────────────────────
> │ > cargo fmt --
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## build and test the project
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### build the project in release mode 
> using nightly rust 
> │ > compiler
> │ > 
> │ > ── pwsh 
> ────────────────────────────────────────────────────────────────────────
> │ > cargo build --release
> │ > 
> │ > ── [ 7.38s - stdout ] 
> ──────────────────────────────────────────────────────────
> │ > │    Compiling fable_library_rust 
> v0.1.0 
> │ > 
> (C:\home\git\polyglot\lib\rust\fable\fable_modules\fable-library-rust)
> │ > │    Compiling spiral_temp_test 
> v0.0.1 
> │ > (C:\home\git\polyglot\apps\spiral\temp\test)
> │ > │     Finished `release` profile 
> [optimized] target(s) in 
> │ > 7.31s
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### run release tests with output 
> enabled
> │ > 
> │ > ── pwsh 
> ────────────────────────────────────────────────────────────────────────
> │ > { cargo test --release -- --show-output } | Invoke-Block
> │ > 
> │ > ── [ 21.74s - stdout ] 
> ─────────────────────────────────────────────────────────
> │ > │    Compiling fable_library_rust 
> v0.1.0 
> │ > 
> (C:\home\git\polyglot\lib\rust\fable\fable_modules\fable-library-rust)
> │ > │    Compiling spiral_temp_test 
> v0.0.1 
> │ > (C:\home\git\polyglot\apps\spiral\temp\test)
> │ > │     Finished `release` profile 
> [optimized] target(s) in 
> │ > 21.55s
> │ > │      Running unittests main.rs 
> │ > 
> (C:\home\git\polyglot\workspace\target\release\deps\spiral_temp_test-6f297c6a0c2
> │ > 32188.exe)
> │ > │ 
> │ > │ running 3 tests
> │ > │ test test_parse_number ... ok
> │ > │ test prop_parse_format_idempotent ... ok
> │ > │ test 
> │ > 
> adding_and_then_removing_an_item_from_the_cart_leaves_the_cart_unchanged ... ok
> │ > │ 
> │ > │ successes:
> │ > │ 
> │ > │ ---- prop_parse_format_idempotent stdout
> ----
> │ > │ input=Operator("=")
> │ > │ input=Integer(-5880055033283727690)
> │ > │ input=Integer(-1889514408684729651)
> │ > │ input=StringLiteral("*=<0*Fo?2CZT0 
> j_pQEkUEx<$u{T")
> │ > │ input=Identifier("Th3")
> │ > │ input=Identifier("bJ")
> │ > │ 
> input=StringLiteral("t<@V%Wqm'`'pXDXi>W&B{}$,*`")
> │ > │ input=Operator("+")
> │ > │ input=Identifier("L1NAvYS9n8tEq9")
> │ > │ input=StringLiteral("+n8kh[zb")
> │ > │ input=Comment("%`\\6B")
> │ > │ input=Integer(2981234038766684809)
> │ > │ input=StringLiteral("?os*zJ:< &=f%a")
> │ > │ 
> input=Identifier("k2w2AJ9GCC42mqM6KHdZNT")
> │ > │ input=StringLiteral("!n)j?<&%{?")
> │ > │ input=Comment("X*=/mk]gN&")
> │ > │ input=Integer(-4505215723071378428)
> │ > │ 
> input=Identifier("It1m94zq6wZg4fY1T8IV4Eq0tY7")
> │ > │ input=Integer(3967557997694225505)
> │ > │ 
> input=StringLiteral(":F*E=)%)aMcm.Mi-E/A")
> │ > │ input=Comment("<&\\s;;%h%/\\xY&I).")
> │ > │ input=StringLiteral("1L 
> l$uT:o)hp+Po/Sx2+:")
> │ > │ input=Operator("/")
> │ > │ input=Operator("=")
> │ > │ input=Operator("=")
> │ > │ input=Comment("uFQ?vUm8\\1{<P*x4sg?c/")
> │ > │ input=StringLiteral("r4pN?k%?/2h+.(2s")
> │ > │ input=Operator("*")
> │ > │ input=Comment("=?wovG&<`$?RC^r:")
> │ > │ 
> input=Identifier("kdsosSgNZX7I2dn6hv1q0XG")
> │ > │ input=Comment("cD?W:lX<dIP'dYR'F+Cxph%")
> │ > │ input=StringLiteral("m|eDk[//0Dx<`S=")
> │ > │ input=Integer(-1746107362464087955)
> │ > │ input=Integer(4255405583815162318)
> │ > │ 
> input=StringLiteral("V(v#{>yN.}Mh=%v&-Ra4&Qxb")
> │ > │ input=Identifier("h")
> │ > │ input=Identifier("ZwoC0ks8AV92xD73aDF")
> │ > │ input=Operator("-")
> │ > │ 
> input=Comment(")wBFU:{<qu=wTv^'Xbv{\"k-{\\S*")
> │ > │ input=Integer(807916361279572607)
> │ > │ 
> input=StringLiteral("=6{'J.@I?@GuS]a|^$U5l9<%$")
> │ > │ 
> input=Identifier("SVOUwuAL60hg3LNniC34E885x")
> │ > │ input=Identifier("RC0vNo98S47M0")
> │ > │ input=Comment("?/:'/s<")
> │ > │ input=Operator("(")
> │ > │ input=StringLiteral("::O?nE J0%$G/&JC")
> │ > │ input=Operator("/")
> │ > │ 
> input=StringLiteral("L1%uo&T<Qyw/HWKqFIc49|`")
> │ > │ input=Integer(1971280340698015135)
> │ > │ input=Integer(-8237089597345222172)
> │ > │ 
> input=StringLiteral("}%-ccjUX%J2$?'{/YK?")
> │ > │ 
> input=Comment("a.9wSZ&R2uTR0l`WL5!:5[O?")
> │ > │ 
> input=StringLiteral("{%AX<$<`zsay:`QSS58{{6")
> │ > │ input=Operator("*")
> │ > │ input=Integer(-1837880839511468755)
> │ > │ input=Integer(2346324294885050637)
> │ > │ 
> input=Comment("N*%3=&spNoG9/Cw;\"Z6\\}.")
> │ > │ input=StringLiteral("3q:uy>c")
> │ > │ input=StringLiteral("t[#W,<<:=`N&")
> │ > │ input=Integer(-6898704675258718585)
> │ > │ 
> input=Comment(">S`!q|`Z\\$[l<:b_kUHGJvG:$")
> │ > │ 
> input=Identifier("Q5N9S8QLr6qMd94c7so47dF3C8j72Ud")
> │ > │ 
> input=Comment("?}g?g\\<X%*<t=:Tjr#*3,$uiNLMN] ")
> │ > │ input=Operator("=")
> │ > │ input=StringLiteral("vG.:>c 
> f<&se_{?<'0BB?7")
> │ > │ input=Integer(2455195370172353861)
> │ > │ input=Identifier("KSnVaD4DvXPF")
> │ > │ input=Identifier("ANY5T6V")
> │ > │ 
> input=Comment("/nYc(W6<6w\"={yDglH.&2<`i:Z")
> │ > │ input=StringLiteral("&z:L/MEi%<eC{")
> │ > │ 
> input=Comment("J\"&@&[{'eDj7N<?=b)<~IZ:h`")
> │ > │ input=Identifier("Em")
> │ > │ input=Operator("*")
> │ > │ input=Operator(")")
> │ > │ input=Operator("(")
> │ > │ input=Identifier("yMfK1aAY6tOK9PC1Tze")
> │ > │ input=Operator("/")
> │ > │ input=StringLiteral("*_^b.&/D0")
> │ > │ 
> input=Identifier("YnMKC6QHm8DiDi28lKfi8bIZGLb")
> │ > │ input=Operator("=")
> │ > │ input=Operator("/")
> │ > │ input=Operator("+")
> │ > │ input=Comment("J%S_q]")
> │ > │ input=Identifier("Y")
> │ > │ input=Identifier("O698uMlgnIy6")
> │ > │ input=Operator("-")
> │ > │ input=Operator("=")
> │ > │ input=Identifier("ol0qDwvdD0YB7H4")
> │ > │ input=Integer(6582675571704225919)
> │ > │ input=Operator("-")
> │ > │ input=Operator("-")
> │ > │ input=Integer(4965762019097306286)
> │ > │ input=Integer(-2024535663796118969)
> │ > │ input=StringLiteral("?'?<dOX^K$A")
> │ > │ input=Operator("=")
> │ > │ input=Comment("w{/m(uE=?Ss")
> │ > │ input=Comment("F2:s\"Z#.'*^h**=")
> │ > │ input=Comment("u%d*}z")
> │ > │ input=StringLiteral("'.'")
> │ > │ input=Operator("(")
> │ > │ 
> input=Identifier("gLlCKUCF7t9S88TK53n1mh6h0hh9U")
> │ > │ input=Operator(")")
> │ > │ 
> input=Comment(">\"5zb)#r*u&*nL\\<4k!8?e\"=($`")
> │ > │ input=Comment("_>f6{\".'}Bl{*")
> │ > │ input=Comment("\"n={?X/uIID\"k`A%")
> │ > │ input=StringLiteral("l{nKq>cx")
> │ > │ input=Integer(-1003316408749401242)
> │ > │ input=Operator("*")
> │ > │ 
> input=StringLiteral("}_vl2r]{4Yq*={{4`tFk^JrLw")
> │ > │ input=StringLiteral("1>U")
> │ > │ 
> input=Identifier("vM2mj4NH7S6zLrv69ar30H5KXMzr")
> │ > │ input=Identifier("g32uzLB")
> │ > │ input=Operator("*")
> │ > │ 
> input=Identifier("DG74erim1jEh2y6Iktj6w3yQ4F8sqc")
> │ > │ input=Integer(2460289053799195159)
> │ > │ input=Operator("+")
> │ > │ input=Operator("+")
> │ > │ 
> input=StringLiteral("J&Q$&bZ/.l.:L-n?I`OJ!3f")
> │ > │ input=StringLiteral("")
> │ > │ input=Operator("-")
> │ > │ input=Operator("(")
> │ > │ input=Identifier("s4tAoAW2R53RNKKrM0")
> │ > │ input=StringLiteral("!3q%Ha1Y. 
> d%hValuujZK5=:$E")
> │ > │ input=Integer(-9129481922333921993)
> │ > │ input=StringLiteral("*$fhMxr9`")
> │ > │ 
> input=StringLiteral("/R*x<~<x7[sZH/.d&u?Vz_$Z4ynB.?/b")
> │ > │ input=StringLiteral("k")
> │ > │ input=Identifier("A6QS7GS6dRz16OP5Erh")
> │ > │ input=Identifier("qOk87JdO7H0JkDSNT8")
> │ > │ input=Integer(1864168979269071751)
> │ > │ 
> input=StringLiteral("=M-b.iCzI*<&W:O(~(,k+bTM^^4")
> │ > │ input=Comment(".U/9/6ao77/:z@")
> │ > │ input=Operator("+")
> │ > │ input=Comment("")
> │ > │ input=Comment("O%{hf.,~\"9`3]2<.Y6r")
> │ > │ input=Integer(4490241105683983007)
> │ > │ input=StringLiteral("K$y'*M$]&V&&eE")
> │ > │ input=StringLiteral("a")
> │ > │ input=Comment("c'o\"0%.~S%WE")
> │ > │ input=Operator("=")
> │ > │ input=Operator("=")
> │ > │ input=Comment("[cI\\o1:N5+qx<#{$/%i*lf")
> │ > │ input=Operator("(")
> │ > │ input=Operator("=")
> │ > │ input=StringLiteral("={DuUR:-")
> │ > │ 
> input=Identifier("MF1Z91FVSBhmv0F7xRZtM9TPug8QB")
> │ > │ input=StringLiteral(")s/n*&'#*<?) 
> X'a>FXP$%&-ox")
> │ > │ input=Comment("\"P#={\"^-^`2:IN/+DIU /")
> │ > │ input=Operator("/")
> │ > │ input=StringLiteral("cw.yS%")
> │ > │ 
> input=StringLiteral("=}MQ,tR&1/awv$:`G<+&</`,:%g%'}%")
> │ > │ input=Comment("}; #{i.?")
> │ > │ input=StringLiteral("")
> │ > │ input=Identifier("klLfJD")
> │ > │ input=Identifier("A")
> │ > │ input=Identifier("lM4Ic1flv06fC")
> │ > │ input=Integer(-390306756133909335)
> │ > │ input=Identifier("bN21RFWh2EXwD")
> │ > │ input=Comment("mz=`D`+y!E}#Gn.U?#")
> │ > │ input=StringLiteral("_ 
> ;}<$`v[,qGnky7bx+oW;Ns*/.#+")
> │ > │ input=StringLiteral("J%CRGkfm:ovj/<")
> │ > │ 
> input=Identifier("l350X05A4mHtmhHz9bF9rJ")
> │ > │ input=Integer(-8725235487087183981)
> │ > │ 
> input=StringLiteral("&Sq'm-/%$+&p|^{;<vH,:qZ*)/T/")
> │ > │ input=StringLiteral("/R1{'v{")
> │ > │ input=Comment("J:::=b)xrxo(?':\" OpNt4")
> │ > │ input=Operator("+")
> │ > │ input=StringLiteral("&6&.fP,")
> │ > │ input=Integer(2842572538107338564)
> │ > │ input=Integer(6363379558685934105)
> │ > │ input=StringLiteral("{Fb")
> │ > │ input=Operator("-")
> │ > │ input=Operator("-")
> │ > │ input=Identifier("mZu77WTQO2RXZ")
> │ > │ input=Identifier("kQTyT7dF6MJlD")
> │ > │ 
> input=Comment("$}<[\"SbB=w>=4$IXIB#%'O*??F*i.G")
> │ > │ 
> input=Identifier("njUC46VPoylxpit55jZif")
> │ > │ input=StringLiteral("%qf")
> │ > │ input=Integer(-3056060483675222505)
> │ > │ input=Integer(-9006938080340960348)
> │ > │ 
> input=Comment("8l^%K%!:{i.p\\(/U$A`@vNe\\1F*")
> │ > │ input=Operator("-")
> │ > │ input=Integer(-2295500087230106286)
> │ > │ 
> input=Comment(">m$YyX90#HQJDq3H+9L.owTl9$7")
> │ > │ input=Identifier("xoT8p1sFF")
> │ > │ input=Operator("*")
> │ > │ input=Identifier("r1j4n13N9t15cBByZj0")
> │ > │ input=Operator("*")
> │ > │ input=Comment("E%h>%<YRl")
> │ > │ input=StringLiteral("%E%v6P@&H(=a2{<V ")
> │ > │ input=StringLiteral("~xH<o=")
> │ > │ input=Comment("e;%?_$7B.jg!<+?wnV*Y")
> │ > │ 
> input=Identifier("U1UC9yYYV3gWm5B46IKcZ")
> │ > │ input=StringLiteral("'Uj=$]<&@")
> │ > │ input=StringLiteral("<$ <DT")
> │ > │ input=StringLiteral("`LMI*$Un:u")
> │ > │ input=Integer(6529454482495965149)
> │ > │ 
> input=StringLiteral("H{L{/{-'*r`m?I6'%b!'Jnz/p")
> │ > │ input=Comment("I:/$__(")
> │ > │ 
> input=Identifier("O7kW6ss1S4Z6vvW6qZW107oGTTj8")
> │ > │ input=Integer(-6263573762060341262)
> │ > │ input=Integer(7648007829646650635)
> │ > │ input=Identifier("OmAfVRre8T")
> │ > │ input=Integer(7449531582293931158)
> │ > │ input=Integer(-5708482919585391972)
> │ > │ input=Identifier("Dv6zOM5Zw4nloI61")
> │ > │ input=Integer(7842159380249936175)
> │ > │ input=Operator("=")
> │ > │ input=Integer(-5956419551337669769)
> │ > │ input=StringLiteral(".`66?1j*0.&7*")
> │ > │ 
> input=StringLiteral("E%e!W@<&8xr|37:N:G.t.K<%tq%F:cA")
> │ > │ input=StringLiteral("]=3^)t]0</R/1$f 
> /^Bb/wpS")
> │ > │ input=Integer(5495665941403795229)
> │ > │ input=Operator(")")
> │ > │ input=Integer(371508073977334839)
> │ > │ input=Identifier("ofn")
> │ > │ 
> input=Identifier("z8D7BQ3gXjFW5GjP9at9A3")
> │ > │ 
> input=Comment("L=]m\"&|>~3q/LdwT<$wk$nbZ`n<\"")
> │ > │ input=StringLiteral("`wWa:^${Jy}2bb<'9")
> │ > │ input=StringLiteral("|&?s>-6X}Teo}1//;")
> │ > │ input=Identifier("P6OL5UE5o37Q0Z78")
> │ > │ 
> input=Identifier("Nk9Ph1uNj79K5PnsI4IQbfZz")
> │ > │ input=Identifier("fc4WK4Z6bY08q3wG")
> │ > │ input=Identifier("EhKv9Rt09JVx8Rr3o")
> │ > │ input=Operator("=")
> │ > │ 
> input=Identifier("zdwOq15sVJJD7xOVKA7uhks7bXghW42ay")
> │ > │ input=StringLiteral("hk&vyl")
> │ > │ input=StringLiteral("{*W")
> │ > │ input=StringLiteral("pY}_b$U_+=;. 
> Ca{O:])h)g{")
> │ > │ input=Integer(7721266294968123718)
> │ > │ input=Integer(6894402216803366822)
> │ > │ input=Integer(645669991326488193)
> │ > │ input=StringLiteral("x*ve t$#j")
> │ > │ input=Operator("+")
> │ > │ input=Identifier("GAEf5BILO498E")
> │ > │ input=Operator("-")
> │ > │ input=Operator("/")
> │ > │ input=Operator("=")
> │ > │ input=Operator("=")
> │ > │ input=Comment(":@Rw`9c/{rV)-ea|Uv{X`6.")
> │ > │ input=Identifier("m5JYGK1PQn2")
> │ > │ input=Integer(2226921592745048012)
> │ > │ input=Identifier("etyvOP8QbT524KTeiX0")
> │ > │ 
> input=StringLiteral("h4NFcGq%)7%B&QB*h*")
> │ > │ 
> input=StringLiteral("V5t{4q#s-yYj.W/E]Nz=[=")
> │ > │ input=Operator("-")
> │ > │ input=Integer(6272549452683190482)
> │ > │ input=Identifier("sNvhj")
> │ > │ input=StringLiteral("a~.DFNy$@")
> │ > │ 
> input=StringLiteral("#~,9.2`G<w<fs3>]S`$<8iQk..")
> │ > │ input=Identifier("IfXuqjyMS")
> │ > │ input=Identifier("MII1rf")
> │ > │ 
> input=Comment("E*_\\4\\q4zzj8.*VZWl5Qb%E8?:P+%e")
> │ > │ input=Integer(-8643915245316167563)
> │ > │ input=Integer(-5200611682617796837)
> │ > │ input=Operator("+")
> │ > │ 
> │ > │ 
> │ > │ successes:
> │ > │     
> │ > 
> adding_and_then_removing_an_item_from_the_cart_leaves_the_cart_unchanged
> │ > │     prop_parse_format_idempotent
> │ > │     test_parse_number
> │ > │ 
> │ > │ test result: ok. 3 passed; 0 failed; 0 
> ignored; 0 measured; 0
> │ > filtered out; finished in 0.11s
> │ > │ 
> │ > │ 
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ### execute the binary in release mode
> │ > 
> │ > ── pwsh 
> ────────────────────────────────────────────────────────────────────────
> │ > { . 
> $ScriptDir/../../../../workspace/target/release/spiral_temp_test$(_exe) } | 
> │ > Invoke-Block
> │ > 
> │ > ── [ 18.28ms - stdout ] 
> ────────────────────────────────────────────────────────
> │ > │ app=test
> │ > │ 
> │ 00:00:55 v #3 runtime.execute_with_options / result / {
> exit_code = 0; std_trace_length = 69635 }
> │ 00:00:55 d #4 runtime.execute_with_options / { 
> file_name = jupyter; arguments = ["nbconvert", 
> "c:/home/git/polyglot/apps/spiral/temp/test/build.dib.ipynb", "--to", "html", 
> "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert 
> "c:/home/git/polyglot/apps/spiral/temp/test/build.dib.ipynb" --to html 
> --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = 
> Array(MutCell([])); on_line = None; stdin = None; trace = true; 
> working_directory = None } }
> │ 00:00:56 v #5 ! [NbConvertApp] Converting notebook 
> c:/home/git/polyglot/apps/spiral/temp/test/build.dib.ipynb to html
> │ 00:00:56 v #6 ! 
> C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.
> py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a 
> hard error in future nbformat versions. You may want to use `normalize()` on 
> your notebooks before validations (available since nbformat 5.1.4). Previous 
> versions of nbformat are fixing this issue transparently, and will stop doing so
> in the future.
> │ 00:00:56 v #7 !   validate(nb)
> │ 00:00:57 v #8 ! 
> C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\
> highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python
> 3
> │ 00:00:57 v #9 !   return _pygments_highlight(
> │ 00:00:57 v #10 ! [NbConvertApp] Writing 346836 bytes to
> c:\home\git\polyglot\apps\spiral\temp\test\build.dib.html
> │ 00:00:57 v #11 runtime.execute_with_options / result / 
> { exit_code = 0; std_trace_length = 874 }
> │ 00:00:57 d #12 spiral.run / dib / jupyter nbconvert / {
> exit_code = 0; jupyter_result_length = 874 }
> │ 00:00:57 d #13 runtime.execute_with_options / { 
> file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 
> 'c:/home/git/polyglot/apps/spiral/temp/test/build.dib.html'; (Get-Content $path 
> -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + 
> $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1;
> $path = 'c:/home/git/polyglot/apps/spiral/temp/test/build.dib.html'; 
> (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { 
> $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = 
> None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; 
> trace = true; working_directory = None } }
> │ 00:00:58 v #14 runtime.execute_with_options / result / 
> { exit_code = 0; std_trace_length = 0 }
> │ 00:00:58 d #15 spiral.run / dib / html cell ids / { 
> exit_code = 0; pwsh_replace_html_result_length = 0 }
> │ 00:00:58 d #16 spiral.run / dib / { exit_code = 0; 
> result_length = 70568 }
> │ polyglot/scripts/core.ps1/GetFullPath / Path: ./build.py / 
> Location: C:\home\git\polyglot\apps\spiral\temp\blender / ResolvedLocation: 
> C:\home\git\polyglot\apps\spiral\temp\blender
> │ polyglot/scripts/core.ps1/GetFullPath / FullPath: 
> C:\home\git\polyglot\apps\spiral\temp\blender\build.py
> │ blender / Path: 
> C:\home\git\polyglot\apps\spiral\temp\blender\build.py
> │ TBBmalloc: skip allocation functions replacement in 
> ucrtbase.dll: unknown prologue for function _aligned_free
> │ Blender 4.3.2 (hash 32f5fdce0a0a built 2024-12-17 03:35:23)
> │ Fra:1 Mem:10.21M (Peak 10.21M) | Time:00:00.01 | Mem:0.00M, 
> Peak:0.00M | Scene, ViewLayer | Synchronizing object | Cube
> │ Fra:1 Mem:10.29M (Peak 10.29M) | Time:00:00.01 | Mem:0.00M, 
> Peak:0.00M | Scene, ViewLayer | Initializing
> │ Fra:1 Mem:10.13M (Peak 10.29M) | Time:00:00.01 | Mem:0.00M, 
> Peak:0.00M | Scene, ViewLayer | Waiting for render to start
> │ Fra:1 Mem:10.13M (Peak 10.29M) | Time:00:00.01 | Mem:0.00M, 
> Peak:0.00M | Scene, ViewLayer | Loading render kernels (may take a few minutes 
> the first time)
> │ Fra:1 Mem:10.13M (Peak 10.29M) | Time:00:00.01 | Mem:0.00M, 
> Peak:0.00M | Scene, ViewLayer | Updating Scene
> │ Fra:1 Mem:10.13M (Peak 10.29M) | Time:00:00.01 | Mem:0.00M, 
> Peak:0.00M | Scene, ViewLayer | Updating Shaders
> │ Fra:1 Mem:10.22M (Peak 10.29M) | Time:00:00.01 | Mem:0.00M, 
> Peak:0.00M | Scene, ViewLayer | Updating Procedurals
> │ Fra:1 Mem:10.22M (Peak 10.29M) | Time:00:00.01 | Mem:0.00M, 
> Peak:0.00M | Scene, ViewLayer | Updating Background
> │ Fra:1 Mem:10.22M (Peak 10.29M) | Time:00:00.01 | Mem:0.00M, 
> Peak:0.00M | Scene, ViewLayer | Updating Camera
> │ Fra:1 Mem:10.22M (Peak 10.29M) | Time:00:00.01 | Mem:0.00M, 
> Peak:0.00M | Scene, ViewLayer | Updating Meshes Flags
> │ Fra:1 Mem:10.22M (Peak 10.29M) | Time:00:00.01 | Mem:0.00M, 
> Peak:0.00M | Scene, ViewLayer | Updating Objects
> │ Fra:1 Mem:10.22M (Peak 10.29M) | Time:00:00.01 | Mem:0.00M, 
> Peak:0.00M | Scene, ViewLayer | Updating Objects | Copying Transformations to 
> device
> │ Fra:1 Mem:10.22M (Peak 10.29M) | Time:00:00.01 | Mem:0.00M, 
> Peak:0.00M | Scene, ViewLayer | Updating Objects | Applying Static 
> Transformations
> │ Fra:1 Mem:10.22M (Peak 10.29M) | Time:00:00.01 | Mem:0.00M, 
> Peak:0.00M | Scene, ViewLayer | Updating Particle Systems
> │ Fra:1 Mem:10.22M (Peak 10.29M) | Time:00:00.01 | Mem:0.00M, 
> Peak:0.00M | Scene, ViewLayer | Updating Particle Systems | Copying Particles to
> device
> │ Fra:1 Mem:10.22M (Peak 10.29M) | Time:00:00.01 | Mem:0.00M, 
> Peak:0.00M | Scene, ViewLayer | Updating Meshes
> │ Fra:1 Mem:10.23M (Peak 10.29M) | Time:00:00.01 | Mem:0.00M, 
> Peak:0.00M | Scene, ViewLayer | Updating Mesh | Computing attributes
> │ Fra:1 Mem:10.24M (Peak 10.29M) | Time:00:00.01 | Mem:0.00M, 
> Peak:0.00M | Scene, ViewLayer | Updating Mesh | Copying Attributes to device
> │ Fra:1 Mem:10.24M (Peak 10.29M) | Time:00:00.01 | Mem:0.01M, 
> Peak:0.01M | Scene, ViewLayer | Updating Scene BVH | Building
> │ Fra:1 Mem:10.24M (Peak 10.29M) | Time:00:00.01 | Mem:0.01M, 
> Peak:0.01M | Scene, ViewLayer | Updating Scene BVH | Building BVH
> │ Fra:1 Mem:10.24M (Peak 10.29M) | Time:00:00.02 | Mem:0.04M, 
> Peak:0.04M | Scene, ViewLayer | Updating Scene BVH | Building BVH 0%
> │ Fra:1 Mem:10.24M (Peak 10.29M) | Time:00:00.02 | Mem:0.07M, 
> Peak:0.10M | Scene, ViewLayer | Updating Scene BVH | Copying BVH to device
> │ Fra:1 Mem:10.24M (Peak 10.29M) | Time:00:00.02 | Mem:0.07M, 
> Peak:0.10M | Scene, ViewLayer | Updating Mesh | Computing normals
> │ Fra:1 Mem:10.27M (Peak 10.29M) | Time:00:00.02 | Mem:0.07M, 
> Peak:0.10M | Scene, ViewLayer | Updating Mesh | Copying Mesh to device
> │ Fra:1 Mem:10.27M (Peak 10.29M) | Time:00:00.02 | Mem:0.11M, 
> Peak:0.11M | Scene, ViewLayer | Updating Objects Flags
> │ Fra:1 Mem:10.27M (Peak 10.29M) | Time:00:00.02 | Mem:0.11M, 
> Peak:0.11M | Scene, ViewLayer | Updating Primitive Offsets
> │ Fra:1 Mem:10.27M (Peak 10.29M) | Time:00:00.02 | Mem:0.11M, 
> Peak:0.11M | Scene, ViewLayer | Updating Images
> │ Fra:1 Mem:10.27M (Peak 10.29M) | Time:00:00.02 | Mem:0.11M, 
> Peak:0.11M | Scene, ViewLayer | Updating Camera Volume
> │ Fra:1 Mem:10.27M (Peak 10.29M) | Time:00:00.02 | Mem:0.11M, 
> Peak:0.11M | Scene, ViewLayer | Updating Lookup Tables
> │ Fra:1 Mem:10.27M (Peak 10.29M) | Time:00:00.02 | Mem:0.19M, 
> Peak:0.19M | Scene, ViewLayer | Updating Lights
> │ Fra:1 Mem:10.27M (Peak 10.29M) | Time:00:00.02 | Mem:0.19M, 
> Peak:0.19M | Scene, ViewLayer | Updating Lights | Computing tree
> │ Fra:1 Mem:10.27M (Peak 10.29M) | Time:00:00.02 | Mem:0.19M, 
> Peak:0.19M | Scene, ViewLayer | Updating Integrator
> │ Fra:1 Mem:10.27M (Peak 10.29M) | Time:00:00.02 | Mem:0.19M, 
> Peak:0.19M | Scene, ViewLayer | Updating Film
> │ Fra:1 Mem:10.27M (Peak 10.29M) | Time:00:00.02 | Mem:0.11M, 
> Peak:0.19M | Scene, ViewLayer | Updating Lookup Tables
> │ Fra:1 Mem:10.27M (Peak 10.29M) | Time:00:00.02 | Mem:0.19M, 
> Peak:0.19M | Scene, ViewLayer | Updating Baking
> │ Fra:1 Mem:10.27M (Peak 10.29M) | Time:00:00.02 | Mem:0.19M, 
> Peak:0.19M | Scene, ViewLayer | Updating Device | Writing constant memory
> │ Fra:1 Mem:10.27M (Peak 10.29M) | Time:00:00.02 | Mem:0.19M, 
> Peak:0.19M | Scene, ViewLayer | Loading denoising kernels (may take a few 
> minutes the first time)
> │ Fra:1 Mem:10.27M (Peak 10.29M) | Time:00:00.02 | Mem:0.19M, 
> Peak:0.19M | Scene, ViewLayer | Sample 0/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:00.18 | 
> Remaining:11:08.43 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 1/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:12.93 | 
> Remaining:10:48.36 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 80/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:13.76 | 
> Remaining:09:32.71 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 96/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:14.50 | 
> Remaining:08:35.05 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 112/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:15.21 | 
> Remaining:07:50.81 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 128/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:15.90 | 
> Remaining:07:15.98 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 144/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:16.60 | 
> Remaining:06:47.86 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 160/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:17.29 | 
> Remaining:06:24.61 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 176/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:17.94 | 
> Remaining:06:04.47 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 192/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:18.57 | 
> Remaining:05:46.72 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 208/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:19.18 | 
> Remaining:05:31.22 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 224/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:19.84 | 
> Remaining:05:18.48 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 240/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:20.42 | 
> Remaining:05:06.00 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 256/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:21.03 | 
> Remaining:04:55.42 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 272/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:21.60 | 
> Remaining:04:45.33 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 288/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:22.22 | 
> Remaining:04:36.99 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 304/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:22.76 | 
> Remaining:04:28.29 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 320/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:23.28 | 
> Remaining:04:20.36 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 336/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:23.79 | 
> Remaining:04:12.82 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 352/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:24.28 | 
> Remaining:04:05.78 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 368/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:24.74 | 
> Remaining:03:58.94 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 384/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:25.20 | 
> Remaining:03:52.63 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 400/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:25.64 | 
> Remaining:03:46.62 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 416/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:26.08 | 
> Remaining:03:41.02 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 432/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:26.49 | 
> Remaining:03:35.57 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 448/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:26.90 | 
> Remaining:03:30.45 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 464/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:27.30 | 
> Remaining:03:25.52 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 480/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:27.69 | 
> Remaining:03:20.81 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 496/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:28.07 | 
> Remaining:03:16.38 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 512/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:28.45 | 
> Remaining:03:12.11 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 528/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:28.82 | 
> Remaining:03:08.03 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 544/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:29.28 | 
> Remaining:03:04.74 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 560/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:29.63 | 
> Remaining:03:00.97 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 576/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:29.99 | 
> Remaining:02:57.38 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 592/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:30.34 | 
> Remaining:02:53.93 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 608/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:30.67 | 
> Remaining:02:50.53 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 624/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:31.00 | 
> Remaining:02:47.29 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 640/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:31.32 | 
> Remaining:02:44.13 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 656/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:31.63 | 
> Remaining:02:41.05 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 672/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:31.94 | 
> Remaining:02:38.10 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 688/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:32.24 | 
> Remaining:02:35.22 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 704/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:32.53 | 
> Remaining:02:32.43 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 720/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:32.82 | 
> Remaining:02:29.72 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 736/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:33.18 | 
> Remaining:02:27.46 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 752/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:33.48 | 
> Remaining:02:24.99 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 768/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:33.76 | 
> Remaining:02:22.53 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 784/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:34.04 | 
> Remaining:02:20.16 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 800/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:34.30 | 
> Remaining:02:17.80 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 816/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:34.56 | 
> Remaining:02:15.50 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 832/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:34.81 | 
> Remaining:02:13.27 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 848/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:35.07 | 
> Remaining:02:11.12 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 864/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:35.32 | 
> Remaining:02:08.99 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 880/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:35.56 | 
> Remaining:02:06.93 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 896/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:35.80 | 
> Remaining:02:04.90 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 912/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:36.03 | 
> Remaining:02:02.93 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 928/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:36.26 | 
> Remaining:02:01.00 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 944/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:36.48 | 
> Remaining:01:59.11 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 960/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:36.70 | 
> Remaining:01:57.26 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 976/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:36.93 | 
> Remaining:01:55.48 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 992/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:37.14 | 
> Remaining:01:53.73 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1008/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:37.36 | 
> Remaining:01:52.03 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1024/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:37.57 | 
> Remaining:01:50.34 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1040/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:37.77 | 
> Remaining:01:48.68 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1056/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:37.98 | 
> Remaining:01:47.08 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1072/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:38.19 | 
> Remaining:01:45.52 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1088/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:38.38 | 
> Remaining:01:43.97 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1104/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:38.57 | 
> Remaining:01:42.44 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1120/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:38.76 | 
> Remaining:01:40.94 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1136/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:38.96 | 
> Remaining:01:39.50 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1152/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:39.14 | 
> Remaining:01:38.07 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1168/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:39.33 | 
> Remaining:01:36.67 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1184/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:39.50 | 
> Remaining:01:35.28 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1200/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:39.68 | 
> Remaining:01:33.92 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1216/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:39.85 | 
> Remaining:01:32.60 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1232/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:40.03 | 
> Remaining:01:31.30 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1248/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:40.20 | 
> Remaining:01:30.03 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1264/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:40.37 | 
> Remaining:01:28.77 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1280/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:40.55 | 
> Remaining:01:27.56 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1296/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:40.71 | 
> Remaining:01:26.35 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1312/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:40.95 | 
> Remaining:01:25.31 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1328/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:41.14 | 
> Remaining:01:24.19 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1344/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:41.30 | 
> Remaining:01:23.04 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1360/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:41.45 | 
> Remaining:01:21.90 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1376/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:41.61 | 
> Remaining:01:20.78 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1392/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:41.76 | 
> Remaining:01:19.68 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1408/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:41.92 | 
> Remaining:01:18.62 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1424/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:42.07 | 
> Remaining:01:17.56 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1440/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:42.23 | 
> Remaining:01:16.53 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1456/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:42.37 | 
> Remaining:01:15.50 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1472/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:42.52 | 
> Remaining:01:14.48 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1488/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:42.66 | 
> Remaining:01:13.48 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1504/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:42.80 | 
> Remaining:01:12.49 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1520/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:42.95 | 
> Remaining:01:11.54 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1536/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:43.08 | 
> Remaining:01:10.59 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1552/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:43.22 | 
> Remaining:01:09.65 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1568/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:43.35 | 
> Remaining:01:08.72 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1584/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:43.49 | 
> Remaining:01:07.80 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1600/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:43.62 | 
> Remaining:01:06.90 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1616/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:43.74 | 
> Remaining:01:06.01 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1632/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:43.87 | 
> Remaining:01:05.14 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1648/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:44.02 | 
> Remaining:01:04.30 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1664/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:44.17 | 
> Remaining:01:03.48 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1680/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:44.31 | 
> Remaining:01:02.67 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1696/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:44.45 | 
> Remaining:01:01.87 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1712/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:44.58 | 
> Remaining:01:01.06 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1728/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:44.71 | 
> Remaining:01:00.27 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1744/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:44.85 | 
> Remaining:00:59.50 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1760/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:45.02 | 
> Remaining:00:58.78 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1776/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:45.17 | 
> Remaining:00:58.05 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1792/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:45.31 | 
> Remaining:00:57.32 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1808/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:45.43 | 
> Remaining:00:56.56 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1824/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:45.55 | 
> Remaining:00:55.82 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1840/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:45.68 | 
> Remaining:00:55.10 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1856/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:45.80 | 
> Remaining:00:54.38 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1872/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:45.98 | 
> Remaining:00:53.75 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1888/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:46.13 | 
> Remaining:00:53.08 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1904/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:46.35 | 
> Remaining:00:52.50 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1920/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:46.48 | 
> Remaining:00:51.83 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1936/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:46.58 | 
> Remaining:00:51.13 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1952/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:46.68 | 
> Remaining:00:50.45 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1968/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:46.78 | 
> Remaining:00:49.77 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 1984/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:46.88 | 
> Remaining:00:49.10 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2000/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:46.98 | 
> Remaining:00:48.45 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2016/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:47.08 | 
> Remaining:00:47.79 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2032/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:47.18 | 
> Remaining:00:47.15 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2048/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:47.27 | 
> Remaining:00:46.52 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2064/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:47.37 | 
> Remaining:00:45.89 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2080/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:47.46 | 
> Remaining:00:45.26 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2096/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:47.55 | 
> Remaining:00:44.65 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2112/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:47.64 | 
> Remaining:00:44.04 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2128/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:47.73 | 
> Remaining:00:43.44 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2144/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:47.82 | 
> Remaining:00:42.84 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2160/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:47.92 | 
> Remaining:00:42.26 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2176/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.00 | 
> Remaining:00:41.68 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2192/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.09 | 
> Remaining:00:41.10 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2208/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.17 | 
> Remaining:00:40.53 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2224/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.25 | 
> Remaining:00:39.96 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2240/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.34 | 
> Remaining:00:39.40 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2256/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.42 | 
> Remaining:00:38.85 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2272/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.50 | 
> Remaining:00:38.31 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2288/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.59 | 
> Remaining:00:37.77 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2304/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.67 | 
> Remaining:00:37.24 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2320/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.75 | 
> Remaining:00:36.71 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2336/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.83 | 
> Remaining:00:36.19 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2352/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.91 | 
> Remaining:00:35.67 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2368/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.98 | 
> Remaining:00:35.16 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2384/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.06 | 
> Remaining:00:34.65 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2400/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.13 | 
> Remaining:00:34.15 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2416/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.20 | 
> Remaining:00:33.65 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2432/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.28 | 
> Remaining:00:33.16 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2448/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.35 | 
> Remaining:00:32.67 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2464/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.42 | 
> Remaining:00:32.19 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2480/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.49 | 
> Remaining:00:31.71 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2496/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.56 | 
> Remaining:00:31.24 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2512/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.63 | 
> Remaining:00:30.77 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2528/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.70 | 
> Remaining:00:30.30 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2544/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.77 | 
> Remaining:00:29.85 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2560/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.84 | 
> Remaining:00:29.39 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2576/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.92 | 
> Remaining:00:28.95 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2592/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.98 | 
> Remaining:00:28.50 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2608/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:50.05 | 
> Remaining:00:28.06 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2624/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:50.12 | 
> Remaining:00:27.63 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2640/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:50.18 | 
> Remaining:00:27.19 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2656/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:50.25 | 
> Remaining:00:26.76 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2672/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:50.31 | 
> Remaining:00:26.34 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2688/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:50.38 | 
> Remaining:00:25.92 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2704/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:50.45 | 
> Remaining:00:25.51 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2720/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:50.51 | 
> Remaining:00:25.09 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2736/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:50.57 | 
> Remaining:00:24.68 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2752/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:50.64 | 
> Remaining:00:24.28 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2768/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:50.70 | 
> Remaining:00:23.88 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2784/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:50.76 | 
> Remaining:00:23.48 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2800/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:50.82 | 
> Remaining:00:23.09 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2816/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:50.88 | 
> Remaining:00:22.70 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2832/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:50.94 | 
> Remaining:00:22.31 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2848/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:51.00 | 
> Remaining:00:21.93 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2864/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:51.06 | 
> Remaining:00:21.55 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2880/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:51.12 | 
> Remaining:00:21.17 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2896/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:51.18 | 
> Remaining:00:20.80 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2912/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:51.23 | 
> Remaining:00:20.42 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2928/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:51.29 | 
> Remaining:00:20.06 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2944/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:51.34 | 
> Remaining:00:19.69 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2960/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:51.40 | 
> Remaining:00:19.33 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2976/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:51.45 | 
> Remaining:00:18.97 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 2992/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:51.50 | 
> Remaining:00:18.62 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3008/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:51.56 | 
> Remaining:00:18.26 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3024/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:51.61 | 
> Remaining:00:17.91 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3040/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:51.66 | 
> Remaining:00:17.57 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3056/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:51.71 | 
> Remaining:00:17.22 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3072/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:51.76 | 
> Remaining:00:16.88 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3088/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:51.81 | 
> Remaining:00:16.55 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3104/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:51.86 | 
> Remaining:00:16.21 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3120/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:51.91 | 
> Remaining:00:15.88 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3136/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:51.96 | 
> Remaining:00:15.55 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3152/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:52.01 | 
> Remaining:00:15.23 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3168/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:52.06 | 
> Remaining:00:14.90 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3184/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:52.10 | 
> Remaining:00:14.58 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3200/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:52.15 | 
> Remaining:00:14.26 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3216/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:52.20 | 
> Remaining:00:13.94 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3232/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:52.30 | 
> Remaining:00:13.65 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3248/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:52.37 | 
> Remaining:00:13.34 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3264/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:52.41 | 
> Remaining:00:13.03 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3280/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:52.46 | 
> Remaining:00:12.72 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3296/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:52.50 | 
> Remaining:00:12.42 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3312/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:52.54 | 
> Remaining:00:12.12 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3328/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:52.59 | 
> Remaining:00:11.82 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3344/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:52.63 | 
> Remaining:00:11.52 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3360/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:52.67 | 
> Remaining:00:11.22 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3376/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:52.72 | 
> Remaining:00:10.93 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3392/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:52.76 | 
> Remaining:00:10.64 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3408/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:52.80 | 
> Remaining:00:10.35 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3424/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:52.85 | 
> Remaining:00:10.07 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3440/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:52.90 | 
> Remaining:00:09.79 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3456/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:52.94 | 
> Remaining:00:09.51 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3472/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:52.98 | 
> Remaining:00:09.23 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3488/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:53.02 | 
> Remaining:00:08.95 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3504/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:53.06 | 
> Remaining:00:08.67 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3520/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:53.10 | 
> Remaining:00:08.40 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3536/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:53.14 | 
> Remaining:00:08.13 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3552/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:53.18 | 
> Remaining:00:07.86 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3568/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:53.22 | 
> Remaining:00:07.60 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3584/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:53.26 | 
> Remaining:00:07.33 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3600/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:53.30 | 
> Remaining:00:07.07 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3616/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:53.34 | 
> Remaining:00:06.81 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3632/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:53.38 | 
> Remaining:00:06.55 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3648/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:53.42 | 
> Remaining:00:06.29 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3664/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:53.46 | 
> Remaining:00:06.04 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3680/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:53.50 | 
> Remaining:00:05.78 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3696/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:53.54 | 
> Remaining:00:05.53 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3712/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:53.58 | 
> Remaining:00:05.28 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3728/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:53.62 | 
> Remaining:00:05.03 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3744/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:53.65 | 
> Remaining:00:04.79 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3760/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:53.69 | 
> Remaining:00:04.54 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3776/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:53.73 | 
> Remaining:00:04.30 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3792/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:53.76 | 
> Remaining:00:04.06 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3808/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:53.80 | 
> Remaining:00:03.82 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3824/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:53.84 | 
> Remaining:00:03.58 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3840/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:53.88 | 
> Remaining:00:03.35 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3856/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:53.92 | 
> Remaining:00:03.11 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3872/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:53.96 | 
> Remaining:00:02.88 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3888/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:53.99 | 
> Remaining:00:02.65 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3904/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:54.03 | 
> Remaining:00:02.42 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3920/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:54.06 | 
> Remaining:00:02.19 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3936/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:54.10 | 
> Remaining:00:01.97 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3952/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:54.13 | 
> Remaining:00:01.74 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3968/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:54.17 | 
> Remaining:00:01.52 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 3984/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:54.20 | 
> Remaining:00:01.30 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 4000/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:54.24 | 
> Remaining:00:01.08 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 4016/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:54.28 | 
> Remaining:00:00.86 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 4032/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:54.31 | 
> Remaining:00:00.64 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 4048/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:54.35 | 
> Remaining:00:00.42 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 4064/4096
> │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:54.38 | 
> Remaining:00:00.21 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 
> 4080/4096
> │ Fra:1 Mem:118.31M (Peak 166.31M) | Time:01:03.83 | 
> Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 4096/4096
> │ Fra:1 Mem:118.31M (Peak 166.31M) | Time:01:03.83 | 
> Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Finished
> │ Saved: 'C:\spiral_blender.png'
> │ Time: 01:04.27 (Saving: 00:00.43)
> │ 
> │ 
> │ Blender quit
> │ 
> 
> ── pwsh ────────────────────────────────────────────────────────────────────────
> { pwsh ../apps/spiral/vscode/build.ps1 } | Invoke-Block
> 
> ── [ 5.19s - stdout ] ──────────────────────────────────────────────────────────
> │ bun install v1.2.5 (013fdddc)
> │ 
> │ Checked 242 installs across 234 packages (no changes) 
> [229.00ms]
> │ polyglot/scripts/core.ps1/GetFullPath / Path: ./LICENSE / 
> Location: C:\home\git\polyglot\apps\spiral\vscode / ResolvedLocation: 
> C:\home\git\polyglot\apps\spiral\vscode
> │ polyglot/scripts/core.ps1/GetFullPath / FullPath: 
> C:\home\git\polyglot\apps\spiral\vscode\LICENSE
> │ polyglot/scripts/core.ps1/EnsureSymbolicLink / Parent: 
> C:\home\git\polyglot\apps\spiral\vscode / Path: 
> C:\home\git\polyglot\apps\spiral\vscode\LICENSE
> │ polyglot/scripts/core.ps1/GetFullPath / Path: 
> ../../../LICENSE / Location: C:\home\git\polyglot\apps\spiral\vscode / 
> ResolvedLocation: C:\home\git\polyglot\apps\spiral\vscode
> │ polyglot/scripts/core.ps1/GetFullPath / FullPath: 
> C:\home\git\polyglot\LICENSE
> │ polyglot/scripts/core.ps1/EnsureSymbolicLink / FullPath: 
> C:\home\git\polyglot\apps\spiral\vscode\LICENSE / Target: 
> C:\home\git\polyglot\LICENSE / ResolvedTarget: C:\home\git\polyglot\LICENSE
> │ polyglot/scripts/core.ps1/EnsureSymbolicLink / Symlink 
> already exists: C:\home\git\polyglot\apps\spiral\vscode\LICENSE -> 
> C:\home\git\polyglot\LICENSE
> │ 
> │   out\src\extension.js                  2.4kb
> │   out\media\cellOutputScrollButtons.js  1.9kb
> │ 
> │ ⚡ Done in 6ms
> │  WARNING  Neither a .vscodeignore file nor a "files" 
> property in package.json was found. To ensure only necessary files are included 
> in your extension, add a .vscodeignore file or specify the "files" property in 
> package.json. More info: https://aka.ms/vscode-vscodeignore
> │ 
> │  INFO  Files included in the VSIX:
> │ spiral-vscode-0.0.1.vsix
> │ ├─ [Content_Types].xml 
> │ ├─ extension.vsixmanifest 
> │ └─ extension/
> │    ├─ .gitignore [0.01 KB]
> │    ├─ LICENSE.txt [33.71 KB]
> │    ├─ build.ps1 [0.41 KB]
> │    ├─ bun.lockb [86.98 KB]
> │    ├─ compile.ps1 [0.48 KB]
> │    ├─ package.json [1.55 KB]
> │    ├─ media/
> │    │  └─ cellOutputScrollButtons.ts [1.8 KB]
> │    ├─ node_modules/
> │    │  └─ vscode-uri/
> │    │     ├─ .lsifrc.json [0.12 KB]
> │    │     ├─ LICENSE.md [1.04 KB]
> │    │     ├─ README.md [2.42 KB]
> │    │     ├─ package.json [1.06 KB]
> │    │     ├─ .github/
> │    │     │  └─ workflows/ (1 file) [0.62 KB]
> │    │     └─ lib/
> │    │        ├─ esm/ (2 files) [72.76 KB]
> │    │        └─ umd/ (7 files) [92.51 KB]
> │    ├─ out/
> │    │  ├─ media/
> │    │  │  └─ cellOutputScrollButtons.js [1.86 KB]
> │    │  └─ src/
> │    │     └─ extension.js [2.44 KB]
> │    └─ src/
> │       └─ extension.ts [1.38 KB]
> │ 
> │  DONE  Packaged: out\spiral-vscode-0.0.1.vsix (26 files, 
> 106.76 KB)
> │ 
> 
> ── pwsh ────────────────────────────────────────────────────────────────────────
> { pwsh ../apps/ipfs/build.ps1 } | Invoke-Block
> 
> ── [ 774.58ms - stdout ] ───────────────────────────────────────────────────────
> │ bun install v1.2.5 (013fdddc)
> │ 
> │ Done! Checked 221 packages (no changes) [249.00ms]
> │ 
> 
> ── pwsh ────────────────────────────────────────────────────────────────────────
> { pwsh ./outdated.ps1 } | Invoke-Block
> 
> ── [ 1.35m - stdout ] ──────────────────────────────────────────────────────────
> │ Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
> │ Resolving dependency graph...
> │ Could not detect any platforms from 'net10.0' in 
> Microsoft.AspNetCore.Connections.Abstractions 10.0.0-preview.1.25120.3, please 
> tell the package authors
> │ Could not detect any platforms from 'net10.0' in 
> System.Management 10.0.0-preview.1.25080.5, please tell the package authors
> │ Could not detect any platforms from 'net10.0' in 
> Microsoft.AspNetCore.Http.Connections.Common 10.0.0-preview.1.25120.3, please 
> tell the package authors
> │ Could not detect any platforms from 'net10.0' in 
> Microsoft.AspNetCore.Http.Connections.Client 10.0.0-preview.1.25120.3, please 
> tell the package authors
> │ Could not detect any platforms from 'net10.0' in 
> Microsoft.AspNetCore.SignalR.Common 10.0.0-preview.1.25120.3, please tell the 
> package authors
> │ Could not detect any platforms from 'net10.0' in 
> Microsoft.AspNetCore.SignalR.Client 10.0.0-preview.1.25120.3, please tell the 
> package authors
> │ Could not detect any platforms from 'net10.0' in 
> Microsoft.AspNetCore.SignalR.Client.Core 10.0.0-preview.1.25120.3, please tell 
> the package authors
> │ Could not detect any platforms from 'net10.0' in 
> Microsoft.AspNetCore.SignalR.Protocols.Json 10.0.0-preview.1.25120.3, please 
> tell the package authors
> │ Could not detect any platforms from 'net10.0' in 
> Microsoft.Extensions.Features 10.0.0-preview.1.25120.3, please tell the package 
> authors
> │ Could not detect any platforms from 'net10.0' in 
> System.IO.Pipelines 10.0.0-preview.1.25080.5, please tell the package authors
> │ Could not detect any platforms from 'net10.0' in 
> Microsoft.Extensions.Logging.Abstractions 10.0.0-preview.1.25080.5, please tell 
> the package authors
> │ Could not detect any platforms from 'net10.0' in 
> Microsoft.Extensions.Options 10.0.0-preview.1.25080.5, please tell the package 
> authors
> │ Could not detect any platforms from 'net10.0' in 
> System.Net.ServerSentEvents 10.0.0-preview.1.25080.5, please tell the package 
> authors
> │ Could not detect any platforms from 'net10.0' in 
> System.Text.Json 10.0.0-preview.1.25080.5, please tell the package authors
> │ Could not detect any platforms from 'net10.0' in 
> Microsoft.Extensions.DependencyInjection 10.0.0-preview.1.25080.5, please tell 
> the package authors
> │ Could not detect any platforms from 'net10.0' in 
> Microsoft.Extensions.Logging 10.0.0-preview.1.25080.5, please tell the package 
> authors
> │ Could not detect any platforms from 'net10.0' in 
> System.Threading.Channels 10.0.0-preview.1.25080.5, please tell the package 
> authors
> │ Could not detect any platforms from 'net10.0' in 
> System.CodeDom 10.0.0-preview.1.25080.5, please tell the package authors
> │ Could not detect any platforms from 'net10.0' in 
> Microsoft.Extensions.DependencyInjection.Abstractions 10.0.0-preview.1.25080.5, 
> please tell the package authors
> │ Could not detect any platforms from 'net10.0' in 
> System.Diagnostics.DiagnosticSource 10.0.0-preview.1.25080.5, please tell the 
> package authors
> │ Could not detect any platforms from 'net10.0' in 
> Microsoft.Extensions.Primitives 10.0.0-preview.1.25080.5, please tell the 
> package authors
> │ Could not detect any platforms from 'net10.0' in 
> System.Text.Encodings.Web 10.0.0-preview.1.25080.5, please tell the package 
> authors
> │ Outdated packages found:
> │   Group: Main
> │     * Argu 6.2.4 -> 6.2.5
> │     * Expecto 11.0.0-alpha6 -> 11.0.0-alpha8
> │     * Expecto.FsCheck 11.0.0-alpha6 -> 11.0.0-alpha8-fscheck2
> │     * Fable.Core 4.3 -> 4.5.0
> │     * FsCheck 3.0.1 -> 2.16.6
> │     * FSharp.Core 9.0.201 -> 9.0.300-beta.25079.4
> │     * Microsoft.AspNetCore.App.Ref 9.0.2 -> 
> 10.0.0-preview.1.25120.3
> │     * Microsoft.AspNetCore.Connections.Abstractions 7.0 -> 
> 10.0.0-preview.1.25120.3
> │     * Microsoft.AspNetCore.Http.Connections.Client 7.0 -> 
> 10.0.0-preview.1.25120.3
> │     * Microsoft.AspNetCore.Http.Connections.Common 7.0 -> 
> 10.0.0-preview.1.25120.3
> │     * Microsoft.AspNetCore.SignalR.Client 7.0 -> 
> 10.0.0-preview.1.25120.3
> │     * Microsoft.AspNetCore.SignalR.Client.Core 7.0 -> 
> 10.0.0-preview.1.25120.3
> │     * Microsoft.AspNetCore.SignalR.Common 7.0 -> 
> 10.0.0-preview.1.25120.3
> │     * Microsoft.AspNetCore.SignalR.Protocols.Json 7.0 -> 
> 10.0.0-preview.1.25120.3
> │     * Microsoft.Bcl.AsyncInterfaces 9.0.2 -> 
> 10.0.0-preview.1.25080.5
> │     * Microsoft.Extensions.DependencyInjection 9.0.2 -> 
> 10.0.0-preview.1.25080.5
> │     * Microsoft.Extensions.DependencyInjection.Abstractions 
> 9.0.2 -> 10.0.0-preview.1.25080.5
> │     * Microsoft.Extensions.Features 7.0 -> 
> 10.0.0-preview.1.25120.3
> │     * Microsoft.Extensions.Logging 9.0.2 -> 
> 10.0.0-preview.1.25080.5
> │     * Microsoft.Extensions.Logging.Abstractions 9.0.2 -> 
> 10.0.0-preview.1.25080.5
> │     * Microsoft.Extensions.Options 9.0.2 -> 
> 10.0.0-preview.1.25080.5
> │     * Microsoft.Extensions.Primitives 9.0.2 -> 
> 10.0.0-preview.1.25080.5
> │     * System.CodeDom 9.0.2 -> 10.0.0-preview.1.25080.5
> │     * System.Configuration.ConfigurationManager 9.0.2 -> 
> 9.0.3
> │     * System.Diagnostics.EventLog 9.0.2 -> 9.0.3
> │     * System.IO.Pipelines 9.0.2 -> 10.0.0-preview.1.25080.5
> │     * System.Management 7.0 -> 10.0.0-preview.1.25080.5
> │     * System.Security.Cryptography.ProtectedData 9.0.2 -> 
> 9.0.3
> │     * System.Threading.Channels 9.0.2 -> 
> 10.0.0-preview.1.25080.5
> │ Total time taken: 43 seconds
> │ Paket omitted 24 warnings. You can see them in verbose mode.
> │ 
> │ CheckToml / toml: C:\home\git\polyglot\workspace\Cargo.toml
> │ chat_contract_tests
> │ ================
> │ Name                        Project                        
> Compat   Latest   Kind    Platform
> │ ----                        -------                        
> ------   ------   ----    --------
> │ ahash                       0.7.8                          
> Removed  ---      Normal  ---
> │ autocfg                     1.4.0                          
> Removed  ---      Build   ---
> │ bumpalo                     3.16.0                         
> Removed  ---      Normal  ---
> │ cfg-if                      1.0.0                          
> Removed  ---      Normal  ---
> │ equivalent                  1.0.1                          
> ---      Removed  Normal  ---
> │ getrandom                   0.2.15                         
> Removed  ---      Normal  cfg(any(target_os = "linux", target_os = "android", 
> target_os = "windows", target_os = "macos", target_os = "ios", target_os = 
> "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonfly",
> target_os = "solaris", target_os = "illumos", target_os = "fuchsia", target_os =
> "redox", target_os = "cloudabi", target_os = "haiku", target_os = "vxworks", 
> target_os = "emscripten", target_os = "wasi"))
> │ hashbrown                   0.12.3                         
> 0.15.2   ---      Normal  ---
> │ hashbrown                   0.15.2                         
> ---      0.12.3   Normal  ---
> │ indexmap                    1.9.3                          
> 2.7.0    ---      Normal  ---
> │ indexmap                    2.7.0                          
> ---      1.9.3    Normal  ---
> │ js-sys                      0.3.76                         
> Removed  ---      Normal  cfg(all(any(target_arch = "wasm32", target_arch = 
> "wasm64"), target_os = "unknown"))
> │ libc                        0.2.168                        
> Removed  ---      Normal  cfg(unix)
> │ log                         0.4.22                         
> Removed  ---      Normal  ---
> │ near-sandbox-utils          0.9.0                          
> 0.8.0    0.8.0    Normal  ---
> │ once_cell                   1.20.2                         
> Removed  ---      Normal  ---
> │ once_cell                   1.20.2                         
> Removed  ---      Normal  cfg(not(all(target_arch = "arm", target_os = "none")))
> │ proc-macro2                 1.0.92                         
> Removed  ---      Normal  ---
> │ quote                       1.0.37                         
> Removed  ---      Normal  ---
> │ syn                         2.0.90                         
> Removed  ---      Normal  ---
> │ unicode-ident               1.0.14                         
> Removed  ---      Normal  ---
> │ version_check               0.9.5                          
> Removed  ---      Build   ---
> │ wasi                        0.11.0+wasi-snapshot-preview1  
> Removed  ---      Normal  cfg(target_os = "wasi")
> │ wasm-bindgen                0.2.99                         
> Removed  ---      Normal  ---
> │ wasm-bindgen                0.2.99                         
> Removed  ---      Normal  cfg(all(any(target_arch = "wasm32", target_arch = 
> "wasm64"), target_os = "unknown"))
> │ wasm-bindgen-backend        0.2.99                         
> Removed  ---      Normal  ---
> │ wasm-bindgen-macro          0.2.99                         
> Removed  ---      Normal  ---
> │ wasm-bindgen-macro-support  0.2.99                         
> Removed  ---      Normal  ---
> │ wasm-bindgen-shared         0.2.99                         
> Removed  ---      Normal  ---
> │ 
> │ CheckToml / toml: 
> C:\home\git\polyglot\apps\chat\contract\Cargo.toml
> │ error: failed to download `hybrid-array v0.3.0`
> │ 
> │ Caused by:
> │   unable to get packages from source
> │ 
> │ Caused by:
> │   failed to parse manifest at 
> `C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-6f17d22
> bba15001f\hybrid-array-0.3.0\Cargo.toml`
> │ 
> │ Caused by:
> │   feature `edition2024` is required
> │ 
> │   The package requires the Cargo feature called 
> `edition2024`, but that feature is not stabilized in this version of Cargo 
> (1.81.0).
> │   Consider trying a more recent nightly release.
> │   See 
> https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for
> more information about the status of this feature.
> │ 
> │ # Invoke-Block / $retry: 1/1 / $Location:  / Get-Location: 
> C:\home\git\polyglot\scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / 
> $ScriptBlock:
> │ 'cargo outdated -m $toml @_args'
> │ 
> │ 
> │ CheckToml / toml: 
> C:\home\git\polyglot\apps\chat\contract\tests\Cargo.toml
> │ error: failed to download `hybrid-array v0.3.0`
> │ 
> │ Caused by:
> │   unable to get packages from source
> │ 
> │ Caused by:
> │   failed to parse manifest at 
> `C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-6f17d22
> bba15001f\hybrid-array-0.3.0\Cargo.toml`
> │ 
> │ Caused by:
> │   feature `edition2024` is required
> │ 
> │   The package requires the Cargo feature called 
> `edition2024`, but that feature is not stabilized in this version of Cargo 
> (1.81.0).
> │   Consider trying a more recent nightly release.
> │   See 
> https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for
> more information about the status of this feature.
> │ 
> │ # Invoke-Block / $retry: 1/1 / $Location:  / Get-Location: 
> C:\home\git\polyglot\scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / 
> $ScriptBlock:
> │ 'cargo outdated -m $toml @_args'
> │ 
> │ 
> │ CheckToml / toml: C:\home\git\polyglot\apps\plot\Cargo.toml
> │ error: failed to download `hybrid-array v0.3.0`
> │ 
> │ Caused by:
> │   unable to get packages from source
> │ 
> │ Caused by:
> │   failed to parse manifest at 
> `C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-6f17d22
> bba15001f\hybrid-array-0.3.0\Cargo.toml`
> │ 
> │ Caused by:
> │   feature `edition2024` is required
> │ 
> │   The package requires the Cargo feature called 
> `edition2024`, but that feature is not stabilized in this version of Cargo 
> (1.81.0).
> │   Consider trying a more recent nightly release.
> │   See 
> https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for
> more information about the status of this feature.
> │ 
> │ # Invoke-Block / $retry: 1/1 / $Location:  / Get-Location: 
> C:\home\git\polyglot\scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / 
> $ScriptBlock:
> │ 'cargo outdated -m $toml @_args'
> │ 
> │ 
> │ CheckJson / json: C:/home/git/polyglot
> │ $ npm-check-updates --target greatest
> │ Using bun
> │ Checking C:\home\git\polyglot\package.json
> │ 
> │ 
> │  @types/node          ~22.10  →    ~22.13
> │  npm-check-updates  ~17.1.14  →  ~17.1.15
> │ 
> │ Run ncu --target greatest -u to upgrade package.json
> │ 
> │ CheckJson / json: C:/home/git/polyglot/apps/ipfs
> │ $ npm-check-updates --target greatest
> │ Using bun
> │ Checking C:\home\git\polyglot\apps\ipfs\package.json
> │ 
> │ 
> │  @types/node          ~22.10  →    ~22.13
> │  npm-check-updates  ~17.1.14  →  ~17.1.15
> │ 
> │ Run ncu --target greatest -u to upgrade package.json
> │ 
> │ CheckJson / json: 
> C:/home/git/polyglot/apps/spiral/temp/extension
> │ $ npm-check-updates --target greatest
> │ Using bun
> │ Checking 
> C:\home\git\polyglot\apps\spiral\temp\extension\package.json
> │ 
> │ 
> │  @playwright/test     1.44.0  →  1.52.0-alpha-2025-03-15
> │  @types/chrome      ~0.0.268  →                 ~0.0.309
> │  npm-check-updates  ~17.1.14  →                 ~17.1.15
> │ 
> │ Run ncu --target greatest -u to upgrade package.json
> │ 
> │ CheckJson / json: C:/home/git/polyglot/apps/spiral/vscode
> │ $ npm-check-updates --target greatest
> │ Using bun
> │ Checking C:\home\git\polyglot\apps\spiral\vscode\package.json
> │ 
> │ 
> │  @types/node          ~22.10  →    ~22.13
> │  @types/vscode         ~1.96  →     ~1.98
> │  npm-check-updates  ~17.1.14  →  ~17.1.15
> │ 
> │ Run ncu --target greatest -u to upgrade package.json
> │ 
> │ CheckJson / json: 
> C:/home/git/polyglot/deps/The-Spiral-Language/VS Code Plugin
> │ $ npm-check-updates --target greatest
> │ Checking C:\home\git\polyglot\deps\The-Spiral-Language\VS 
> Code Plugin\package.json
> │ 
> │ 
> │  @microsoft/signalr     8.0.0  →     8.0.7
> │  @types/node           ~22.10  →    ~22.13
> │  @types/vscode          ~1.95  →     ~1.98
> │  esbuild                ~0.24  →     ~0.25
> │  npm-check-updates   ~17.1.14  →  ~17.1.15
> │  portfinder           ^1.0.32  →   ^1.0.35
> │ 
> │ Run ncu --target greatest -u to upgrade package.json
> │ 
00:35:18 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 2280030 }
00:35:18 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/scripts/build.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/scripts/build.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:35:19 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/scripts/build.dib.ipynb to html
00:35:19 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:35:19 v #7 !   validate(nb)
00:35:20 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:35:20 v #9 !   return _pygments_highlight(
00:35:27 v #10 ! [NbConvertApp] Writing 2338993 bytes to c:\home\git\polyglot\scripts\build.dib.html
00:35:27 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 847 }
00:35:27 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 847 }
00:35:27 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/scripts/build.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/scripts/build.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:35:27 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:35:27 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:35:27 d #16 spiral.run / dib / { exit_code = 0; result_length = 2280936 }
dice/lib/build.ps1 / ScriptDir: C:\home\git\dice\lib / ResolvedScriptDir: C:\home\git\dice\lib
00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "C:\home\git\dice\lib/dice.dib"])) }
00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/dice/lib/dice.dib", "--output-path", "c:/home/git/dice/lib/dice.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/dice/lib/dice.dib" --output-path "c:/home/git/dice/lib/dice.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ # dice (Dice)
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> 
> open testing
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## sixth_power_sequence
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl sixth_power_sequence () =
>     stream.iterate_map ((*) 6) (fun x => if x <= 0 then None else Some x) 1
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> 
> sixth_power_sequence ()
> |> stream.take_while (fun _ i => i <= 7i32)
> |> stream.to_list
> |> _assert_eq [[ 1u64; 6; 36; 216; 1296; 7776; 46656; 279936 ]]
> 
> ── [ 1.27s - stdout ] ──────────────────────────────────────────────────────────
> │ __assert_eq / actual: UH0_1
> │   (1UL,
> │    UH0_1
> │      (6UL,
> │       UH0_1
> │         (36UL,
> │          UH0_1
> │            (216UL,
> │             UH0_1
> │               (1296UL, UH0_1 (7776UL, UH0_1 (46656UL, UH0_1 
> (279936UL, UH0_0)))))))) / expected: UH0_1
> │   (1UL,
> │    UH0_1
> │      (6UL,
> │       UH0_1
> │         (36UL,
> │          UH0_1
> │            (216UL,
> │             UH0_1
> │               (1296UL, UH0_1 (7776UL, UH0_1 (46656UL, UH0_1 
> (279936UL, UH0_0))))))))
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## accumulate_dice_rolls
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl accumulate_dice_rolls
>     (rolls : list u8)
>     (power : i8)
>     acc
>     =
>     inl rec body acc power rolls =
>         match rolls with
>         | _ when power < 0 =>
>             inl result = acc + 1
>             trace Debug
>                 fun () => "dice.accumulate_dice_rolls"
>                 fun () => { power acc result }
>             Some (result, rolls)
>         | [[]] => None
>         | roll :: rest when roll > 1 =>
>             inl coeff = sixth_power_sequence () |> stream.item power
>             inl value = conv (roll - 1) * coeff
>             trace Debug
>                 fun () => "dice.accumulate_dice_rolls"
>                 fun () => { power acc roll value }
>             loop (acc + value) (power - 1) rest
>         | roll :: rest =>
>             trace Debug
>                 fun () => "dice.accumulate_dice_rolls"
>                 fun () => { power acc roll }
>             loop acc (power - 1) rest
>     and inl loop acc power rolls =
>         if var_is rolls |> not
>         then body acc power rolls
>         else
>             inl acc = dyn acc
>             join body acc power rolls
>     loop acc power rolls
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> 
> accumulate_dice_rolls [[ 6; 5; 4; 3; 2 ]] 0 1000i32
> |> _assert_eq (Some (1006, [[ 5; 4; 3; 2 ]]))
> 
> ── [ 1.56s - stdout ] ──────────────────────────────────────────────────────────
> │ 00:00:00 d #1 dice.accumulate_dice_rolls / { power = 0; 
> acc = 1000; roll = 6; value = 5 }
> │ 00:00:00 d #2 dice.accumulate_dice_rolls / { power = -1;
> acc = 1005; result = 1006 }
> │ __assert_eq / actual: US6_0 (1006, UH0_1 (5uy, UH0_1 (4uy, 
> UH0_1 (3uy, UH0_1 (2uy, UH0_0))))) / expected: US6_0 (1006, UH0_1 (5uy, UH0_1 
> (4uy, UH0_1 (3uy, UH0_1 (2uy, UH0_0)))))
> │ 
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> 
> accumulate_dice_rolls [[ 6; 5; 4; 3; 2 ]] 1 1000i32
> |> _assert_eq (Some (1035, [[ 4; 3; 2 ]]))
> 
> ── [ 1.04s - stdout ] ──────────────────────────────────────────────────────────
> │ 00:00:00 d #1 dice.accumulate_dice_rolls / { power = 1; 
> acc = 1000; roll = 6; value = 30 }
> │ 00:00:00 d #2 dice.accumulate_dice_rolls / { power = 0; 
> acc = 1030; roll = 5; value = 4 }
> │ 00:00:00 d #3 dice.accumulate_dice_rolls / { power = -1;
> acc = 1034; result = 1035 }
> │ __assert_eq / actual: US6_0 (1035, UH0_1 (4uy, UH0_1 (3uy, 
> UH0_1 (2uy, UH0_0)))) / expected: US6_0 (1035, UH0_1 (4uy, UH0_1 (3uy, UH0_1 
> (2uy, UH0_0))))
> │ 
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> 
> accumulate_dice_rolls [[ 6; 5; 4; 3; 2 ]] 2 1000i32
> |> _assert_eq (Some (1208, [[ 3; 2 ]]))
> 
> ── [ 1.21s - stdout ] ──────────────────────────────────────────────────────────
> │ 00:00:00 d #1 dice.accumulate_dice_rolls / { power = 2; 
> acc = 1000; roll = 6; value = 180 }
> │ 00:00:00 d #2 dice.accumulate_dice_rolls / { power = 1; 
> acc = 1180; roll = 5; value = 24 }
> │ 00:00:00 d #3 dice.accumulate_dice_rolls / { power = 0; 
> acc = 1204; roll = 4; value = 3 }
> │ 00:00:00 d #4 dice.accumulate_dice_rolls / { power = -1;
> acc = 1207; result = 1208 }
> │ __assert_eq / actual: US6_0 (1208, UH0_1 (3uy, UH0_1 (2uy, 
> UH0_0))) / expected: US6_0 (1208, UH0_1 (3uy, UH0_1 (2uy, UH0_0)))
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## roll_within_bounds
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl roll_within_bounds max rolls =
>     inl power = listm.length rolls - 1
>     match accumulate_dice_rolls rolls power 0 with
>     | Some (result, _) when result >= 1 && result <= max => Some result
>     | _ => None
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> 
> roll_within_bounds 2000i32 [[ 1; 5; 4; 4; 5 ]]
> |> _assert_eq (Some 995)
> 
> ── [ 1.14s - stdout ] ──────────────────────────────────────────────────────────
> │ 00:00:00 d #1 dice.accumulate_dice_rolls / { power = 4; 
> acc = 0; roll = 1 }
> │ 00:00:00 d #2 dice.accumulate_dice_rolls / { power = 3; 
> acc = 0; roll = 5; value = 864 }
> │ 00:00:00 d #3 dice.accumulate_dice_rolls / { power = 2; 
> acc = 864; roll = 4; value = 108 }
> │ 00:00:00 d #4 dice.accumulate_dice_rolls / { power = 1; 
> acc = 972; roll = 4; value = 18 }
> │ 00:00:00 d #5 dice.accumulate_dice_rolls / { power = 0; 
> acc = 990; roll = 5; value = 4 }
> │ 00:00:00 d #6 dice.accumulate_dice_rolls / { power = -1;
> acc = 994; result = 995 }
> │ __assert_eq / actual: US6_0 995 / expected: US6_0 995
> │ 
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> 
> roll_within_bounds 2000i32 [[ 2; 2; 6; 4; 5 ]]
> |> _assert_eq (Some 1715)
> 
> ── [ 1.01s - stdout ] ──────────────────────────────────────────────────────────
> │ 00:00:00 d #1 dice.accumulate_dice_rolls / { power = 4; 
> acc = 0; roll = 2; value = 1296 }
> │ 00:00:00 d #2 dice.accumulate_dice_rolls / { power = 3; 
> acc = 1296; roll = 2; value = 216 }
> │ 00:00:00 d #3 dice.accumulate_dice_rolls / { power = 2; 
> acc = 1512; roll = 6; value = 180 }
> │ 00:00:00 d #4 dice.accumulate_dice_rolls / { power = 1; 
> acc = 1692; roll = 4; value = 18 }
> │ 00:00:00 d #5 dice.accumulate_dice_rolls / { power = 0; 
> acc = 1710; roll = 5; value = 4 }
> │ 00:00:00 d #6 dice.accumulate_dice_rolls / { power = -1;
> acc = 1714; result = 1715 }
> │ __assert_eq / actual: US6_0 1715 / expected: US6_0 1715
> │ 
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> 
> roll_within_bounds 2000i32 [[ 4; 1; 1; 2; 3 ]]
> |> _assert_eq None
> 
> ── [ 915.90ms - stdout ] ───────────────────────────────────────────────────────
> │ 00:00:00 d #1 dice.accumulate_dice_rolls / { power = 4; 
> acc = 0; roll = 4; value = 3888 }
> │ 00:00:00 d #2 dice.accumulate_dice_rolls / { power = 3; 
> acc = 3888; roll = 1 }
> │ 00:00:00 d #3 dice.accumulate_dice_rolls / { power = 2; 
> acc = 3888; roll = 1 }
> │ 00:00:00 d #4 dice.accumulate_dice_rolls / { power = 1; 
> acc = 3888; roll = 2; value = 6 }
> │ 00:00:00 d #5 dice.accumulate_dice_rolls / { power = 0; 
> acc = 3894; roll = 3; value = 2 }
> │ 00:00:00 d #6 dice.accumulate_dice_rolls / { power = -1;
> acc = 3896; result = 3897 }
> │ __assert_eq / actual: US6_1 / expected: US6_1
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## calculate_dice_count
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl calculate_dice_count max =
>     inl rec body n p =
>         inl return () =
>             trace Debug
>                 fun () => "dice.calculate_dice_count"
>                 fun () => { max p n }
>             n
>         if p < max then
>             inl p' = p * 6
>             if p' > p
>             then loop (n + 1) p'
>             else return ()
>         else return ()
>     and inl loop n p =
>         if var_is max |> not
>         then body n p
>         else
>             inl n = dyn n
>             inl p = dyn p
>             join body n p
>     if max = 1
>     then 1
>     else loop 0 1
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> 
> calculate_dice_count 36i32
> |> _assert_eq 2i32
> 
> ── [ 698.04ms - stdout ] ───────────────────────────────────────────────────────
> │ 00:00:00 d #1 dice.calculate_dice_count / { max = 36; p 
> = 36; n = 2 }
> │ __assert_eq / actual: 2 / expected: 2
> │ 
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> 
> calculate_dice_count 7777i32
> |> _assert_eq 6i32
> 
> ── [ 654.77ms - stdout ] ───────────────────────────────────────────────────────
> │ 00:00:00 d #1 dice.calculate_dice_count / { max = 7777; 
> p = 46656; n = 6 }
> │ __assert_eq / actual: 6 / expected: 6
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## roll_dice
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> let roll_dice () : u8 =
>     random' 1 7
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## rotate_number
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl rotate_number forall t {number}. (max : i64) (n : t) : t =
>     (conv n - 1 + max) % max + 1 |> conv
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## rotate_numbers
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl rotate_numbers max items =
>     items |> stream.map (rotate_number max)
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> 
> listm'.init_series -1 14 1i32
> |> stream.from_list
> |> rotate_numbers 6
> |> stream.to_list
> |> _assert_eq [[ 5; 6; 1; 2; 3; 4; 5; 6; 1; 2; 3; 4; 5; 6; 1; 2 ]]
> 
> ── [ 223.60ms - stdout ] ───────────────────────────────────────────────────────
> │ __assert_eq / actual: UH0_1
> │   (5,
> │    UH0_1
> │      (6,
> │       UH0_1
> │         (1,
> │          UH0_1
> │            (2,
> │             UH0_1
> │               (3,
> │                UH0_1
> │                  (4,
> │                   UH0_1
> │                     (5,
> │                      UH0_1
> │                        (6,
> │                         UH0_1
> │                           (1,
> │                            UH0_1
> │                              (2,
> │                               UH0_1
> │                                 (3,
> │                                  UH0_1
> │                                    (4,
> │                                     UH0_1
> │                                       (5, UH0_1 (6, UH0_1 (1,
> UH0_1 (2, UH0_0)))))))))))))))) / expected: UH0_1
> │   (5,
> │    UH0_1
> │      (6,
> │       UH0_1
> │         (1,
> │          UH0_1
> │            (2,
> │             UH0_1
> │               (3,
> │                UH0_1
> │                  (4,
> │                   UH0_1
> │                     (5,
> │                      UH0_1
> │                        (6,
> │                         UH0_1
> │                           (1,
> │                            UH0_1
> │                              (2,
> │                               UH0_1
> │                                 (3,
> │                                  UH0_1
> │                                    (4,
> │                                     UH0_1
> │                                       (5, UH0_1 (6, UH0_1 (1,
> UH0_1 (2, UH0_0))))))))))))))))
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## create_sequential_roller
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl create_sequential_roller list =
>     inl s = list |> listm.rev |> listm.append list |> stream.from_list |> 
> stream.memoize
>     inl current_index = mut 0i64
>     inl acc = mut 1
>     inl len = mut -1
>     inl last_item = mut None
>     let rec loop () =
>         fun () =>
>             inl current_index = *current_index
>             inl acc = *acc
>             inl len = *len
>             inl last_item = *last_item |> optionm'.box
>             trace Debug
>                 fun () => "dice.create_sequential_roller / roll"
>                 fun () => { current_index acc len last_item = last_item |> 
> sm'.format_debug }
>         |> fun x => x ()
>         match s () |> stream.try_item *current_index with
>         | Some item =>
>             current_index <- *current_index + 1
>             last_item <- Some item
>             item
>         | None =>
>             trace Debug (fun () => "dice.create_sequential_roller / roll / 
> None") id
>             if *len = -1
>             then len <- *current_index
>             acc <-
>                 if *acc >= *len
>                 then 1
>                 else *acc + 1
>             current_index <- *acc - 1
>             last_item <- None
>             loop ()
>     loop
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> 
> inl sequential_roll = create_sequential_roller [[ 1i32; 2; 3; 4 ]]
> 
> am.init 50i32 (ignore >> sequential_roll)
> |> _assert_eq (a ;[[ 1; 2; 3; 4; 4; 3; 2; 1; 2; 3; 4; 4; 3; 2; 1; 3; 4; 4; 3; 2;
> 1; 4; 4; 3; 2; 1;
> 4; 3; 2; 1; 3; 2; 1; 2; 1; 1; 1; 2; 3; 4; 4; 3; 2; 1; 2; 3; 4; 4; 3; 2 ]] : a 
> i32 i32)
> 
> ── [ 817.03ms - stdout ] ───────────────────────────────────────────────────────
> │ 00:00:00 d #1 dice.create_sequential_roller / roll / { 
> current_index = 0; acc = 1; len = -1; last_item = None }
> │ 00:00:00 d #2 dice.create_sequential_roller / roll / { 
> current_index = 1; acc = 1; len = -1; last_item = Some 1 }
> │ 00:00:00 d #3 dice.create_sequential_roller / roll / { 
> current_index = 2; acc = 1; len = -1; last_item = Some 2 }
> │ 00:00:00 d #4 dice.create_sequential_roller / roll / { 
> current_index = 3; acc = 1; len = -1; last_item = Some 3 }
> │ 00:00:00 d #5 dice.create_sequential_roller / roll / { 
> current_index = 4; acc = 1; len = -1; last_item = Some 4 }
> │ 00:00:00 d #6 dice.create_sequential_roller / roll / { 
> current_index = 5; acc = 1; len = -1; last_item = Some 4 }
> │ 00:00:00 d #7 dice.create_sequential_roller / roll / { 
> current_index = 6; acc = 1; len = -1; last_item = Some 3 }
> │ 00:00:00 d #8 dice.create_sequential_roller / roll / { 
> current_index = 7; acc = 1; len = -1; last_item = Some 2 }
> │ 00:00:00 d #9 dice.create_sequential_roller / roll / { 
> current_index = 8; acc = 1; len = -1; last_item = Some 1 }
> │ 00:00:00 d #10 dice.create_sequential_roller / roll / 
> None
> │ 00:00:00 d #11 dice.create_sequential_roller / roll / { 
> current_index = 1; acc = 2; len = 8; last_item = None }
> │ 00:00:00 d #12 dice.create_sequential_roller / roll / { 
> current_index = 2; acc = 2; len = 8; last_item = Some 2 }
> │ 00:00:00 d #13 dice.create_sequential_roller / roll / { 
> current_index = 3; acc = 2; len = 8; last_item = Some 3 }
> │ 00:00:00 d #14 dice.create_sequential_roller / roll / { 
> current_index = 4; acc = 2; len = 8; last_item = Some 4 }
> │ 00:00:00 d #15 dice.create_sequential_roller / roll / { 
> current_index = 5; acc = 2; len = 8; last_item = Some 4 }
> │ 00:00:00 d #16 dice.create_sequential_roller / roll / { 
> current_index = 6; acc = 2; len = 8; last_item = Some 3 }
> │ 00:00:00 d #17 dice.create_sequential_roller / roll / { 
> current_index = 7; acc = 2; len = 8; last_item = Some 2 }
> │ 00:00:00 d #18 dice.create_sequential_roller / roll / { 
> current_index = 8; acc = 2; len = 8; last_item = Some 1 }
> │ 00:00:00 d #19 dice.create_sequential_roller / roll / 
> None
> │ 00:00:00 d #20 dice.create_sequential_roller / roll / { 
> current_index = 2; acc = 3; len = 8; last_item = None }
> │ 00:00:00 d #21 dice.create_sequential_roller / roll / { 
> current_index = 3; acc = 3; len = 8; last_item = Some 3 }
> │ 00:00:00 d #22 dice.create_sequential_roller / roll / { 
> current_index = 4; acc = 3; len = 8; last_item = Some 4 }
> │ 00:00:00 d #23 dice.create_sequential_roller / roll / { 
> current_index = 5; acc = 3; len = 8; last_item = Some 4 }
> │ 00:00:00 d #24 dice.create_sequential_roller / roll / { 
> current_index = 6; acc = 3; len = 8; last_item = Some 3 }
> │ 00:00:00 d #25 dice.create_sequential_roller / roll / { 
> current_index = 7; acc = 3; len = 8; last_item = Some 2 }
> │ 00:00:00 d #26 dice.create_sequential_roller / roll / { 
> current_index = 8; acc = 3; len = 8; last_item = Some 1 }
> │ 00:00:00 d #27 dice.create_sequential_roller / roll / 
> None
> │ 00:00:00 d #28 dice.create_sequential_roller / roll / { 
> current_index = 3; acc = 4; len = 8; last_item = None }
> │ 00:00:00 d #29 dice.create_sequential_roller / roll / { 
> current_index = 4; acc = 4; len = 8; last_item = Some 4 }
> │ 00:00:00 d #30 dice.create_sequential_roller / roll / { 
> current_index = 5; acc = 4; len = 8; last_item = Some 4 }
> │ 00:00:00 d #31 dice.create_sequential_roller / roll / { 
> current_index = 6; acc = 4; len = 8; last_item = Some 3 }
> │ 00:00:00 d #32 dice.create_sequential_roller / roll / { 
> current_index = 7; acc = 4; len = 8; last_item = Some 2 }
> │ 00:00:00 d #33 dice.create_sequential_roller / roll / { 
> current_index = 8; acc = 4; len = 8; last_item = Some 1 }
> │ 00:00:00 d #34 dice.create_sequential_roller / roll / 
> None
> │ 00:00:00 d #35 dice.create_sequential_roller / roll / { 
> current_index = 4; acc = 5; len = 8; last_item = None }
> │ 00:00:00 d #36 dice.create_sequential_roller / roll / { 
> current_index = 5; acc = 5; len = 8; last_item = Some 4 }
> │ 00:00:00 d #37 dice.create_sequential_roller / roll / { 
> current_index = 6; acc = 5; len = 8; last_item = Some 3 }
> │ 00:00:00 d #38 dice.create_sequential_roller / roll / { 
> current_index = 7; acc = 5; len = 8; last_item = Some 2 }
> │ 00:00:00 d #39 dice.create_sequential_roller / roll / { 
> current_index = 8; acc = 5; len = 8; last_item = Some 1 }
> │ 00:00:00 d #40 dice.create_sequential_roller / roll / 
> None
> │ 00:00:00 d #41 dice.create_sequential_roller / roll / { 
> current_index = 5; acc = 6; len = 8; last_item = None }
> │ 00:00:00 d #42 dice.create_sequential_roller / roll / { 
> current_index = 6; acc = 6; len = 8; last_item = Some 3 }
> │ 00:00:00 d #43 dice.create_sequential_roller / roll / { 
> current_index = 7; acc = 6; len = 8; last_item = Some 2 }
> │ 00:00:00 d #44 dice.create_sequential_roller / roll / { 
> current_index = 8; acc = 6; len = 8; last_item = Some 1 }
> │ 00:00:00 d #45 dice.create_sequential_roller / roll / 
> None
> │ 00:00:00 d #46 dice.create_sequential_roller / roll / { 
> current_index = 6; acc = 7; len = 8; last_item = None }
> │ 00:00:00 d #47 dice.create_sequential_roller / roll / { 
> current_index = 7; acc = 7; len = 8; last_item = Some 2 }
> │ 00:00:00 d #48 dice.create_sequential_roller / roll / { 
> current_index = 8; acc = 7; len = 8; last_item = Some 1 }
> │ 00:00:00 d #49 dice.create_sequential_roller / roll / 
> None
> │ 00:00:00 d #50 dice.create_sequential_roller / roll / { 
> current_index = 7; acc = 8; len = 8; last_item = None }
> │ 00:00:00 d #51 dice.create_sequential_roller / roll / { 
> current_index = 8; acc = 8; len = 8; last_item = Some 1 }
> │ 00:00:00 d #52 dice.create_sequential_roller / roll / 
> None
> │ 00:00:00 d #53 dice.create_sequential_roller / roll / { 
> current_index = 0; acc = 1; len = 8; last_item = None }
> │ 00:00:00 d #54 dice.create_sequential_roller / roll / { 
> current_index = 1; acc = 1; len = 8; last_item = Some 1 }
> │ 00:00:00 d #55 dice.create_sequential_roller / roll / { 
> current_index = 2; acc = 1; len = 8; last_item = Some 2 }
> │ 00:00:00 d #56 dice.create_sequential_roller / roll / { 
> current_index = 3; acc = 1; len = 8; last_item = Some 3 }
> │ 00:00:00 d #57 dice.create_sequential_roller / roll / { 
> current_index = 4; acc = 1; len = 8; last_item = Some 4 }
> │ 00:00:00 d #58 dice.create_sequential_roller / roll / { 
> current_index = 5; acc = 1; len = 8; last_item = Some 4 }
> │ 00:00:00 d #59 dice.create_sequential_roller / roll / { 
> current_index = 6; acc = 1; len = 8; last_item = Some 3 }
> │ 00:00:00 d #60 dice.create_sequential_roller / roll / { 
> current_index = 7; acc = 1; len = 8; last_item = Some 2 }
> │ 00:00:00 d #61 dice.create_sequential_roller / roll / { 
> current_index = 8; acc = 1; len = 8; last_item = Some 1 }
> │ 00:00:00 d #62 dice.create_sequential_roller / roll / 
> None
> │ 00:00:00 d #63 dice.create_sequential_roller / roll / { 
> current_index = 1; acc = 2; len = 8; last_item = None }
> │ 00:00:00 d #64 dice.create_sequential_roller / roll / { 
> current_index = 2; acc = 2; len = 8; last_item = Some 2 }
> │ 00:00:00 d #65 dice.create_sequential_roller / roll / { 
> current_index = 3; acc = 2; len = 8; last_item = Some 3 }
> │ 00:00:00 d #66 dice.create_sequential_roller / roll / { 
> current_index = 4; acc = 2; len = 8; last_item = Some 4 }
> │ 00:00:00 d #67 dice.create_sequential_roller / roll / { 
> current_index = 5; acc = 2; len = 8; last_item = Some 4 }
> │ 00:00:00 d #68 dice.create_sequential_roller / roll / { 
> current_index = 6; acc = 2; len = 8; last_item = Some 3 }
> │ __assert_eq / actual: [|1; 2; 3; 4; 4; 3; 2; 1; 2; 3; 4; 4; 
> 3; 2; 1; 3; 4; 4; 3; 2; 1; 4; 4; 3; 2; 1;
> │   4; 3; 2; 1; 3; 2; 1; 2; 1; 1; 1; 2; 3; 4; 4; 3; 2; 1; 2; 3;
> 4; 4; 3; 2|] / expected: [|1; 2; 3; 4; 4; 3; 2; 1; 2; 3; 4; 4; 3; 2; 1; 3; 4; 4;
> 3; 2; 1; 4; 4; 3; 2; 1;
> │   4; 3; 2; 1; 3; 2; 1; 2; 1; 1; 1; 2; 3; 4; 4; 3; 2; 1; 2; 3;
> 4; 4; 3; 2|]
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## roll_progressively
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl roll_progressively roll reroll max =
>     inl power = (calculate_dice_count max) - 1
>     let rec loop rolls size =
>         if size < power + 1
>         then loop (roll () :: rolls) (size + 1)
>         else accumulate_dice_rolls rolls power 0 |> function
>             | Some (result, _) when result <= max => result
>             | _ when reroll => loop (listm.init power (fun _ => roll ())) power
>             | _ => loop (roll () :: rolls) (size + 1)
>     loop [[]] 0
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> 
> roll_progressively roll_dice false 1
> |> _assert_eq 1i32
> 
> ── [ 891.73ms - stdout ] ───────────────────────────────────────────────────────
> │ 00:00:00 d #1 dice.accumulate_dice_rolls / { power = 0; 
> acc = 0; roll = 1 }
> │ 00:00:00 d #2 dice.accumulate_dice_rolls / { power = -1;
> acc = 0; result = 1 }
> │ __assert_eq / actual: 1 / expected: 1
> │ 
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> 
> inl sequential_roll = create_sequential_roller [[ 5; 4; 4; 5; 1 ]]
> 
> roll_progressively sequential_roll false 2000i32
> |> _assert_eq 995
> 
> ── [ 1.08s - stdout ] ──────────────────────────────────────────────────────────
> │ 00:00:00 d #1 dice.calculate_dice_count / { max = 2000; 
> p = 7776; n = 5 }
> │ 00:00:00 d #2 dice.create_sequential_roller / roll / { 
> current_index = 0; acc = 1; len = -1; last_item = None }
> │ 00:00:00 d #3 dice.create_sequential_roller / roll / { 
> current_index = 1; acc = 1; len = -1; last_item = Some 5uy }
> │ 00:00:00 d #4 dice.create_sequential_roller / roll / { 
> current_index = 2; acc = 1; len = -1; last_item = Some 4uy }
> │ 00:00:00 d #5 dice.create_sequential_roller / roll / { 
> current_index = 3; acc = 1; len = -1; last_item = Some 4uy }
> │ 00:00:00 d #6 dice.create_sequential_roller / roll / { 
> current_index = 4; acc = 1; len = -1; last_item = Some 5uy }
> │ 00:00:00 d #7 dice.accumulate_dice_rolls / { power = 4; 
> acc = 0; roll = 1 }
> │ 00:00:00 d #8 dice.accumulate_dice_rolls / { power = 3; 
> acc = 0; roll = 5; value = 864 }
> │ 00:00:00 d #9 dice.accumulate_dice_rolls / { power = 2; 
> acc = 864; roll = 4; value = 108 }
> │ 00:00:00 d #10 dice.accumulate_dice_rolls / { power = 1;
> acc = 972; roll = 4; value = 18 }
> │ 00:00:00 d #11 dice.accumulate_dice_rolls / { power = 0;
> acc = 990; roll = 5; value = 4 }
> │ 00:00:00 d #12 dice.accumulate_dice_rolls / { power = 
> -1; acc = 994; result = 995 }
> │ __assert_eq / actual: 995 / expected: 995
> │ 
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> 
> inl sequential_roll = create_sequential_roller [[ 5; 4; 4; 5; 2 ]]
> 
> roll_progressively sequential_roll false 2000i32
> |> _assert_eq 1678
> 
> ── [ 1.16s - stdout ] ──────────────────────────────────────────────────────────
> │ 00:00:00 d #1 dice.calculate_dice_count / { max = 2000; 
> p = 7776; n = 5 }
> │ 00:00:00 d #2 dice.create_sequential_roller / roll / { 
> current_index = 0; acc = 1; len = -1; last_item = None }
> │ 00:00:00 d #3 dice.create_sequential_roller / roll / { 
> current_index = 1; acc = 1; len = -1; last_item = Some 5uy }
> │ 00:00:00 d #4 dice.create_sequential_roller / roll / { 
> current_index = 2; acc = 1; len = -1; last_item = Some 4uy }
> │ 00:00:00 d #5 dice.create_sequential_roller / roll / { 
> current_index = 3; acc = 1; len = -1; last_item = Some 4uy }
> │ 00:00:00 d #6 dice.create_sequential_roller / roll / { 
> current_index = 4; acc = 1; len = -1; last_item = Some 5uy }
> │ 00:00:00 d #7 dice.accumulate_dice_rolls / { power = 4; 
> acc = 0; roll = 2; value = 1296 }
> │ 00:00:00 d #8 dice.accumulate_dice_rolls / { power = 3; 
> acc = 1296; roll = 5; value = 864 }
> │ 00:00:00 d #9 dice.accumulate_dice_rolls / { power = 2; 
> acc = 2160; roll = 4; value = 108 }
> │ 00:00:00 d #10 dice.accumulate_dice_rolls / { power = 1;
> acc = 2268; roll = 4; value = 18 }
> │ 00:00:00 d #11 dice.accumulate_dice_rolls / { power = 0;
> acc = 2286; roll = 5; value = 4 }
> │ 00:00:00 d #12 dice.accumulate_dice_rolls / { power = 
> -1; acc = 2290; result = 2291 }
> │ 00:00:00 d #13 dice.create_sequential_roller / roll / { 
> current_index = 5; acc = 1; len = -1; last_item = Some 2uy }
> │ 00:00:00 d #14 dice.accumulate_dice_rolls / { power = 4;
> acc = 0; roll = 2; value = 1296 }
> │ 00:00:00 d #15 dice.accumulate_dice_rolls / { power = 3;
> acc = 1296; roll = 2; value = 216 }
> │ 00:00:00 d #16 dice.accumulate_dice_rolls / { power = 2;
> acc = 1512; roll = 5; value = 144 }
> │ 00:00:00 d #17 dice.accumulate_dice_rolls / { power = 1;
> acc = 1656; roll = 4; value = 18 }
> │ 00:00:00 d #18 dice.accumulate_dice_rolls / { power = 0;
> acc = 1674; roll = 4; value = 3 }
> │ 00:00:00 d #19 dice.accumulate_dice_rolls / { power = 
> -1; acc = 1677; result = 1678 }
> │ __assert_eq / actual: 1678 / expected: 1678
> │ 
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> 
> inl { level } = get_trace_state_or_init None
> level <- Info
> 
> join dyn listm'.init_series 1i32 10000 1
> |> listm.map (fun _ => roll_progressively roll_dice false 10i32)
> |> listm'.group_by id
> |> listm.map (fun (k, v) => k, (listm.length v : i32))
> |> listm'.box
> |> listm'.to_array'
> |> fun ar =>
>     $'!ar |> Array.sortBy (fun (struct (a, b)) -> a)' : a i32 $'struct (int32 * 
> int32)'
> 
> ── [ 1.37s - return value ] ────────────────────────────────────────────────────
> │ 
> <table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td
> >0</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(1, 
> 274)</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>I
> tem1</td><td><div 
> class="dni-plaintext"><pre>1</pre></div></td></tr><tr><td>Item2</td><td><div 
> class="dni-plaintext"><pre>274</pre></div></td></tr></tbody></table></div></deta
> ils></td></tr><tr><td>1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(2, 
> 673)</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>I
> tem1</td><td><div 
> class="dni-plaintext"><pre>2</pre></div></td></tr><tr><td>Item2</td><td><div 
> class="dni-plaintext"><pre>673</pre></div></td></tr></tbody></table></div></deta
> ils></td></tr><tr><td>2</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(3, 
> 1325)</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>
> Item1</td><td><div 
> class="dni-plaintext"><pre>3</pre></div></td></tr><tr><td>Item2</td><td><div 
> class="dni-plaintext"><pre>1325</pre></div></td></tr></tbody></table></div></det
> ails></td></tr><tr><td>3</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(4, 
> 1310)</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>
> Item1</td><td><div 
> class="dni-plaintext"><pre>4</pre></div></td></tr><tr><td>Item2</td><td><div 
> class="dni-plaintext"><pre>1310</pre></div></td></tr></tbody>...thead><tr></tr><
> /thead><tbody><tr><td>Item1</td><td><div 
> class="dni-plaintext"><pre>8</pre></div></td></tr><tr><td>Item2</td><td><div 
> class="dni-plaintext"><pre>733</pre></div></td></tr></tbody></table></div></deta
> ils></td></tr><tr><td>8</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(9, 
> 1386)</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>
> Item1</td><td><div 
> class="dni-plaintext"><pre>9</pre></div></td></tr><tr><td>Item2</td><td><div 
> class="dni-plaintext"><pre>1386</pre></div></td></tr></tbody></table></div></det
> ails></td></tr><tr><td>9</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(10, 
> 1383)</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>
> Item1</td><td><div 
> class="dni-plaintext"><pre>10</pre></div></td></tr><tr><td>Item2</td><td><div 
> class="dni-plaintext"><pre>1383</pre></div></td></tr></tbody></table></div></det
> ails></td></tr></tbody></table><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> 
> inl { level } = get_trace_state_or_init None
> level <- Info
> 
> join dyn listm'.init_series 1i32 10000 1
> |> listm.map (fun _ => roll_progressively roll_dice true 10i32)
> |> listm'.group_by id
> |> listm.map (fun (k, v) => k, (listm.length v : i32))
> |> listm'.box
> |> listm'.to_array'
> |> fun ar =>
>     $'!ar |> Array.sortBy (fun (struct (a, b)) -> a)' : a i32 $'struct (int32 * 
> int32)'
> 
> ── [ 1.23s - return value ] ────────────────────────────────────────────────────
> │ 
> <table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td
> >0</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(1, 
> 1038)</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>
> Item1</td><td><div 
> class="dni-plaintext"><pre>1</pre></div></td></tr><tr><td>Item2</td><td><div 
> class="dni-plaintext"><pre>1038</pre></div></td></tr></tbody></table></div></det
> ails></td></tr><tr><td>1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(2, 
> 1009)</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>
> Item1</td><td><div 
> class="dni-plaintext"><pre>2</pre></div></td></tr><tr><td>Item2</td><td><div 
> class="dni-plaintext"><pre>1009</pre></div></td></tr></tbody></table></div></det
> ails></td></tr><tr><td>2</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(3, 
> 966)</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>I
> tem1</td><td><div 
> class="dni-plaintext"><pre>3</pre></div></td></tr><tr><td>Item2</td><td><div 
> class="dni-plaintext"><pre>966</pre></div></td></tr></tbody></table></div></deta
> ils></td></tr><tr><td>3</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(4, 
> 977)</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>I
> tem1</td><td><div 
> class="dni-plaintext"><pre>4</pre></div></td></tr><tr><td>Item2</td><td><div 
> class="dni-plaintext"><pre>977</pre></div></td></tr></tbody>...<thead><tr></tr><
> /thead><tbody><tr><td>Item1</td><td><div 
> class="dni-plaintext"><pre>8</pre></div></td></tr><tr><td>Item2</td><td><div 
> class="dni-plaintext"><pre>1034</pre></div></td></tr></tbody></table></div></det
> ails></td></tr><tr><td>8</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(9, 
> 1000)</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>
> Item1</td><td><div 
> class="dni-plaintext"><pre>9</pre></div></td></tr><tr><td>Item2</td><td><div 
> class="dni-plaintext"><pre>1000</pre></div></td></tr></tbody></table></div></det
> ails></td></tr><tr><td>9</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(10, 
> 982)</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>I
> tem1</td><td><div 
> class="dni-plaintext"><pre>10</pre></div></td></tr><tr><td>Item2</td><td><div 
> class="dni-plaintext"><pre>982</pre></div></td></tr></tbody></table></div></deta
> ils></td></tr></tbody></table><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> //// timeout=180000
> 
> inl { level } = get_trace_state_or_init None
> level <- Info
> 
> join dyn listm'.init_series 1i32 100 1
> |> listm.iter fun n =>
>     listm'.init_series 0i32 1 1
>     |> listm.iter fun reroll =>
>         join dyn listm'.init_series 1i32 3500 1
>         |> listm.map fun _ => roll_progressively roll_dice (reroll = 1) n
>         |> listm'.group_by id
>         |> listm.length
>         |> __assert_eq Silent n
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## main
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl main (_args : array_base string) =
>     inl result = roll_progressively roll_dice true (limit.max : i64)
>     trace Debug
>         fun () => "dice.main"
>         fun () => { result }
>     0i32
> 
> inl main () =
>     inl rotate_numbers' : i64 -> stream.stream u8 -> stream.stream u8 =
>         rotate_numbers
> 
>     inl create_sequential_roller' :
>         list u8 
>         -> (() -> u8)
>         =
>         create_sequential_roller
> 
>     inl roll_progressively' :
>         (() -> u8)
>         -> bool
>         -> u64
>         -> u64
>         =
>         roll_progressively
> 
>     inl roll_within_bounds' :
>         u64
>         -> list u8
>         -> optionm'.option' u64
>         =
>         fun a b =>
>             roll_within_bounds a b
>             |> optionm'.box
> 
>     $'let rotate_numbers x = !rotate_numbers' x' : ()
>     $'let create_sequential_roller x = !create_sequential_roller' x' : ()
>     $'let roll_progressively x = !roll_progressively' x' : ()
>     $'let roll_within_bounds x = !roll_within_bounds' x' : ()
>     $'let main args = !main args' : ()
00:00:43 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42759 }
00:00:43 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/dice/lib/dice.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/dice/lib/dice.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:45 v #5 ! [NbConvertApp] Converting notebook c:/home/git/dice/lib/dice.dib.ipynb to html
00:00:45 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:45 v #7 !   validate(nb)
00:00:45 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:45 v #9 !   return _pygments_highlight(
00:00:46 v #10 ! [NbConvertApp] Writing 368893 bytes to c:\home\git\dice\lib\dice.dib.html
00:00:46 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 828 }
00:00:46 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 828 }
00:00:46 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/dice/lib/dice.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/dice/lib/dice.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:46 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:46 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:46 d #16 spiral.run / dib / { exit_code = 0; result_length = 43646 }
00:00:00 d #1 writeDibCode / output: Spi / path: dice.dib
00:00:00 d #2 parseDibCode / output: Spi / file: dice.dib
00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: dice / hash:  / code.Length: 198643
00:00:00 d #2 buildProject / fullPath: c:\home\git\polyglot\target\Builder\dice\dice.fsproj
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  "publish "c:/home/git\polyglot\target/Builder\dice\dice.fsproj" --configuration Release --output "C:\home\git\dice\lib\dist" --runtime linux-x64"; options = { command = dotnet publish "c:/home/git\polyglot\target/Builder\dice\dice.fsproj" --configuration Release --output "C:\home\git\dice\lib\dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "c:\home\git\polyglot\target\Builder\dice" } }
00:00:01 v #2 >   Determining projects to restore...
00:00:01 v #3 >   Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
00:00:01 v #4 >   The last full restore is still up to date. Nothing left to do.
00:00:01 v #5 >   Total time taken: 0 milliseconds
00:00:02 v #6 >   Restored c:\home\git\polyglot\target\Builder\dice\dice.fsproj (in 242 ms).
00:00:16 v #7 >   dice -> c:\home\git\polyglot\target\Builder\dice\bin\Release\net9.0\linux-x64\dice.dll
00:00:18 v #8 >   dice -> C:\home\git\dice\lib\dist\
00:00:18 d #9 runtime.execute_with_options_async / { exit_code = 0; output_length = 402; options = { command = dotnet publish "c:/home/git\polyglot\target/Builder\dice\dice.fsproj" --configuration Release --output "C:\home\git\dice\lib\dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "c:\home\git\polyglot\target\Builder\dice" } }
00:00:18 d #10 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  "publish "c:/home/git\polyglot\target/Builder\dice\dice.fsproj" --configuration Release --output "C:\home\git\dice\lib\dist" --runtime win-x64"; options = { command = dotnet publish "c:/home/git\polyglot\target/Builder\dice\dice.fsproj" --configuration Release --output "C:\home\git\dice\lib\dist" --runtime win-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "c:\home\git\polyglot\target\Builder\dice" } }
00:00:18 v #11 >   Determining projects to restore...
00:00:19 v #12 >   Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
00:00:19 v #13 >   The last full restore is still up to date. Nothing left to do.
00:00:19 v #14 >   Total time taken: 0 milliseconds
00:00:19 v #15 >   Restored c:\home\git\polyglot\target\Builder\dice\dice.fsproj (in 237 ms).
00:00:33 v #16 >   dice -> c:\home\git\polyglot\target\Builder\dice\bin\Release\net9.0\win-x64\dice.dll
00:00:34 v #17 >   dice -> C:\home\git\dice\lib\dist\
00:00:34 d #18 runtime.execute_with_options_async / { exit_code = 0; output_length = 400; options = { command = dotnet publish "c:/home/git\polyglot\target/Builder\dice\dice.fsproj" --configuration Release --output "C:\home\git\dice\lib\dist" --runtime win-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "c:\home\git\polyglot\target\Builder\dice" } }
spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: C:\home\git\polyglot\target\Builder\dice
polyglot/scripts/core.ps1/ResolveLink #4 / Path: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral/../../deps/polyglot / parent_target:  / path_target: C:\home\git\polyglot / parent: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral\..\..\deps / End: polyglot
spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: C:\home\git\polyglot\target\Builder\dice / ProjectName: dice / Language: rs / Runtime:  / root: C:\home\git\polyglot
Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha)

Thanks to the contributor! @mastoj
Stand with Ukraine! https://standwithukraine.com.ua/

Parsing target\Builder\dice\dice.fsproj...
Retrieving project options from cache, in case of issues run `dotnet fable clean` or try `--noCache` option.
Project and references (14 source files) parsed in 172ms

Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)

Started Fable compilation...

Fable compilation finished in 13051ms

.\deps\spiral\lib\spiral\common.fsx(2193,0): (2193,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\sm.fsx(560,0): (560,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\async_.fsx(250,0): (250,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\threading.fsx(139,0): (139,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\crypto.fsx(2420,0): (2420,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\date_time.fsx(2546,0): (2546,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\platform.fsx(121,0): (121,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\networking.fsx(5011,0): (5011,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\trace.fsx(2226,0): (2226,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\runtime.fsx(7234,0): (7234,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\file_system.fsx(18760,0): (18760,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
dice/lib/build.ps1 / Path: C:\home\git\polyglot\target\Builder\dice/target/rs/dice.rs / Target: dice.rs
polyglot/scripts/core.ps1/ResolveLink #4 / Path: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral/../../deps/polyglot / parent_target:  / path_target: C:\home\git\polyglot / parent: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral\..\..\deps / End: polyglot
spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: C:\home\git\polyglot\target\Builder\dice / ProjectName: dice / Language: ts / Runtime:  / root: C:\home\git\polyglot
Fable 5.0.0-alpha.9: F# to TypeScript compiler
Minimum @fable-org/fable-library-ts version (when installed from npm): 1.10.0

Thanks to the contributor! @goswinr
Stand with Ukraine! https://standwithukraine.com.ua/

Parsing target\Builder\dice\dice.fsproj...
Retrieving project options from cache, in case of issues run `dotnet fable clean` or try `--noCache` option.
Project and references (14 source files) parsed in 166ms

Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)

Started Fable compilation...

Fable compilation finished in 11679ms

.\deps\spiral\lib\spiral\sm.fsx(38,20): (38,49) warning FABLE: CultureInfo argument is ignored
.\deps\spiral\lib\spiral\sm.fsx(307,20): (307,51) warning FABLE: CultureInfo argument is ignored
dice/lib/build.ps1 / Path: C:\home\git\polyglot\target\Builder\dice/target/ts/dice.ts / Target: dice.ts
polyglot/scripts/core.ps1/ResolveLink #4 / Path: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral/../../deps/polyglot / parent_target:  / path_target: C:\home\git\polyglot / parent: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral\..\..\deps / End: polyglot
spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: C:\home\git\polyglot\target\Builder\dice / ProjectName: dice / Language: py / Runtime:  / root: C:\home\git\polyglot
Fable 5.0.0-alpha.9: F# to Python compiler (status: beta)

Thanks to the contributor! @SirUppyPancakes
Stand with Ukraine! https://standwithukraine.com.ua/

Parsing target\Builder\dice\dice.fsproj...
Retrieving project options from cache, in case of issues run `dotnet fable clean` or try `--noCache` option.
Project and references (14 source files) parsed in 152ms

Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)

Started Fable compilation...

Fable compilation finished in 9712ms

.\deps\spiral\lib\spiral\sm.fsx(38,20): (38,49) warning FABLE: CultureInfo argument is ignored
.\deps\spiral\lib\spiral\sm.fsx(307,20): (307,51) warning FABLE: CultureInfo argument is ignored
dice/lib/build.ps1 / Path: C:\home\git\polyglot\target\Builder\dice/target/py/dice.py / Target: dice.py
polyglot/scripts/core.ps1/ResolveLink #4 / Path: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral/../../deps/polyglot / parent_target:  / path_target: C:\home\git\polyglot / parent: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral\..\..\deps / End: polyglot
spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: C:\home\git\polyglot\target\Builder\dice / ProjectName: dice / Language: rs / Runtime: CONTRACT / root: C:\home\git\polyglot
Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha)

Thanks to the contributor! @davidpodhola
Stand with Ukraine! https://standwithukraine.com.ua/

Parsing target\Builder\dice\dice.fsproj...
Retrieving project options from cache, in case of issues run `dotnet fable clean` or try `--noCache` option.
Project and references (14 source files) parsed in 149ms

Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)

Started Fable compilation...

Fable compilation finished in 12005ms

.\deps\spiral\lib\spiral\async_.fsx(250,0): (250,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\common.fsx(2193,0): (2193,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\sm.fsx(560,0): (560,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\threading.fsx(139,0): (139,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\crypto.fsx(2420,0): (2420,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\date_time.fsx(2546,0): (2546,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\platform.fsx(121,0): (121,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\networking.fsx(5011,0): (5011,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\trace.fsx(2226,0): (2226,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\runtime.fsx(7234,0): (7234,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\file_system.fsx(18760,0): (18760,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
dice/lib/build.ps1 / Path: C:\home\git\polyglot\target\Builder\dice/target/rs/dice.rs / Target: dice_contract.rs
   Compiling fable_library_rust v0.1.0 (C:\home\git\dice\deps\polyglot\lib\rust\fable\fable_modules\fable-library-rust)
   Compiling dice_lib v0.0.1 (C:\home\git\dice\lib)
    Finished `release` profile [optimized] target(s) in 13.62s
     Running `C:\home\git\dice\target\release\dice.exe`
00:00:00 d #1 dice.calculate_dice_count / { max = 9223372036854775807; p = 4738381338321616896; n = 24 }
00:00:00 d #2 dice.accumulate_dice_rolls / { power = 23; acc = 0; roll = 6; value = 3948651115268014080 }
00:00:00 d #3 dice.accumulate_dice_rolls / { power = 22; acc = 3948651115268014080; roll = 4; value = 394865111526801408 }
00:00:00 d #4 dice.accumulate_dice_rolls / { power = 21; acc = 4343516226794815488; roll = 4; value = 65810851921133568 }
00:00:00 d #5 dice.accumulate_dice_rolls / { power = 20; acc = 4409327078715949056; roll = 4; value = 10968475320188928 }
00:00:00 d #6 dice.accumulate_dice_rolls / { power = 19; acc = 4420295554036137984; roll = 6; value = 3046798700052480 }
00:00:00 d #7 dice.accumulate_dice_rolls / { power = 18; acc = 4423342352736190464; roll = 5; value = 406239826673664 }
00:00:00 d #8 dice.accumulate_dice_rolls / { power = 17; acc = 4423748592562864128; roll = 1 }
00:00:00 d #9 dice.accumulate_dice_rolls / { power = 16; acc = 4423748592562864128; roll = 6; value = 14105549537280 }
00:00:00 d #10 dice.accumulate_dice_rolls / { power = 15; acc = 4423762698112401408; roll = 5; value = 1880739938304 }
00:00:00 d #11 dice.accumulate_dice_rolls / { power = 14; acc = 4423764578852339712; roll = 1 }
00:00:00 d #12 dice.accumulate_dice_rolls / { power = 13; acc = 4423764578852339712; roll = 4; value = 39182082048 }
00:00:00 d #13 dice.accumulate_dice_rolls / { power = 12; acc = 4423764618034421760; roll = 2; value = 2176782336 }
00:00:00 d #14 dice.accumulate_dice_rolls / { power = 11; acc = 4423764620211204096; roll = 3; value = 725594112 }
00:00:00 d #15 dice.accumulate_dice_rolls / { power = 10; acc = 4423764620936798208; roll = 2; value = 60466176 }
00:00:00 d #16 dice.accumulate_dice_rolls / { power = 9; acc = 4423764620997264384; roll = 2; value = 10077696 }
00:00:00 d #17 dice.accumulate_dice_rolls / { power = 8; acc = 4423764621007342080; roll = 3; value = 3359232 }
00:00:00 d #18 dice.accumulate_dice_rolls / { power = 7; acc = 4423764621010701312; roll = 2; value = 279936 }
00:00:00 d #19 dice.accumulate_dice_rolls / { power = 6; acc = 4423764621010981248; roll = 3; value = 93312 }
00:00:00 d #20 dice.accumulate_dice_rolls / { power = 5; acc = 4423764621011074560; roll = 2; value = 7776 }
00:00:00 d #21 dice.accumulate_dice_rolls / { power = 4; acc = 4423764621011082336; roll = 6; value = 6480 }
00:00:00 d #22 dice.accumulate_dice_rolls / { power = 3; acc = 4423764621011088816; roll = 3; value = 432 }
00:00:00 d #23 dice.accumulate_dice_rolls / { power = 2; acc = 4423764621011089248; roll = 6; value = 180 }
00:00:00 d #24 dice.accumulate_dice_rolls / { power = 1; acc = 4423764621011089428; roll = 4; value = 18 }
00:00:00 d #25 dice.accumulate_dice_rolls / { power = 0; acc = 4423764621011089446; roll = 1 }
00:00:00 d #26 dice.accumulate_dice_rolls / { power = -1; acc = 4423764621011089446; result = 4423764621011089447 }
00:00:00 d #27 dice.main / { result = 4423764621011089447 }
dice/lib/build.ps1 / $targetDir = C:\home\git\polyglot\target\Builder\dice / $projectName: dice / $env:CI:''
00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "C:\home\git\dice\contract/dice_contract.dib", "--retries", "1"])) }
00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/dice/contract/dice_contract.dib", "--output-path", "c:/home/git/dice/contract/dice_contract.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/dice/contract/dice_contract.dib" --output-path "c:/home/git/dice/contract/dice_contract.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ # dice_contract
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// package=../dice
> 
> open rust
> open rust.rust_operators
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> 
> open testing
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## dice_contract
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### state
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> type state =
>     {
>         version : u32
>         seeds : near.vector u8
>     }
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! rust -c
> 
> ()
> 
> ── [ 29.59s - return value ] ───────────────────────────────────────────────────
> │  
> │ 00:00:07 i #2 near_workspaces.print_usd / { retry = 1; 
> total_gas_burnt_usd = +0.000808; total_gas_burnt = 1209380155211 }
> │ 00:00:07 i #3 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:07 i #4 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000602; tokens_burnt_usd = +0.000602; 
> gas_burnt = 901298295871; tokens_burnt = 90129829587100000000 }
> │ 00:00:07 w #5 spiral_wasm.run / Error error / { retry =
> 1; error = "{ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" }
> │ 
> │ 
> │  
> │ 00:00:13 i #8 near_workspaces.print_usd / { retry = 2; 
> total_gas_burnt_usd = +0.000808; total_gas_burnt = 1209380155211 }
> │ 00:00:13 i #9 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:13 i #10 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000602; tokens_burnt_usd = +0.000602; 
> gas_burnt = 901298295871; tokens_burnt = 90129829587100000000 }
> │ 00:00:13 w #11 spiral_wasm.run / Error error / { retry 
> = 2; error = "{ receipt_outcomes_len = 1; retry = 2; receipt_failures = [] }" }
> │ 
> │ 
> │  
> │ 00:00:19 i #14 near_workspaces.print_usd / { retry = 3;
> total_gas_burnt_usd = +0.000957; total_gas_burnt = 1432562717711 }
> │ 00:00:19 i #15 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:19 i #16 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000602; tokens_burnt_usd = +0.000602; 
> gas_burnt = 901298295871; tokens_burnt = 90129829587100000000 }
> │ 00:00:19 i #17 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; 
> gas_burnt = 223182562500; tokens_burnt = 0 }
> │ 
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! rust -c
> 
> trace Verbose (fun () => "") id
> 
> ── [ 10.91s - return value ] ───────────────────────────────────────────────────
> │  
> │ 00:00:06 i #2 near_workspaces.print_usd / { retry = 1; 
> total_gas_burnt_usd = +0.001034; total_gas_burnt = 1547823517808 }
> │ 00:00:06 i #3 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:06 i #4 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000679; tokens_burnt_usd = +0.000679; 
> gas_burnt = 1016559095968; tokens_burnt = 101655909596800000000 }
> │ 00:00:06 i #5 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; 
> gas_burnt = 223182562500; tokens_burnt = 0 }
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### new
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl new () : state =
>     {
>         version = 2
>         seeds = "seeds" |> sm'.byte_slice |> near.new_vector
>     }
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! rust -c
> 
> inl state = new ()
> trace Verbose (fun () => "dice_contract") fun () => { state = state |> 
> sm'.format_debug }
> trace Verbose (fun () => "") id
> 
> ── [ 30.18s - return value ] ───────────────────────────────────────────────────
> │ 00:00:00 v #1 dice_contract / { state = (2, Vector { 
> len: 0, prefix: [115, 101, 101, 100, 115] }) }
> │  
> │ 00:00:06 i #2 near_workspaces.print_usd / { retry = 1; 
> total_gas_burnt_usd = +0.001032; total_gas_burnt = 1544875919967 }
> │ 00:00:06 i #3 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:06 i #4 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000826; tokens_burnt_usd = +0.000826; 
> gas_burnt = 1236794060627; tokens_burnt = 123679406062700000000 }
> │ 00:00:06 w #5 spiral_wasm.run / Error error / { retry =
> 1; error = "{ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" }
> │ 
> │ 
> │ 00:00:00 v #1 dice_contract / { state = (2, Vector { 
> len: 0, prefix: [115, 101, 101, 100, 115] }) }
> │  
> │ 00:00:13 i #8 near_workspaces.print_usd / { retry = 2; 
> total_gas_burnt_usd = +0.001032; total_gas_burnt = 1544875919967 }
> │ 00:00:13 i #9 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:13 i #10 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000826; tokens_burnt_usd = +0.000826; 
> gas_burnt = 1236794060627; tokens_burnt = 123679406062700000000 }
> │ 00:00:13 w #11 spiral_wasm.run / E...paces.print_usd / 
> { retry = 3; total_gas_burnt_usd = +0.001032; total_gas_burnt = 1544875919967 }
> │ 00:00:18 i #15 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:18 i #16 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000826; tokens_burnt_usd = +0.000826; 
> gas_burnt = 1236794060627; tokens_burnt = 123679406062700000000 }
> │ 00:00:18 w #17 spiral_wasm.run / Error error / { retry 
> = 3; error = "{ receipt_outcomes_len = 1; retry = 3; receipt_failures = [] }" }
> │ 
> │ 
> │ 00:00:00 v #1 dice_contract / { state = (2, Vector { 
> len: 0, prefix: [115, 101, 101, 100, 115] }) }
> │  
> │ 00:00:23 i #20 near_workspaces.print_usd / { retry = 4;
> total_gas_burnt_usd = +0.001181; total_gas_burnt = 1768058482467 }
> │ 00:00:23 i #21 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:23 i #22 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000826; tokens_burnt_usd = +0.000826; 
> gas_burnt = 1236794060627; tokens_burnt = 123679406062700000000 }
> │ 00:00:23 i #23 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; 
> gas_burnt = 223182562500; tokens_burnt = 0 }
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### max_seeds
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl max_seeds () : unativeint =
>     100i32 |> convert
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### contribute_seed
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl contribute_seed (seeds : rust.ref (rust.mut' (near.vector u8))) (seed : 
> am'.vec u8) : () =
>     seeds |> near.vector_extend seed
> 
>     inl seed_excess_len = (seeds |> rust.len |> fun x => x : u32 |> i32) - 
> (max_seeds () |> i32)
> 
>     if seed_excess_len > 0 then
>         inl seed_excess : am'.vec u8 =
>             !\\(seed_excess_len, $'"!seeds.drain(0..$0 as 
> u32).collect::<Vec<_>>()"')
>         trace Debug
>             fun () => "dice_contract.contribute_seed"
>             fun () => { seed_excess_len seed_excess = seed_excess |> 
> sm'.format_debug }
>     trace Debug (fun () => "") (join id)
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! rust -c
> 
> inl replicate n =
>     let rec loop i acc =
>         if i > n
>         then acc
>         else
>             inl i' = i % 10
>             inl i' =
>                 if i' = 0
>                 then i % limit.max
>                 else i'
>             loop (i + 1) (i' :: acc)
>     loop 1 [[]]
>     |> listm.rev
>     |> listm'.box
>     |> listm'.to_array'
> 
> inl max_seeds : u32 = max_seeds () |> convert
> inl seeds = "" |> sm'.byte_slice |> near.new_vector |> rust.to_ref_mut
> 
> conv max_seeds * 1.2f64
> |> replicate
> |> am'.map_base u8
> |> am'.to_vec
> |> contribute_seed seeds
> 
> seeds
> |> rust.len
> |> _assert_eq max_seeds
> 
> ── [ 19.90s - return value ] ───────────────────────────────────────────────────
> │ 00:00:00 d #1 dice_contract.contribute_seed / { 
> seed_excess_len = 20; seed_excess = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 
> 5, 6, 7, 8, 9, 20] }
> │  
> │ 00:00:06 i #2 near_workspaces.print_usd / { retry = 1; 
> total_gas_burnt_usd = +0.007368; total_gas_burnt = 11029879511109 }
> │ 00:00:06 i #3 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:06 i #4 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.007162; tokens_burnt_usd = +0.007162; 
> gas_burnt = 10721797651769; tokens_burnt = 1072179765176900000000 }
> │ 00:00:07 w #5 spiral_wasm.run / Error error / { retry =
> 1; error = "{ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" }
> │ 
> │ 
> │ 00:00:00 d #1 dice_contract.contribute_seed / { 
> seed_excess_len = 20; seed_excess = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 
> 5, 6, 7, 8, 9, 20] }
> │  
> │ 00:00:12 i #8 near_workspaces.print_usd / { retry = 2; 
> total_gas_burnt_usd = +0.007517; total_gas_burnt = 11253062073609 }
> │ 00:00:12 i #9 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:12 i #10 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.007162; tokens_burnt_usd = +0.007162; 
> gas_burnt = 10721797651769; tokens_burnt = 1072179765176900000000 }
> │ 00:00:12 i #11 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; 
> gas_burnt = 223182562500; tokens_burnt = 0 }
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### generate_random_number
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl generate_random_number
>     (seeds : rust.ref (rust.mut' (near.vector u8)))
>     (key : sm'.std_string)
>     (proof : sm'.std_string)
>     (max : u64)
>     : u64
>     =
>     inl seed = near.random_seed ()
>     inl epoch_height = near.epoch_height ()
>     inl block_height = near.block_height ()
>     inl block_timestamp = near.block_timestamp ()
>     inl account_balance = near.account_balance ()
>     inl signer_account_id = near.signer_account_id ()
>     inl predecessor_account_id = near.predecessor_account_id ()
>     inl entropy =
>         ;[[
>             seed
>             seeds |> rust.reref |> near.vector_to_vec
>             epoch_height |> am'.to_le_bytes |> am'.to_vec'
>             block_height |> am'.to_le_bytes |> am'.to_vec'
>             block_timestamp |> am'.to_le_bytes |> am'.to_vec'
>             account_balance |> near.as_yoctonear |> am'.to_le_bytes |> 
> am'.to_vec'
>             signer_account_id |> am'.as_bytes |> am'.to_vec''
>             predecessor_account_id |> am'.as_bytes |> am'.to_vec''
>             proof |> sm'.into_bytes
>             key |> sm'.into_bytes
>         ]]
>         |> am'.to_vec
>         |> rust.concat
>     inl hash_u8 = entropy |> near.keccak512
>     hash_u8 |> contribute_seed seeds
>     inl rolls_list =
>         hash_u8
>         |> am'.from_vec_base
>         |> am'.to_list_base'
>         |> listm'.unbox
>         |> stream.from_list
>         |> lib.dice.rotate_numbers 6
>         |> stream.to_list
>     trace Debug
>         fun () => "dice_contract.generate_random_number"
>         fun () => {
>             max
>             key
>             proof
>             block_timestamp
>             block_height
>             epoch_height
>             account_balance = account_balance |> sm'.format_debug
>             signer_account_id = signer_account_id |> sm'.to_string'
>             predecessor_account_id = predecessor_account_id |> sm'.to_string'
>             seed = seed |> sm'.format_debug
>             seeds = seeds |> sm'.format_debug
>             entropy_len = entropy |> am'.vec_len
>             entropy = entropy |> sm'.format_debug
>             hash_u8 = hash_u8 |> sm'.format_debug
>             rolls = rolls_list |> listm'.box |> listm'.to_array' |> am'.to_vec 
> |> sm'.format_debug
>         }
>     inl sequential_roll = rolls_list |> lib.dice.create_sequential_roller
>     inl result = lib.dice.roll_progressively sequential_roll true max
>     trace Debug (fun () => "") (join id)
>     result
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! rust -cd near-token
> 
> 2000
> |> generate_random_number
>     ("" |> sm'.byte_slice |> near.new_vector |> rust.to_ref_mut)
>     ("" |> sm'.to_std_string)
>     ("" |> sm'.to_std_string)
> |> _assert_gt 0
> 
> ── [ 15.27s - return value ] ───────────────────────────────────────────────────
> │ 00:00:00 d #2 dice_contract.generate_random_number / { 
> max = 2000; key = ""; proof = ""; block_timestamp = 1742040362094755364; 
> block_height = 8; epoch_height = 1; account_balance = NearToken { inner: 
> 99817379736552383587979200 }; signer_account_id = 
> "dev-20250315120600-47161634801103"; predecessor_account_id = 
> "dev-20250315120600-47161634801103"; seed = [142, 112, 74, 188, 242, 128, 39, 
> 35, 113, 175, 66, 83, 40, 50, 1, 211, 182, 48, 113, 93, 219, 229, 3, 218, 52, 
> 240, 28, 186, 1, 92, 214, 5]; seeds = Vector { len: 64, prefix: [] }; 
> entropy_len = 138; entropy = [142, 112, 74, 188, 242, 128, 39, 35, 113, 175, 66,
> 83, 40, 50, 1, 211, 182, 48, 113, 93, 219, 229, 3, 218, 52, 240, 28, 186, 1, 92,
> 214, 5, 1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 36, 254, 12, 199, 122, 
> 248, 44, 24, 192, 143, 230, 30, 215, 18, 132, 255, 38, 145, 82, 0, 0, 0, 0, 0, 
> 100, 101, 118, 45, 50, 48, 50, 53, 48, 51, 49, 53, 49, 50, 48, 54, 48, 48, 45, 
> 52, 55, 49, 54, 49, 54, 51, 52, 56, 48, 49, 49, 48, 51, 100, 101, 118, 45, 50, 
> 48, 50, 53, 48, 51, 49, 53, 49, 50, 48, 54, 48, 48, 45, 52, 55, 49, 54, 49, 54, 
> 51, 52, 56, 48, 49, 49, 48, 51]; hash_u8 = [152, 90, 223, 195, 111, 222, 30, 
> 201, 131, 12, 81, 45, 23, 147, 162, 29, 23, 241, 83, 181, 177, 116, 37, 190, 
> 107, 103, 149, 44, 158, 174, 247, 85, 118, 102, 31, 129, 199, 6, 165, 129, 164, 
> 111, 60, 168, 115, 15, 121, 22, 66, 63, 41, 41, 140, 5, 147, 233, 164, 79, 147, 
> 28, 222, 170, 227, 59]; rolls = [2, 6, 1, 3, 3, 6, 6, 3, 5, 6, 3, 3, 5, 3, 6, 
> .../ { current_index = 18; acc = 1; len = -1; last_item = Some(1) }
> │ 00:00:00 d #41 dice.create_sequential_roller / roll / {
> current_index = 19; acc = 1; len = -1; last_item = Some(5) }
> │ 00:00:00 d #42 dice.accumulate_dice_rolls / { power = 
> 4; acc = 0; roll = 1 }
> │ 00:00:00 d #43 dice.accumulate_dice_rolls / { power = 
> 3; acc = 0; roll = 5; value = 864 }
> │ 00:00:00 d #44 dice.accumulate_dice_rolls / { power = 
> 2; acc = 864; roll = 5; value = 144 }
> │ 00:00:00 d #45 dice.accumulate_dice_rolls / { power = 
> 1; acc = 1008; roll = 1 }
> │ 00:00:00 d #46 dice.accumulate_dice_rolls / { power = 
> 0; acc = 1008; roll = 5; value = 4 }
> │ 00:00:00 d #47 dice.accumulate_dice_rolls / { power = 
> -1; acc = 1012; result = 1013 }
> │  
> │ 00:00:06 i #2 near_workspaces.print_usd / { retry = 1; 
> total_gas_burnt_usd = +0.059446; total_gas_burnt = 88990439914799 }
> │ 00:00:06 i #3 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:06 i #4 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.059091; tokens_burnt_usd = +0.059091; 
> gas_burnt = 88459175492959; tokens_burnt = 8845917549295900000000 }
> │ 00:00:06 i #5 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; 
> gas_burnt = 223182562500; tokens_burnt = 0 }
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### roll_within_bounds
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl roll_within_bounds (max : u64) (rolls : am'.vec u8) : optionm'.option' u64 =
>     inl result =
>         rolls
>         |> am'.from_vec_base
>         |> am'.to_list_base'
>         |> listm'.unbox
>         |> lib.dice.roll_within_bounds max
>         |> optionm'.box
>     trace Debug
>         fun () => "dice_contract.roll_within_bounds"
>         fun () => { max rolls = rolls |> sm'.format_debug; result = result |> 
> sm'.format_debug }
>     trace Debug (fun () => "") (join id)
>     result
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! rust -c
> 
> inl rolls = ;[[ 1; 5; 4; 4; 5 ]] |> am'.to_vec
> 
> rolls
> |> roll_within_bounds 2000
> |> _assert_eq' (optionm'.some' 995)
> 
> ── [ 31.71s - return value ] ───────────────────────────────────────────────────
> │ 00:00:00 d #1 dice.accumulate_dice_rolls / { power = 4;
> acc = 0; roll = 1 }
> │ 00:00:00 d #2 dice.accumulate_dice_rolls / { power = 3;
> acc = 0; roll = 5; value = 864 }
> │ 00:00:00 d #3 dice.accumulate_dice_rolls / { power = 2;
> acc = 864; roll = 4; value = 108 }
> │ 00:00:00 d #4 dice.accumulate_dice_rolls / { power = 1;
> acc = 972; roll = 4; value = 18 }
> │ 00:00:00 d #5 dice.accumulate_dice_rolls / { power = 0;
> acc = 990; roll = 5; value = 4 }
> │ 00:00:00 d #6 dice.accumulate_dice_rolls / { power = 
> -1; acc = 994; result = 995 }
> │ 00:00:00 d #7 dice_contract.roll_within_bounds / { max 
> = 2000; rolls = [1, 5, 4, 4, 5]; result = Some(995) }
> │  
> │ 00:00:06 i #2 near_workspaces.print_usd / { retry = 1; 
> total_gas_burnt_usd = +0.002574; total_gas_burnt = 3853827898004 }
> │ 00:00:06 i #3 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:06 i #4 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.002369; tokens_burnt_usd = +0.002369; 
> gas_burnt = 3545746038664; tokens_burnt = 354574603866400000000 }
> │ 00:00:06 w #5 spiral_wasm.run / Error error / { retry =
> 1; error = "{ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" }
> │ 
> │ 
> │ 00:00:00 d #1 dice.accumulate_dice_rolls / { power = 4;
> acc = 0; roll = 1 }
> │ 00:00:00 d #2 di... "{ receipt_outcomes_len = 1; retry 
> = 3; receipt_failures = [] }" }
> │ 
> │ 
> │ 00:00:00 d #1 dice.accumulate_dice_rolls / { power = 4;
> acc = 0; roll = 1 }
> │ 00:00:00 d #2 dice.accumulate_dice_rolls / { power = 3;
> acc = 0; roll = 5; value = 864 }
> │ 00:00:00 d #3 dice.accumulate_dice_rolls / { power = 2;
> acc = 864; roll = 4; value = 108 }
> │ 00:00:00 d #4 dice.accumulate_dice_rolls / { power = 1;
> acc = 972; roll = 4; value = 18 }
> │ 00:00:00 d #5 dice.accumulate_dice_rolls / { power = 0;
> acc = 990; roll = 5; value = 4 }
> │ 00:00:00 d #6 dice.accumulate_dice_rolls / { power = 
> -1; acc = 994; result = 995 }
> │ 00:00:00 d #7 dice_contract.roll_within_bounds / { max 
> = 2000; rolls = [1, 5, 4, 4, 5]; result = Some(995) }
> │  
> │ 00:00:24 i #20 near_workspaces.print_usd / { retry = 4;
> total_gas_burnt_usd = +0.002723; total_gas_burnt = 4077010460504 }
> │ 00:00:24 i #21 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:24 i #22 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.002369; tokens_burnt_usd = +0.002369; 
> gas_burnt = 3545746038664; tokens_burnt = 354574603866400000000 }
> │ 00:00:24 i #23 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; 
> gas_burnt = 223182562500; tokens_burnt = 0 }
> │ 
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! rust -c
> 
> inl rolls = ;[[ 2; 2; 6; 4; 5 ]] |> am'.to_vec
> 
> rolls
> |> roll_within_bounds 2000
> |> _assert_eq' (optionm'.some' 1715)
> 
> ── [ 19.58s - return value ] ───────────────────────────────────────────────────
> │ 00:00:00 d #1 dice.accumulate_dice_rolls / { power = 4;
> acc = 0; roll = 2; value = 1296 }
> │ 00:00:00 d #2 dice.accumulate_dice_rolls / { power = 3;
> acc = 1296; roll = 2; value = 216 }
> │ 00:00:00 d #3 dice.accumulate_dice_rolls / { power = 2;
> acc = 1512; roll = 6; value = 180 }
> │ 00:00:00 d #4 dice.accumulate_dice_rolls / { power = 1;
> acc = 1692; roll = 4; value = 18 }
> │ 00:00:00 d #5 dice.accumulate_dice_rolls / { power = 0;
> acc = 1710; roll = 5; value = 4 }
> │ 00:00:00 d #6 dice.accumulate_dice_rolls / { power = 
> -1; acc = 1714; result = 1715 }
> │ 00:00:00 d #7 dice_contract.roll_within_bounds / { max 
> = 2000; rolls = [2, 2, 6, 4, 5]; result = Some(1715) }
> │  
> │ 00:00:06 i #2 near_workspaces.print_usd / { retry = 1; 
> total_gas_burnt_usd = +0.002641; total_gas_burnt = 3953244234365 }
> │ 00:00:06 i #3 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:06 i #4 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.002435; tokens_burnt_usd = +0.002435; 
> gas_burnt = 3645162375025; tokens_burnt = 364516237502500000000 }
> │ 00:00:06 w #5 spiral_wasm.run / Error error / { retry =
> 1; error = "{ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" }
> │ 
> │ 
> │ 00:00:00 d #1 dice.accumulate_dice_rolls / { power = 4;
> acc = 0; roll = 2; value = 1296 }
> │ 00:00:00 d #2 dice.accumulate_dice_rolls / { power = 3;
> acc = 1296; roll = 2; value = 216 }
> │ 00:00:00 d #3 dice.accumulate_dice_rolls / { power = 2;
> acc = 1512; roll = 6; value = 180 }
> │ 00:00:00 d #4 dice.accumulate_dice_rolls / { power = 1;
> acc = 1692; roll = 4; value = 18 }
> │ 00:00:00 d #5 dice.accumulate_dice_rolls / { power = 0;
> acc = 1710; roll = 5; value = 4 }
> │ 00:00:00 d #6 dice.accumulate_dice_rolls / { power = 
> -1; acc = 1714; result = 1715 }
> │ 00:00:00 d #7 dice_contract.roll_within_bounds / { max 
> = 2000; rolls = [2, 2, 6, 4, 5]; result = Some(1715) }
> │  
> │ 00:00:12 i #8 near_workspaces.print_usd / { retry = 2; 
> total_gas_burnt_usd = +0.002790; total_gas_burnt = 4176426796865 }
> │ 00:00:12 i #9 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:12 i #10 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.002435; tokens_burnt_usd = +0.002435; 
> gas_burnt = 3645162375025; tokens_burnt = 364516237502500000000 }
> │ 00:00:12 i #11 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; 
> gas_burnt = 223182562500; tokens_burnt = 0 }
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### main
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> ///! _
> 
> inl main () =
>     !\($'"} //"') : ()
> 
>     !\($'"#[[derive( //"') : ()
>     !\($'"  near_sdk::PanicOnDefault, //"') : ()
>     !\($'"  borsh::BorshDeserialize, //"') : ()
>     !\($'"  borsh::BorshSerialize, //"') : ()
>     !\($'")]] //"') : ()
> 
>     !\($'"pub struct OldState { //"') : ()
>     !\($'"    version: u32, //"') : ()
>     !\($'"    seeds: near_sdk::store::vec::Vector<u8>, //"') : ()
>     !\($'"} //"') : ()
> 
>     !\($'"#[[near_sdk::near_bindgen]] //"') : ()
> 
>     !\($'"#[[derive( //"') : ()
>     !\($'"  near_sdk::PanicOnDefault, //"') : ()
>     !\($'"  borsh::BorshDeserialize, //"') : ()
>     !\($'"  borsh::BorshSerialize, //"') : ()
>     !\($'")]] //"') : ()
> 
>     !\($'"pub struct State ( //"') : ()
> 
>     !\($'"/*"') : ()
>     (null () : rust.type_emit state) |> ignore
>     !\($'"*/ )"') : ()
> 
>     !\($'"impl From<OldState> for State { //"') : ()
>     !\($'"    fn from(old_state: OldState) -> Self { //"') : ()
>     !\($'"        Self((old_state.version + 1, old_state.seeds)) //"') : ()
>     !\($'"    } //"') : ()
>     !\($'"} //"') : ()
> 
>     inl new_ () =
>         !\($'"#[[init]] //"') : ()
>         !\($'"pub fn new() -> Self { // 1"') : ()
> 
>         (!\($'"true; /*"') : bool) |> ignore
> 
>         (null () : rust.type_emit ()) |> ignore
> 
>         (!\($'"true; */"') : bool) |> ignore
> 
>         inl result = new ()
>         $'let _result = !result in _result |> (fun x -> 
> Fable.Core.RustInterop.emitRustExpr x $"Self($0) // x") // 2' : ()
> 
>         !\($'"} // 2."') : ()
> 
>         !\($'"} // 1."') : ()
> 
>         2
> 
>     inl contribute_seed () =
>         !\($'"pub fn contribute_seed(&mut self, seed: Vec<u8>) { //"') : ()
>         inl seeds : rust.ref (rust.mut' (near.vector u8)) = !\($'$"&mut 
> self.0.1"')
>         inl seed : am'.vec u8 = !\($'$"seed"')
> 
>         seed |> contribute_seed seeds
> 
>         !\($'"} //"') : ()
> 
>         !\($'"} //"') : ()
> 
>         !\($'"} //"') : ()
> 
>         3
> 
>     inl contribute_seed_borsh () =
>         !\($'"pub fn contribute_seed_borsh(&mut self, #[[serializer(borsh)]] 
> seed: Vec<u8>) { //"') : ()
>         !\($'"    self.contribute_seed(seed) //"') : ()
>         !\($'"} //"') : ()
> 
>         1
> 
>     inl generate_random_number () =
>         !\($'"pub fn generate_random_number(&mut self, key: String, proof: 
> String, max: u64) -> u64 { //"') : ()
> 
>         inl key : sm'.std_string = !\($'$"key"')
>         inl proof : sm'.std_string = !\($'$"proof"')
>         inl max : u64 = !\($'$"max"')
> 
>         inl seeds : rust.ref (rust.mut' (near.vector u8)) = !\($'$"&mut 
> self.0.1"')
> 
>         inl result = generate_random_number seeds key proof max
> 
>         !\($'"!result //"') : ()
> 
>         !\($'"} //"') : ()
> 
>         !\($'"} //"') : ()
> 
>         !\($'"} //"') : ()
> 
>         3
> 
>     inl roll_within_bounds () =
>         !\($'"pub fn roll_within_bounds(&self, max: u64, rolls: Vec<u8>) -> 
> Option<u64> { //"') : ()
>         inl max : u64 = !\($'$"max"')
>         inl rolls : am'.vec u8 = !\($'$"rolls"')
>         inl result = roll_within_bounds max rolls
> 
>         !\\(result, $'"$0 //"') : ()
> 
>         !\($'"} //"') : ()
> 
>         !\($'"} //"') : ()
> 
>         2
> 
>     inl roll_within_bounds_borsh () =
>         !\($'"#[[result_serializer(borsh)]] //"') : ()
>         !\($'"pub fn roll_within_bounds_borsh( //"') : ()
>         !\($'"    &self, //"') : ()
>         !\($'"    #[[serializer(borsh)]] max: u64, //"') : ()
>         !\($'"    #[[serializer(borsh)]] rolls: Vec<u8>, //"') : ()
>         !\($'") -> Option<u64> { //"') : ()
>         !\($'"    self.roll_within_bounds(max, rolls) //"') : ()
>         !\($'"} //"') : ()
> 
>         1
> 
> 
>     inl fns =
>         [[
>             new_
>             contribute_seed
>             contribute_seed_borsh
>             generate_random_number
>             roll_within_bounds
>             roll_within_bounds_borsh
>         ]]
> 
>     inl rec loop acc fns i =
>         match fns with
>         | [[]] => acc
>         | x :: xs =>
>             !\($'"#[[near_sdk::near_bindgen]] //"') : ()
>             !\($'"impl State { //"') : ()
>             inl n = x ()
>             !\($'"} /* c"') : ()
>             inl rec loop' i' =
>                 if i' <> 1 // <= n
>                 then (!\($'"true; */ // ???? / i: !i / i\': !i' / acc: !acc / n:
> !n"') : bool) |> ignore
>                 else
>                     (!\($'"true; // ??? / i: !i / i\': !i' / acc: !acc / n: 
> !n"') : bool) |> ignore
>                     loop' (i' + 1)
>             loop' 1u8
>             loop (acc + n) xs (i + 1)
>     inl n = loop 0u8 fns 1u8
> 
> 
>     // !\($'"/* a"') : ()
> 
>     // !\($'"} // b"') : ()
> 
>     !\($'"fn _main() //"') : ()
>     !\($'" //"') : ()
> 
>     inl rec loop' i' =
>         if i' <= n
>         then
>             (!\($'"true; { (); // ?? / i\': !i' / n: !n"') : bool) |> ignore
>             loop' (i' + 1)
>         else
>             (!\($'"true; { { (); // ? / i\': !i' / n: !n"') : bool) |> ignore
>             // (!\($'"true; */ // ?? / i\': !i' / n: !n"') : bool) |> ignore
>     loop' 1u8
> 
> inl main () =
>     $'!main |> ignore' : ()
00:02:48 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 32856 }
00:02:48 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/dice/contract/dice_contract.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/dice/contract/dice_contract.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:02:49 v #5 ! [NbConvertApp] Converting notebook c:/home/git/dice/contract/dice_contract.dib.ipynb to html
00:02:49 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:02:49 v #7 !   validate(nb)
00:02:50 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:02:50 v #9 !   return _pygments_highlight(
00:02:50 v #10 ! [NbConvertApp] Writing 361980 bytes to c:\home\git\dice\contract\dice_contract.dib.html
00:02:50 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 856 }
00:02:50 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 856 }
00:02:50 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/dice/contract/dice_contract.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/dice/contract/dice_contract.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:02:51 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:02:51 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:02:51 d #16 spiral.run / dib / { exit_code = 0; result_length = 33771 }
00:00:00 d #1 writeDibCode / output: Spi / path: dice_contract.dib
00:00:00 d #2 parseDibCode / output: Spi / file: dice_contract.dib
00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: dice_contract / hash:  / code.Length: 166687
00:00:00 d #2 buildProject / fullPath: c:\home\git\polyglot\target\Builder\dice_contract\dice_contract.fsproj
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  "publish "c:/home/git\polyglot\target/Builder\dice_contract\dice_contract.fsproj" --configuration Release --output "C:\home\git\dice\contract\dist" --runtime linux-x64"; options = { command = dotnet publish "c:/home/git\polyglot\target/Builder\dice_contract\dice_contract.fsproj" --configuration Release --output "C:\home\git\dice\contract\dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "c:\home\git\polyglot\target\Builder\dice_contract" } }
00:00:01 v #2 >   Determining projects to restore...
00:00:01 v #3 >   Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
00:00:01 v #4 >   The last full restore is still up to date. Nothing left to do.
00:00:01 v #5 >   Total time taken: 0 milliseconds
00:00:02 v #6 >   Restored c:\home\git\polyglot\target\Builder\dice_contract\dice_contract.fsproj (in 252 ms).
00:00:16 v #7 >   dice_contract -> c:\home\git\polyglot\target\Builder\dice_contract\bin\Release\net9.0\linux-x64\dice_contract.dll
00:00:18 v #8 >   dice_contract -> C:\home\git\dice\contract\dist\
00:00:18 d #9 runtime.execute_with_options_async / { exit_code = 0; output_length = 461; options = { command = dotnet publish "c:/home/git\polyglot\target/Builder\dice_contract\dice_contract.fsproj" --configuration Release --output "C:\home\git\dice\contract\dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "c:\home\git\polyglot\target\Builder\dice_contract" } }
00:00:18 d #10 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  "publish "c:/home/git\polyglot\target/Builder\dice_contract\dice_contract.fsproj" --configuration Release --output "C:\home\git\dice\contract\dist" --runtime win-x64"; options = { command = dotnet publish "c:/home/git\polyglot\target/Builder\dice_contract\dice_contract.fsproj" --configuration Release --output "C:\home\git\dice\contract\dist" --runtime win-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "c:\home\git\polyglot\target\Builder\dice_contract" } }
00:00:18 v #11 >   Determining projects to restore...
00:00:19 v #12 >   Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
00:00:19 v #13 >   The last full restore is still up to date. Nothing left to do.
00:00:19 v #14 >   Total time taken: 0 milliseconds
00:00:19 v #15 >   Restored c:\home\git\polyglot\target\Builder\dice_contract\dice_contract.fsproj (in 247 ms).
00:00:34 v #16 >   dice_contract -> c:\home\git\polyglot\target\Builder\dice_contract\bin\Release\net9.0\win-x64\dice_contract.dll
00:00:35 v #17 >   dice_contract -> C:\home\git\dice\contract\dist\
00:00:35 d #18 runtime.execute_with_options_async / { exit_code = 0; output_length = 459; options = { command = dotnet publish "c:/home/git\polyglot\target/Builder\dice_contract\dice_contract.fsproj" --configuration Release --output "C:\home\git\dice\contract\dist" --runtime win-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "c:\home\git\polyglot\target\Builder\dice_contract" } }
spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: C:\home\git\polyglot\target\Builder\dice_contract
polyglot/scripts/core.ps1/ResolveLink #4 / Path: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral/../../deps/polyglot / parent_target:  / path_target: C:\home\git\polyglot / parent: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral\..\..\deps / End: polyglot
spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: C:\home\git\polyglot\target\Builder\dice_contract / ProjectName: dice_contract / Language: rs / Runtime: CONTRACT / root: C:\home\git\polyglot
Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha)

Thanks to the contributor! @dgchurchill
Stand with Ukraine! https://standwithukraine.com.ua/

Parsing target\Builder\dice_contract\dice_contract.fsproj...
Retrieving project options from cache, in case of issues run `dotnet fable clean` or try `--noCache` option.
Project and references (14 source files) parsed in 178ms

Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)

Started Fable compilation...

Fable compilation finished in 11389ms

.\deps\spiral\lib\spiral\async_.fsx(250,0): (250,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\threading.fsx(139,0): (139,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\common.fsx(2193,0): (2193,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\sm.fsx(560,0): (560,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\crypto.fsx(2420,0): (2420,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\date_time.fsx(2546,0): (2546,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\platform.fsx(121,0): (121,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\networking.fsx(5011,0): (5011,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\trace.fsx(2226,0): (2226,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\runtime.fsx(7234,0): (7234,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\file_system.fsx(18760,0): (18760,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\target\Builder\dice_contract\dice_contract.fs(4228,6): (4228,12) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
dice/contract/build.ps1 / path: C:\home\git\polyglot\target\Builder\dice_contract/target/rs/dice_contract.rs
   Compiling fable_library_rust v0.1.0 (C:\home\git\dice\deps\polyglot\lib\rust\fable\fable_modules\fable-library-rust)
   Compiling dice_contract_lib v0.0.1 (C:\home\git\dice\lib\contract)
   Compiling dice_contract v0.0.1 (C:\home\git\dice\contract)
    Finished `release` profile [optimized] target(s) in 22.48s
dice/contract/build.ps1 / $targetDir = C:\home\git\polyglot\target\Builder\dice_contract / $projectName: dice_contract / $env:CI:''
    Finished `release` profile [optimized] target(s) in 16.50s
     Running `/mnt/c/home/git/dice/target/release/dice_contract_tests`


new: ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 1798486428655,
    },
    transaction: ExecutionOutcome {
        transaction_hash: BACr8vNnGePT2Yi2aoLgrHC3H8irtyFPf921myRXHSpm,
        block_hash: HnCcaxSFzSeLeLychqB1nU3uh2fgHYXQ4PzpLbJBpACw,
        logs: [],
        receipt_ids: [
            Bygk1KJxk4ReRMkaUEhhYLjzS755HM1T3sPinqRK4x5c,
        ],
        gas_burnt: NearGas {
            inner: 308066207802,
        },
        tokens_burnt: NearToken {
            inner: 30806620780200000000,
        },
        executor_id: AccountId(
            "dev-20250315120850-45284817316830",
        ),
        status: SuccessReceiptId(Bygk1KJxk4ReRMkaUEhhYLjzS755HM1T3sPinqRK4x5c),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: Bygk1KJxk4ReRMkaUEhhYLjzS755HM1T3sPinqRK4x5c,
            block_hash: HnCcaxSFzSeLeLychqB1nU3uh2fgHYXQ4PzpLbJBpACw,
            logs: [],
            receipt_ids: [
                5rg9HPqAEUNJ8AU9B5K4hNNmTzFfQuLuqiD7qwC1nBBv,
            ],
            gas_burnt: NearGas {
                inner: 1267237658353,
            },
            tokens_burnt: NearToken {
                inner: 126723765835300000000,
            },
            executor_id: AccountId(
                "dev-20250315120850-45284817316830",
            ),
            status: SuccessValue(''),
        },
        ExecutionOutcome {
            transaction_hash: 5rg9HPqAEUNJ8AU9B5K4hNNmTzFfQuLuqiD7qwC1nBBv,
            block_hash: 426K2KQFfYqVgS8hBDbA8WhxTGMKTKGKLPVDQ3MyVek1,
            logs: [],
            receipt_ids: [],
            gas_burnt: NearGas {
                inner: 223182562500,
            },
            tokens_burnt: NearToken {
                inner: 0,
            },
            executor_id: AccountId(
                "dev-20250315120850-45284817316830",
            ),
            status: SuccessValue(''),
        },
    ],
    status: SuccessValue(''),
}
total_gas_burnt_usd: 0.00120138893434154
outcome (success: true):
  outcome_gas_burnt_usd: 0.000205788226811736
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.0008465147557798039
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.00014908595175
  outcome_tokens_burnt_usd: 0.0


roll_within_bounds(contract, ''): ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 4116034808405,
    },
    transaction: ExecutionOutcome {
        transaction_hash: CY3PqVCbuT3coTXZwwzhNfH2XJyXay42j3hKPLxaJbGh,
        block_hash: 3wTs59NZoDY23Jh96nKUTCbeDdb8kSMVVjJEj74Qa5wi,
        logs: [],
        receipt_ids: [
            B8qVKWe8spKoWNmtdX7ieqaDnF9fuzyjeEF5x6D1YiWB,
        ],
        gas_burnt: NearGas {
            inner: 308171296700,
        },
        tokens_burnt: NearToken {
            inner: 30817129670000000000,
        },
        executor_id: AccountId(
            "dev-20250315120850-45284817316830",
        ),
        status: SuccessReceiptId(B8qVKWe8spKoWNmtdX7ieqaDnF9fuzyjeEF5x6D1YiWB),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: B8qVKWe8spKoWNmtdX7ieqaDnF9fuzyjeEF5x6D1YiWB,
            block_hash: 3wTs59NZoDY23Jh96nKUTCbeDdb8kSMVVjJEj74Qa5wi,
            logs: [
                "12:08:52 \u{1b}[94md\u{1b}[39m #1 dice.accumulate_dice_rolls / { power = 4; acc = 0; roll = 1 }\n12:08:52 \u{1b}[94md\u{1b}[39m #2 dice.accumulate_dice_rolls / { power = 3; acc = 0; roll = 5; value = 864 }\n12:08:52 \u{1b}[94md\u{1b}[39m #3 dice.accumulate_dice_rolls / { power = 2; acc = 864; roll = 4; value = 108 }\n12:08:52 \u{1b}[94md\u{1b}[39m #4 dice.accumulate_dice_rolls / { power = 1; acc = 972; roll = 4; value = 18 }\n12:08:52 \u{1b}[94md\u{1b}[39m #5 dice.accumulate_dice_rolls / { power = 0; acc = 990; roll = 5; value = 4 }\n12:08:52 \u{1b}[94md\u{1b}[39m #6 dice.accumulate_dice_rolls / { power = -1; acc = 994; result = 995 }\n12:08:52 \u{1b}[94md\u{1b}[39m #7 dice_contract.roll_within_bounds / { max = 2000; rolls = [1, 5, 4, 4, 5]; result = Some(995) }",
            ],
            receipt_ids: [
                43FqitfuENPNbrY3ACvg4YiQCUKs5nSuYQdoSkHCtnbV,
            ],
            gas_burnt: NearGas {
                inner: 3807863511705,
            },
            tokens_burnt: NearToken {
                inner: 380786351170500000000,
            },
            executor_id: AccountId(
                "dev-20250315120850-45284817316830",
            ),
            status: SuccessValue('995'),
        },
    ],
    status: SuccessValue('995'),
}
total_gas_burnt_usd: 0.00274951125201454
outcome (success: true):
  outcome_gas_burnt_usd: 0.00020585842619559998
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.0025436528258189397
  outcome_tokens_burnt_usd: 0.0


roll_within_bounds_borsh(contract, ''): ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 4437523020734,
    },
    transaction: ExecutionOutcome {
        transaction_hash: 2dBmd3DjZjVb5tB7TBt8BXcLCQsiCzwhUxJLF2MVuCJa,
        block_hash: AJLTfuM9baBnJLkUG5CVhTTj6CpEKSNEg89ARYYBepoy,
        logs: [],
        receipt_ids: [
            EFmMh7gPHUTJR9amRYJnum34ZvpVYEjcjaBocbWhGc93,
        ],
        gas_burnt: NearGas {
            inner: 308151173294,
        },
        tokens_burnt: NearToken {
            inner: 30815117329400000000,
        },
        executor_id: AccountId(
            "dev-20250315120850-45284817316830",
        ),
        status: SuccessReceiptId(EFmMh7gPHUTJR9amRYJnum34ZvpVYEjcjaBocbWhGc93),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: EFmMh7gPHUTJR9amRYJnum34ZvpVYEjcjaBocbWhGc93,
            block_hash: AJLTfuM9baBnJLkUG5CVhTTj6CpEKSNEg89ARYYBepoy,
            logs: [
                "12:08:52 \u{1b}[94md\u{1b}[39m #1 dice.accumulate_dice_rolls / { power = 4; acc = 0; roll = 2; value = 1296 }\n12:08:52 \u{1b}[94md\u{1b}[39m #2 dice.accumulate_dice_rolls / { power = 3; acc = 1296; roll = 2; value = 216 }\n12:08:52 \u{1b}[94md\u{1b}[39m #3 dice.accumulate_dice_rolls / { power = 2; acc = 1512; roll = 6; value = 180 }\n12:08:52 \u{1b}[94md\u{1b}[39m #4 dice.accumulate_dice_rolls / { power = 1; acc = 1692; roll = 4; value = 18 }\n12:08:52 \u{1b}[94md\u{1b}[39m #5 dice.accumulate_dice_rolls / { power = 0; acc = 1710; roll = 5; value = 4 }\n12:08:52 \u{1b}[94md\u{1b}[39m #6 dice.accumulate_dice_rolls / { power = -1; acc = 1714; result = 1715 }\n12:08:52 \u{1b}[94md\u{1b}[39m #7 dice_contract.roll_within_bounds / { max = 2000; rolls = [2, 2, 6, 4, 5]; result = Some(1715) }",
            ],
            receipt_ids: [
                2Frv56GU6xEVwhfT3QnWVUaxkTws8pw61Jc1ymbWFMxv,
            ],
            gas_burnt: NearGas {
                inner: 3906189284940,
            },
            tokens_burnt: NearToken {
                inner: 390618928494000000000,
            },
            executor_id: AccountId(
                "dev-20250315120850-45284817316830",
            ),
            status: SuccessValue(AbMGAAAAAAAA),
        },
        ExecutionOutcome {
            transaction_hash: 2Frv56GU6xEVwhfT3QnWVUaxkTws8pw61Jc1ymbWFMxv,
            block_hash: 3Petu9XY2iTEY1YZS4TJ9vpG8T6qJVzTsHQeZerC1Fxz,
            logs: [],
            receipt_ids: [],
            gas_burnt: NearGas {
                inner: 223182562500,
            },
            tokens_burnt: NearToken {
                inner: 0,
            },
            executor_id: AccountId(
                "dev-20250315120850-45284817316830",
            ),
            status: SuccessValue(''),
        },
    ],
    status: SuccessValue(AbMGAAAAAAAA),
}
total_gas_burnt_usd: 0.0029642653778503116
outcome (success: true):
  outcome_gas_burnt_usd: 0.000205844983760392
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.00260933444233992
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.00014908595175
  outcome_tokens_burnt_usd: 0.0
n: Some(
    Some(
        1715,
    ),
)


generate_random_number(contract, ''): ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 90587214734750,
    },
    transaction: ExecutionOutcome {
        transaction_hash: 5GVPcUaR4JENkBUVno6n6D9Vduowhkz8JBe1JU4Y1ZqE,
        block_hash: B9q1YjdW7HQrxXoC4EogqWGZoPyWMDYc2X94RGjo7xcu,
        logs: [],
        receipt_ids: [
            D6V6gWs7aFqn3rTYL8xgVPaxWwaviqgP6n7sdsvjkGVS,
        ],
        gas_burnt: NearGas {
            inner: 308198127908,
        },
        tokens_burnt: NearToken {
            inner: 30819812790800000000,
        },
        executor_id: AccountId(
            "dev-20250315120850-45284817316830",
        ),
        status: SuccessReceiptId(D6V6gWs7aFqn3rTYL8xgVPaxWwaviqgP6n7sdsvjkGVS),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: D6V6gWs7aFqn3rTYL8xgVPaxWwaviqgP6n7sdsvjkGVS,
            block_hash: B9q1YjdW7HQrxXoC4EogqWGZoPyWMDYc2X94RGjo7xcu,
            logs: [
                "12:08:53 \u{1b}[94md\u{1b}[39m #2 dice_contract.generate_random_number / { max = 2000; key = \"key\"; proof = \"proof\"; block_timestamp = 1742040533277105854; block_height = 17; epoch_height = 1; account_balance = NearToken { inner: 99816578593509712873471040 }; signer_account_id = \"dev-20250315120850-45284817316830\"; predecessor_account_id = \"dev-20250315120850-45284817316830\"; seed = [138, 43, 151, 18, 3, 219, 159, 181, 183, 45, 207, 38, 156, 130, 112, 179, 114, 140, 51, 79, 65, 232, 194, 130, 108, 236, 152, 157, 157, 2, 208, 224]; seeds = Vector { len: 64, prefix: [115, 101, 101, 100, 115] }; entropy_len = 146; entropy = [138, 43, 151, 18, 3, 219, 159, 181, 183, 45, 207, 38, 156, 130, 112, 179, 114, 140, 51, 79, 65, 232, 194, 130, 108, 236, 152, 157, 157, 2, 208, 224, 1, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 190, 94, 80, 162, 162, 248, 44, 24, 64, 60, 89, 71, 43, 58, 108, 145, 251, 144, 82, 0, 0, 0, 0, 0, 100, 101, 118, 45, 50, 48, 50, 53, 48, 51, 49, 53, 49, 50, 48, 56, 53, 48, 45, 52, 53, 50, 56, 52, 56, 49, 55, 51, 49, 54, 56, 51, 48, 100, 101, 118, 45, 50, 48, 50, 53, 48, 51, 49, 53, 49, 50, 48, 56, 53, 48, 45, 52, 53, 50, 56, 52, 56, 49, 55, 51, 49, 54, 56, 51, 48, 112, 114, 111, 111, 102, 107, 101, 121]; hash_u8 = [166, 160, 238, 139, 227, 201, 42, 175, 79, 129, 146, 247, 10, 126, 198, 194, 91, 123, 6, 14, 149, 43, 30, 122, 54, 37, 97, 50, 219, 238, 114, 149, 120, 165, 226, 121, 181, 128, 222, 63, 73, 23, 9, 8, 137, 26, 247, 185, 44, 186, 239, 42, 43, 162, 201, 81, 194, 100, 199, 113, 77, 89, 240, 177]; rolls = [4, 4, 4, 1, 5, 3, 6, 1, 1, 3, 2, 1, 4, 6, 6, 2, 1, 3, 6, 2, 5, 1, 6, 2, 6, 1, 1, 2, 3, 4, 6, 5, 6, 3, 4, 1, 1, 2, 6, 3, 1, 5, 3, 2, 5, 2, 1, 5, 2, 6, 5, 6, 1, 6, 3, 3, 2, 4, 1, 5, 5, 5, 6, 3] }\n12:08:53 \u{1b}[94md\u{1b}[39m #3 dice.calculate_dice_count / { max = 2000; p = 7776; n = 5 }\n12:08:53 \u{1b}[94md\u{1b}[39m #4 dice.create_sequential_roller / roll / { current_index = 0; acc = 1; len = -1; last_item = None }\n12:08:53 \u{1b}[94md\u{1b}[39m #5 dice.create_sequential_roller / roll / { current_index = 1; acc = 1; len = -1; last_item = Some(4) }\n12:08:53 \u{1b}[94md\u{1b}[39m #6 dice.create_sequential_roller / roll / { current_index = 2; acc = 1; len = -1; last_item = Some(4) }\n12:08:53 \u{1b}[94md\u{1b}[39m #7 dice.create_sequential_roller / roll / { current_index = 3; acc = 1; len = -1; last_item = Some(4) }\n12:08:53 \u{1b}[94md\u{1b}[39m #8 dice.create_sequential_roller / roll / { current_index = 4; acc = 1; len = -1; last_item = Some(1) }\n12:08:53 \u{1b}[94md\u{1b}[39m #9 dice.accumulate_dice_rolls / { power = 4; acc = 0; roll = 5; value = 5184 }\n12:08:53 \u{1b}[94md\u{1b}[39m #10 dice.accumulate_dice_rolls / { power = 3; acc = 5184; roll = 1 }\n12:08:53 \u{1b}[94md\u{1b}[39m #11 dice.accumulate_dice_rolls / { power = 2; acc = 5184; roll = 4; value = 108 }\n12:08:53 \u{1b}[94md\u{1b}[39m #12 dice.accumulate_dice_rolls / { power = 1; acc = 5292; roll = 4; value = 18 }\n12:08:53 \u{1b}[94md\u{1b}[39m #13 dice.accumulate_dice_rolls / { power = 0; acc = 5310; roll = 4; value = 3 }\n12:08:53 \u{1b}[94md\u{1b}[39m #14 dice.accumulate_dice_rolls / { power = -1; acc = 5313; result = 5314 }\n12:08:53 \u{1b}[94md\u{1b}[39m #15 dice.create_sequential_roller / roll / { current_index = 5; acc = 1; len = -1; last_item = Some(5) }\n12:08:53 \u{1b}[94md\u{1b}[39m #16 dice.create_sequential_roller / roll / { current_index = 6; acc = 1; len = -1; last_item = Some(3) }\n12:08:53 \u{1b}[94md\u{1b}[39m #17 dice.create_sequential_roller / roll / { current_index = 7; acc = 1; len = -1; last_item = Some(6) }\n12:08:53 \u{1b}[94md\u{1b}[39m #18 dice.create_sequential_roller / roll / { current_index = 8; acc = 1; len = -1; last_item = Some(1) }\n12:08:53 \u{1b}[94md\u{1b}[39m #19 dice.create_sequential_roller / roll / { current_index = 9; acc = 1; len = -1; last_item = Some(1) }\n12:08:53 \u{1b}[94md\u{1b}[39m #20 dice.accumulate_dice_rolls / { power = 4; acc = 0; roll = 3; value = 2592 }\n12:08:53 \u{1b}[94md\u{1b}[39m #21 dice.accumulate_dice_rolls / { power = 3; acc = 2592; roll = 3; value = 432 }\n12:08:53 \u{1b}[94md\u{1b}[39m #22 dice.accumulate_dice_rolls / { power = 2; acc = 3024; roll = 6; value = 180 }\n12:08:53 \u{1b}[94md\u{1b}[39m #23 dice.accumulate_dice_rolls / { power = 1; acc = 3204; roll = 1 }\n12:08:53 \u{1b}[94md\u{1b}[39m #24 dice.accumulate_dice_rolls / { power = 0; acc = 3204; roll = 1 }\n12:08:53 \u{1b}[94md\u{1b}[39m #25 dice.accumulate_dice_rolls / { power = -1; acc = 3204; result = 3205 }\n12:08:53 \u{1b}[94md\u{1b}[39m #26 dice.create_sequential_roller / roll / { current_index = 10; acc = 1; len = -1; last_item = Some(3) }\n12:08:53 \u{1b}[94md\u{1b}[39m #27 dice.create_sequential_roller / roll / { current_index = 11; acc = 1; len = -1; last_item = Some(2) }\n12:08:53 \u{1b}[94md\u{1b}[39m #28 dice.create_sequential_roller / roll / { current_index = 12; acc = 1; len = -1; last_item = Some(1) }\n12:08:53 \u{1b}[94md\u{1b}[39m #29 dice.create_sequential_roller / roll / { current_index = 13; acc = 1; len = -1; last_item = Some(4) }\n12:08:53 \u{1b}[94md\u{1b}[39m #30 dice.create_sequential_roller / roll / { current_index = 14; acc = 1; len = -1; last_item = Some(6) }\n12:08:53 \u{1b}[94md\u{1b}[39m #31 dice.accumulate_dice_rolls / { power = 4; acc = 0; roll = 6; value = 6480 }\n12:08:53 \u{1b}[94md\u{1b}[39m #32 dice.accumulate_dice_rolls / { power = 3; acc = 6480; roll = 2; value = 216 }\n12:08:53 \u{1b}[94md\u{1b}[39m #33 dice.accumulate_dice_rolls / { power = 2; acc = 6696; roll = 1 }\n12:08:53 \u{1b}[94md\u{1b}[39m #34 dice.accumulate_dice_rolls / { power = 1; acc = 6696; roll = 4; value = 18 }\n12:08:53 \u{1b}[94md\u{1b}[39m #35 dice.accumulate_dice_rolls / { power = 0; acc = 6714; roll = 6; value = 5 }\n12:08:53 \u{1b}[94md\u{1b}[39m #36 dice.accumulate_dice_rolls / { power = -1; acc = 6719; result = 6720 }\n12:08:53 \u{1b}[94md\u{1b}[39m #37 dice.create_sequential_roller / roll / { current_index = 15; acc = 1; len = -1; last_item = Some(6) }\n12:08:53 \u{1b}[94md\u{1b}[39m #38 dice.create_sequential_roller / roll / { current_index = 16; acc = 1; len = -1; last_item = Some(2) }\n12:08:53 \u{1b}[94md\u{1b}[39m #39 dice.create_sequential_roller / roll / { current_index = 17; acc = 1; len = -1; last_item = Some(1) }\n12:08:53 \u{1b}[94md\u{1b}[39m #40 dice.create_sequential_roller / roll / { current_index = 18; acc = 1; len = -1; last_item = Some(3) }\n12:08:53 \u{1b}[94md\u{1b}[39m #41 dice.create_sequential_roller / roll / { current_index = 19; acc = 1; len = -1; last_item = Some(6) }\n12:08:53 \u{1b}[94md\u{1b}[39m #42 dice.accumulate_dice_rolls / { power = 4; acc = 0; roll = 2; value = 1296 }\n12:08:53 \u{1b}[94md\u{1b}[39m #43 dice.accumulate_dice_rolls / { power = 3; acc = 1296; roll = 2; value = 216 }\n12:08:53 \u{1b}[94md\u{1b}[39m #44 dice.accumulate_dice_rolls / { power = 2; acc = 1512; roll = 1 }\n12:08:53 \u{1b}[94md\u{1b}[39m #45 dice.accumulate_dice_rolls / { power = 1; acc = 1512; roll = 3; value = 12 }\n12:08:53 \u{1b}[94md\u{1b}[39m #46 dice.accumulate_dice_rolls / { power = 0; acc = 1524; roll = 6; value = 5 }\n12:08:53 \u{1b}[94md\u{1b}[39m #47 dice.accumulate_dice_rolls / { power = -1; acc = 1529; result = 1530 }",
            ],
            receipt_ids: [
                AgyPE43iFKzyd1ZPbJpVdfwsmR2hxEXZp6i1PF8jkTie,
            ],
            gas_burnt: NearGas {
                inner: 90279016606842,
            },
            tokens_burnt: NearToken {
                inner: 9027901660684200000000,
            },
            executor_id: AccountId(
                "dev-20250315120850-45284817316830",
            ),
            status: SuccessValue('1530'),
        },
    ],
    status: SuccessValue('1530'),
}
total_gas_burnt_usd: 0.06051225944281299
outcome (success: true):
  outcome_gas_burnt_usd: 0.00020587634944254398
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.06030638309337045
  outcome_tokens_burnt_usd: 0.0
n: 1530
00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "C:\home\git\dice\lib\fsharp/dice_fsharp.dib"])) }
00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/dice/lib/fsharp/dice_fsharp.dib", "--output-path", "c:/home/git/dice/lib/fsharp/dice_fsharp.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/dice/lib/fsharp/dice_fsharp.dib" --output-path "c:/home/git/dice/lib/fsharp/dice_fsharp.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ # DiceFSharp (Dice)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #if !INTERACTIVE
> open Polyglot
> open Lib
> #endif
> 
> open Common
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## sixthPowerSequence
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let sixthPowerSequence () =
>     1 |> Seq.unfold (fun state -> Some (state, state * 6)) |> Seq.cache
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> sixthPowerSequence ()
> |> Seq.take 8
> |> Seq.toList
> |> _assertEqual [[ 1; 6; 36; 216; 1296; 7776; 46656; 279936 ]]
> 
> ── [ 83.02ms - stdout ] ────────────────────────────────────────────────────────
> │ [1; 6; 36; 216; 1296; 7776; 46656; 279936]
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## accumulateDiceRolls
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rec accumulateDiceRolls log rolls power acc =
>     match rolls with
>     | _ when power < 0 ->
>         log |> Option.iter ((|>) $"accumulateDiceRolls / power: {power} / acc: 
> {acc}")
>         Some (acc + 1, rolls)
>     | [[]] -> None
>     | roll :: rest when roll > 1 ->
>         let coeff = sixthPowerSequence () |> Seq.item power
>         let value = (roll - 1) * coeff
>         log |> Option.iter ((|>) $"accumulateDiceRolls / \
>             power: {power} / acc: {acc} / roll: {roll} / value: {value}"
>         )
>         accumulateDiceRolls log rest (power - 1) (acc + value)
>     | roll :: rest ->
>         log |> Option.iter ((|>) $"accumulateDiceRolls / power: {power} / acc: 
> {acc} / roll: {roll}")
>         accumulateDiceRolls log rest (power - 1) acc
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> accumulateDiceRolls (Some (printfn "%s")) [[ 6; 5; 4; 3; 2 ]] 0 1000
> |> _assertEqual (Some (1006, [[ 5; 4; 3; 2 ]]))
> 
> ── [ 33.82ms - stdout ] ────────────────────────────────────────────────────────
> │ accumulateDiceRolls / power: 0 / acc: 1000 / roll: 6 / value:
> 5
> │ accumulateDiceRolls / power: -1 / acc: 1005
> │ Some (1006, [5; 4; 3; 2])
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> accumulateDiceRolls (Some (printfn "%s")) [[ 6; 5; 4; 3; 2 ]] 1 1000
> |> _assertEqual (Some (1035, [[ 4; 3; 2 ]]))
> 
> ── [ 23.21ms - stdout ] ────────────────────────────────────────────────────────
> │ accumulateDiceRolls / power: 1 / acc: 1000 / roll: 6 / value:
> 30
> │ accumulateDiceRolls / power: 0 / acc: 1030 / roll: 5 / value:
> 4
> │ accumulateDiceRolls / power: -1 / acc: 1034
> │ Some (1035, [4; 3; 2])
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> accumulateDiceRolls (Some (printfn "%s")) [[ 6; 5; 4; 3; 2 ]] 2 1000
> |> _assertEqual (Some (1208, [[ 3; 2 ]]))
> 
> ── [ 23.64ms - stdout ] ────────────────────────────────────────────────────────
> │ accumulateDiceRolls / power: 2 / acc: 1000 / roll: 6 / value:
> 180
> │ accumulateDiceRolls / power: 1 / acc: 1180 / roll: 5 / value:
> 24
> │ accumulateDiceRolls / power: 0 / acc: 1204 / roll: 4 / value:
> 3
> │ accumulateDiceRolls / power: -1 / acc: 1207
> │ Some (1208, [3; 2])
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## rollWithinBounds
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rollWithinBounds log max rolls =
>     let power = List.length rolls - 1
>     match accumulateDiceRolls log rolls power 0 with
>     | Some (result, _) when result >= 1 && result <= max -> Some result
>     | _ -> None
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> rollWithinBounds (Some (printfn "%s")) 2000 [[ 1; 5; 4; 4; 5 ]]
> |> _assertEqual (Some 995)
> 
> ── [ 22.43ms - stdout ] ────────────────────────────────────────────────────────
> │ accumulateDiceRolls / power: 4 / acc: 0 / roll: 1
> │ accumulateDiceRolls / power: 3 / acc: 0 / roll: 5 / value: 
> 864
> │ accumulateDiceRolls / power: 2 / acc: 864 / roll: 4 / value: 
> 108
> │ accumulateDiceRolls / power: 1 / acc: 972 / roll: 4 / value: 
> 18
> │ accumulateDiceRolls / power: 0 / acc: 990 / roll: 5 / value: 
> 4
> │ accumulateDiceRolls / power: -1 / acc: 994
> │ Some 995
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> rollWithinBounds (Some (printfn "%s")) 2000 [[ 2; 2; 6; 4; 5 ]]
> |> _assertEqual (Some 1715)
> 
> ── [ 22.68ms - stdout ] ────────────────────────────────────────────────────────
> │ accumulateDiceRolls / power: 4 / acc: 0 / roll: 2 / value: 
> 1296
> │ accumulateDiceRolls / power: 3 / acc: 1296 / roll: 2 / value:
> 216
> │ accumulateDiceRolls / power: 2 / acc: 1512 / roll: 6 / value:
> 180
> │ accumulateDiceRolls / power: 1 / acc: 1692 / roll: 4 / value:
> 18
> │ accumulateDiceRolls / power: 0 / acc: 1710 / roll: 5 / value:
> 4
> │ accumulateDiceRolls / power: -1 / acc: 1714
> │ Some 1715
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> rollWithinBounds (Some (printfn "%s")) 2000 [[ 4; 1; 1; 2; 3 ]]
> |> _assertEqual None
> 
> ── [ 24.59ms - stdout ] ────────────────────────────────────────────────────────
> │ accumulateDiceRolls / power: 4 / acc: 0 / roll: 4 / value: 
> 3888
> │ accumulateDiceRolls / power: 3 / acc: 3888 / roll: 1
> │ accumulateDiceRolls / power: 2 / acc: 3888 / roll: 1
> │ accumulateDiceRolls / power: 1 / acc: 3888 / roll: 2 / value:
> 6
> │ accumulateDiceRolls / power: 0 / acc: 3894 / roll: 3 / value:
> 2
> │ accumulateDiceRolls / power: -1 / acc: 3896
> │ <null>
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## calculateDiceCount
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline calculateDiceCount log max =
>     let rec loop n p =
>         if p < max
>         then loop (n + 1) (p * 6)
>         else
>             log |> Option.iter ((|>) $"calculateDiceCount / max: {max} / n: {n} 
> / p: {p}")
>             n
>     if max = 1
>     then 1
>     else loop 0 1
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> calculateDiceCount (Some (printfn "%s")) 36
> |> _assertEqual 2
> 
> ── [ 22.49ms - stdout ] ────────────────────────────────────────────────────────
> │ calculateDiceCount / max: 36 / n: 2 / p: 36
> │ 2
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> calculateDiceCount (Some (printfn "%s")) 7777
> |> _assertEqual 6
> 
> ── [ 21.64ms - stdout ] ────────────────────────────────────────────────────────
> │ calculateDiceCount / max: 7777 / n: 6 / p: 46656
> │ 6
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## rollDice
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #if FABLE_COMPILER_RUST
> let rollDice () : int =
> #if !WASM && !CONTRACT
>     Fable.Core.RustInterop.emitRustExpr () "rand::Rng::gen_range(&mut 
> rand::thread_rng(), 1..7)"
> #else
>     1
> #endif
> #else
> let private random = System.Random ()
> let rollDice () =
>     random.Next (1, 7)
> #endif
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## rotateNumber
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rotateNumber max n =
>     (n - 1 + max) % max + 1
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## rotateNumbers
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rotateNumbers max items =
>     items |> Seq.map (rotateNumber max)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> [[ -1 .. 14 ]]
> |> rotateNumbers 6
> |> Seq.toList
> |> _assertEqual [[ 5; 6; 1; 2; 3; 4; 5; 6; 1; 2; 3; 4; 5; 6; 1; 2 ]]
> 
> ── [ 39.07ms - stdout ] ────────────────────────────────────────────────────────
> │ [5; 6; 1; 2; 3; 4; 5; 6; 1; 2; 3; 4; 5; 6; 1; 2]
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## createSequentialRoller
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let createSequentialRoller list =
>     let mutable currentIndex = 0
>     fun () ->
>         match list |> List.tryItem currentIndex with
>         | Some item ->
>             currentIndex <- currentIndex + 1
>             item
>         | None ->
>             failwith "createSequentialRoller / End of list"
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## rollProgressively
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rollProgressively log roll reroll max =
>     let power = (calculateDiceCount log max) - 1
>     let rec loop rolls size =
>         if size < power + 1
>         then loop (roll () :: rolls) (size + 1)
>         else
>             match accumulateDiceRolls log rolls power 0 with
>             | Some (result, _) when result <= max -> result
>             | _ when reroll -> loop (List.init power (fun _ -> roll ())) power
>             | _ -> loop (roll () :: rolls) (size + 1)
>     loop [[]] 0
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> rollProgressively None rollDice false 1
> |> _assertEqual 1
> 
> ── [ 18.02ms - stdout ] ────────────────────────────────────────────────────────
> │ 1
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let sequentialRoll = createSequentialRoller [[ 5; 4; 4; 5; 1 ]]
> 
> rollProgressively (Some (printfn "%s")) sequentialRoll false 2000
> |> _assertEqual 995
> 
> ── [ 22.06ms - stdout ] ────────────────────────────────────────────────────────
> │ calculateDiceCount / max: 2000 / n: 5 / p: 7776
> │ accumulateDiceRolls / power: 4 / acc: 0 / roll: 1
> │ accumulateDiceRolls / power: 3 / acc: 0 / roll: 5 / value: 
> 864
> │ accumulateDiceRolls / power: 2 / acc: 864 / roll: 4 / value: 
> 108
> │ accumulateDiceRolls / power: 1 / acc: 972 / roll: 4 / value: 
> 18
> │ accumulateDiceRolls / power: 0 / acc: 990 / roll: 5 / value: 
> 4
> │ accumulateDiceRolls / power: -1 / acc: 994
> │ 995
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let sequentialRoll = createSequentialRoller [[ 5; 4; 4; 5; 2 ]]
> 
> fun () -> rollProgressively (Some (printfn "%s")) sequentialRoll false 2000 |> 
> ignore
> |> _throwsC (fun ex _ ->
>     SpiralSm.format_exception ex
>     |> _assertEqual "System.Exception: createSequentialRoller / End of list"
> )
> 
> ── [ 54.06ms - stdout ] ────────────────────────────────────────────────────────
> │ <fun:it@5-14>
> │ 
> │ calculateDiceCount / max: 2000 / n: 5 / p: 7776
> │ accumulateDiceRolls / power: 4 / acc: 0 / roll: 2 / value: 
> 1296
> │ accumulateDiceRolls / power: 3 / acc: 1296 / roll: 5 / value:
> 864
> │ accumulateDiceRolls / power: 2 / acc: 2160 / roll: 4 / value:
> 108
> │ accumulateDiceRolls / power: 1 / acc: 2268 / roll: 4 / value:
> 18
> │ accumulateDiceRolls / power: 0 / acc: 2286 / roll: 5 / value:
> 4
> │ accumulateDiceRolls / power: -1 / acc: 2290
> │ "System.Exception: createSequentialRoller / End of list"
> │ 
> │ 
> 
> ── fsharp - ignored ────────────────────────────────────────────────────────────
> //// ignore
> 
> rollProgressively (Some (printfn "%s")) rollDice false 2000
> 
> ── fsharp - ignored ────────────────────────────────────────────────────────────
> //// ignore
> 
> rollProgressively (Some (printfn "%s")) rollDice true 2000
> 
> ── fsharp - ignored ────────────────────────────────────────────────────────────
> //// ignore
> 
> [[| 1 .. 10000 |]]
> |> Array.Parallel.map (fun _ -> rollProgressively None rollDice false 10)
> |> Array.Parallel.groupBy id
> |> Array.Parallel.map (fun (k, v) -> k, v.Length)
> |> Array.Parallel.sortBy fst
> 
> ── fsharp - ignored ────────────────────────────────────────────────────────────
> //// ignore
> 
> [[| 1 .. 10000 |]]
> |> Array.Parallel.map (fun _ -> rollProgressively None rollDice true 10)
> |> Array.Parallel.groupBy id
> |> Array.Parallel.map (fun (k, v) -> k, v.Length)
> |> Array.Parallel.sortBy fst
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> [[| 1 .. 100 |]]
> |> Array.Parallel.iter (fun n ->
>     [[| 0 .. 1 |]]
>     |> Array.Parallel.iter (fun reroll ->
>         [[| 1 .. 3500 |]]
>         |> Array.Parallel.map (fun _ -> rollProgressively None rollDice (reroll 
> = 1) n)
>         |> Array.Parallel.groupBy id
>         |> Array.length
>         |> __assertEqual false n
>     )
> )
> 
> ── fsharp - ignored ────────────────────────────────────────────────────────────
> //// ignore
> 
> let inline rollMax fn max n =
>     [[| 1 .. n |]]
>     |> Array.Parallel.map (fun _ -> fn max)
>     |> Array.Parallel.groupBy id
>     |> Array.Parallel.map (fun (_, v) -> v.Length)
> 
> let rec rollN max n even current =
>     let roll = rollMax (rollProgressively None rollDice true) max n
>     if roll |> Array.Parallel.forall ((=) even)
>     then current
>     else rollN max n even (current + 1)
> 
> let run () =
>     let max = 10
>     let n = 30
>     let even = (n / max) |> int
> 
>     rollN max n even 0
> 
> // run ()
> 
> ── fsharp - ignored ────────────────────────────────────────────────────────────
> //// ignore
> 
> let run () =
>     let max = 10
>     let n = 30
>     let even = (n / max) |> int
>     [[| 1 .. 100 |]]
>     |> Array.Parallel.map (fun i ->
>         let roll = rollN max n even 0
>         printfn $"i: {i} / roll: {roll}"
>         float roll
>     )
>     |> Array.Parallel.average
> 
> // run ()
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## FsCheck (test)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #r 
> @"../../../../../../../.nuget/packages/fscheck/3.0.1/lib/netstandard2.0/FsCheck.
> dll"
> #r 
> @"../../../../../../../.nuget/packages/expecto.fscheck/11.0.0-alpha6/lib/net6.0/
> Expecto.FsCheck3.dll"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> type ValorDado =
>     | Um
>     | Dois
>     | Tres
>     | Quatro
>     | Cinco
>     | Seis
> 
> type Aspecto =
>     | Passado of string
>     | Presente of string
>     | Futuro of string
>     | Desafios of string
>     | Recursos of string
>     | ResultadoProjetado of string
>     | InfluenciaExterna of string
> 
> type Contexto =
>     | Amor of string
>     | Trabalho of string
>     | Saude of string
>     | Dinheiro of string
> 
> type Universo =
>     | Real of string
>     | Virtual of string
>     | Espiritual of string
> 
> type Caracteristica =
>     | Aspecto of Aspecto
>     | Contexto of Contexto
>     | Universo of Universo
>     | DadoRolado of ValorDado
> 
> type Interacao =
>     | Conflito
>     | Parceria
>     | Crescimento
>     | Estagnacao
>     | Separacao
>     | Harmonia
>     | Desafio
>     | Colaboracao
>     | Progresso
>     | Mudanca
>     | Sucesso
> 
> type Interpretacao =
>     | Interpretacao of Caracteristica * Interacao * Caracteristica
> 
> type SistemaDivinacao =
>     | SistemaDivinacao of Interpretacao list * Caracteristica
> 
> let config = { Expecto.FsCheckConfig.defaultConfig with maxTest = 10000 }
> 
> let shuffleList xs seed =
>     let rnd = Random (seed)
>     xs
>     |> List.map (fun x -> rnd.Next(), x)
>     |> List.sortBy fst
>     |> List.map snd
> 
> 
> 
> 
> type Complexity = Simple | Moderate | Complex
> type Duration = Short | Medium | Long
> 
> type Dice = D1 of int | D2 of int
> 
> type Task =
>     | Task of Complexity * Duration * Task
>     | NoTask
> 
> let durationOfFocus (d1: int) (d2: int) =
>     match d1 + d2 with
>     | sum when sum <= 4 -> Short
>     | sum when sum <= 8 -> Medium
>     | _ -> Long
> 
> let complexityOfTask (d1: int) (d2: int) =
>     match d1 * d2 with
>     | product when product <= 12 -> Simple
>     | product when product <= 24 -> Moderate
>     | _ -> Complex
> 
> let rec generateTaskList d1 d2 previousTask =
>     match d1, d2 with
>     | d1, d2 when d1 > 0 && d2 > 0 ->
>         let complexity = complexityOfTask d1 d2
>         let duration = durationOfFocus d1 d2
>         let newTask = Task (complexity, duration, previousTask)
>         generateTaskList (d1 - 1) (d2 - 1) newTask
>     | _, _ -> previousTask
> 
> 
> 
> 
> 
> let properties =
>     Expecto.Tests.testList "FsCheck samples" [[
>         let sistemaDivinacao (interpretacoes: Interpretacao list, 
> caracteristica: Caracteristica) =
>             let interpretacoes = interpretacoes |> List.sort
>             SistemaDivinacao (interpretacoes, caracteristica)
> 
>         Expecto.ExpectoFsCheck.testPropertyWithConfig config "SistemaDivinacao 
> is consistent" <|
>             fun (interpretacoes: Interpretacao list, caracteristica: 
> Caracteristica) ->
>                 sistemaDivinacao (interpretacoes, caracteristica)
>                     = sistemaDivinacao (interpretacoes, caracteristica)
> 
>         Expecto.ExpectoFsCheck.testPropertyWithConfig config "SistemaDivinacao 
> is variant under permutation" <|
>             fun (input: Interpretacao list, caracteristica: Caracteristica) ->
>                 let seed = 42
>                 let shuffledInput = shuffleList input seed
>                 sistemaDivinacao (input, caracteristica) = sistemaDivinacao 
> (shuffledInput, caracteristica)
> 
>         Expecto.ExpectoFsCheck.testPropertyWithConfig config "SistemaDivinacao 
> can handle lists of any size" <|
>             fun (input: Interpretacao list, caracteristica: Caracteristica) ->
>                 let sistema = sistemaDivinacao (input, caracteristica)
>                 sistema <> Unchecked.defaultof<_>
> 
>         Expecto.ExpectoFsCheck.testPropertyWithConfig config "SistemaDivinacao 
> is invariant under data transformations" <|
>             fun (input: Interpretacao list, caracteristica: Caracteristica, 
> newInterpretation: Interpretacao) ->
>                 let containsNewInterpretation = input |> List.contains 
> newInterpretation
>                 let modifiedInput =
>                     if containsNewInterpretation
>                     then input
>                     else newInterpretation :: input
>                 if containsNewInterpretation
>                 then sistemaDivinacao (List.sort input, caracteristica)
>                         = sistemaDivinacao (List.sort modifiedInput, 
> caracteristica)
>                 else sistemaDivinacao (List.sort input, caracteristica)
>                         <> sistemaDivinacao (List.sort modifiedInput, 
> caracteristica)
> 
> 
> 
> 
> 
> 
>         let focusDurationProperty =
>             FsCheck.FSharp.Prop.forAll (FsCheck.FSharp.Arb.fromGen 
> (FsCheck.FSharp.Gen.map2 (fun d1 d2 -> (d1, d2)) (FsCheck.FSharp.Gen.choose (1, 
> 6)) (FsCheck.FSharp.Gen.choose (1, 6)))) <| fun (d1, d2) ->
>                 let expected =
>                     match d1 + d2 with
>                     | sum when sum <= 4 -> Short
>                     | sum when sum <= 8 -> Medium
>                     | _ -> Long
>                 let actual = durationOfFocus d1 d2
>                 expected = actual
> 
>         let taskComplexityProperty =
>             FsCheck.FSharp.Prop.forAll (FsCheck.FSharp.Arb.fromGen 
> (FsCheck.FSharp.Gen.map2 (fun d1 d2 -> (d1, d2)) (FsCheck.FSharp.Gen.choose (1, 
> 6)) (FsCheck.FSharp.Gen.choose (1, 6)))) <| fun (d1, d2) ->
>                 let expected =
>                     match d1 * d2 with
>                     | product when product <= 12 -> Simple
>                     | product when product <= 24 -> Moderate
>                     | _ -> Complex
>                 let actual = complexityOfTask d1 d2
>                 expected = actual
> 
>         let taskListLengthProperty =
>             FsCheck.FSharp.Prop.forAll (FsCheck.FSharp.Arb.fromGen 
> (FsCheck.FSharp.Gen.map2 (fun d1 d2 -> (d1, d2)) (FsCheck.FSharp.Gen.choose (1, 
> 6)) (FsCheck.FSharp.Gen.choose (1, 6)))) <| fun (d1, d2) ->
>                 let taskList = generateTaskList d1 d2 NoTask
>                 let rec taskListLength taskList =
>                     match taskList with
>                     | Task (_, _, nextTask) -> 1 + taskListLength nextTask
>                     | NoTask -> 0
>                 let actual = taskListLength taskList
>                 let expected = min d1 d2
>                 expected = actual
> 
> 
>         Expecto.ExpectoFsCheck.testProperty "Duration of focus should be 
> calculated correctly" focusDurationProperty
>         Expecto.ExpectoFsCheck.testProperty "Task complexity should be 
> calculated correctly" taskComplexityProperty
>         Expecto.ExpectoFsCheck.testProperty "Task list should have the correct 
> length" taskListLengthProperty
> 
> 
> 
>     ]]
> 
> let dice1 = 6
> let dice2 = 6
> 
> let taskList = generateTaskList dice1 dice2 NoTask
> 
> let rec printTaskList taskList =
>     match taskList with
>     | Task (complexity, duration, nextTask) ->
>         printfn "Complexidade: %A, Duração: %A" complexity duration
>         printTaskList nextTask
>     | NoTask -> ()
> 
> printTaskList taskList
> 
> Expecto.Tests.runTestsWithCLIArgs [[]] [[||]] properties
> |> _assertEqual 0
> 
> ── [ 6.72s - stdout ] ──────────────────────────────────────────────────────────
> │ Complexidade: Simple, Duração: Short
> │ Complexidade: Simple, Duração: Short
> │ Complexidade: Simple, Duração: Medium
> │ Complexidade: Moderate, Duração: Medium
> │ Complexidade: Complex, Duração: Long
> │ Complexidade: Complex, Duração: Long
> │ [08:09:17 INF] EXPECTO? Running tests... 
> <Expecto>
> │ [08:09:23 INF] EXPECTO! 7 
> tests run in 00:00:05.9996063 for FsCheck samples – 7 passed, 
> 0 ignored, 0 failed, 0 errored. Success! 
> <Expecto>
> │ 0
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## main
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let main args =
>     let result = rollProgressively (Some (printfn "%s")) rollDice true 
> (System.Int32.MaxValue / 10)
>     trace Debug (fun () -> $"main / result: {result}") _locals
>     0
00:00:29 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 24005 }
00:00:29 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/dice/lib/fsharp/dice_fsharp.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/dice/lib/fsharp/dice_fsharp.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:30 v #5 ! [NbConvertApp] Converting notebook c:/home/git/dice/lib/fsharp/dice_fsharp.dib.ipynb to html
00:00:30 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:30 v #7 !   validate(nb)
00:00:31 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:31 v #9 !   return _pygments_highlight(
00:00:32 v #10 ! [NbConvertApp] Writing 360781 bytes to c:\home\git\dice\lib\fsharp\dice_fsharp.dib.html
00:00:32 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 856 }
00:00:32 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 856 }
00:00:32 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/dice/lib/fsharp/dice_fsharp.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/dice/lib/fsharp/dice_fsharp.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:32 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:32 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:32 d #16 spiral.run / dib / { exit_code = 0; result_length = 24920 }
00:00:00 d #1 writeDibCode / output: Fs / path: dice_fsharp.dib
00:00:00 d #2 parseDibCode / output: Fs / file: dice_fsharp.dib
00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: dice_fsharp / hash:  / code.Length: 3403
00:00:00 d #2 buildProject / fullPath: c:\home\git\polyglot\target\Builder\dice_fsharp\dice_fsharp.fsproj
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  "publish "c:/home/git\polyglot\target/Builder\dice_fsharp\dice_fsharp.fsproj" --configuration Release --output "C:\home\git\dice\lib\fsharp\dist" --runtime linux-x64"; options = { command = dotnet publish "c:/home/git\polyglot\target/Builder\dice_fsharp\dice_fsharp.fsproj" --configuration Release --output "C:\home\git\dice\lib\fsharp\dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "c:\home\git\polyglot\target\Builder\dice_fsharp" } }
00:00:01 v #2 >   Determining projects to restore...
00:00:01 v #3 >   Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
00:00:01 v #4 >   The last full restore is still up to date. Nothing left to do.
00:00:01 v #5 >   Total time taken: 0 milliseconds
00:00:02 v #6 >   Restored c:\home\git\polyglot\target\Builder\dice_fsharp\dice_fsharp.fsproj (in 257 ms).
00:00:15 v #7 >   dice_fsharp -> c:\home\git\polyglot\target\Builder\dice_fsharp\bin\Release\net9.0\linux-x64\dice_fsharp.dll
00:00:17 v #8 >   dice_fsharp -> C:\home\git\dice\lib\fsharp\dist\
00:00:17 d #9 runtime.execute_with_options_async / { exit_code = 0; output_length = 451; options = { command = dotnet publish "c:/home/git\polyglot\target/Builder\dice_fsharp\dice_fsharp.fsproj" --configuration Release --output "C:\home\git\dice\lib\fsharp\dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "c:\home\git\polyglot\target\Builder\dice_fsharp" } }
00:00:17 d #10 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  "publish "c:/home/git\polyglot\target/Builder\dice_fsharp\dice_fsharp.fsproj" --configuration Release --output "C:\home\git\dice\lib\fsharp\dist" --runtime win-x64"; options = { command = dotnet publish "c:/home/git\polyglot\target/Builder\dice_fsharp\dice_fsharp.fsproj" --configuration Release --output "C:\home\git\dice\lib\fsharp\dist" --runtime win-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "c:\home\git\polyglot\target\Builder\dice_fsharp" } }
00:00:18 v #11 >   Determining projects to restore...
00:00:19 v #12 >   Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
00:00:19 v #13 >   The last full restore is still up to date. Nothing left to do.
00:00:19 v #14 >   Total time taken: 0 milliseconds
00:00:19 v #15 >   Restored c:\home\git\polyglot\target\Builder\dice_fsharp\dice_fsharp.fsproj (in 255 ms).
00:00:33 v #16 >   dice_fsharp -> c:\home\git\polyglot\target\Builder\dice_fsharp\bin\Release\net9.0\win-x64\dice_fsharp.dll
00:00:35 v #17 >   dice_fsharp -> C:\home\git\dice\lib\fsharp\dist\
00:00:35 d #18 runtime.execute_with_options_async / { exit_code = 0; output_length = 449; options = { command = dotnet publish "c:/home/git\polyglot\target/Builder\dice_fsharp\dice_fsharp.fsproj" --configuration Release --output "C:\home\git\dice\lib\fsharp\dist" --runtime win-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "c:\home\git\polyglot\target\Builder\dice_fsharp" } }
spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: C:\home\git\polyglot\target\Builder\dice_fsharp
polyglot/scripts/core.ps1/ResolveLink #4 / Path: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral/../../deps/polyglot / parent_target:  / path_target: C:\home\git\polyglot / parent: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral\..\..\deps / End: polyglot
spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: C:\home\git\polyglot\target\Builder\dice_fsharp / ProjectName: dice_fsharp / Language: rs / Runtime:  / root: C:\home\git\polyglot
Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha)

Thanks to the contributor! @iyegoroff
Stand with Ukraine! https://standwithukraine.com.ua/

Parsing target\Builder\dice_fsharp\dice_fsharp.fsproj...
Retrieving project options from cache, in case of issues run `dotnet fable clean` or try `--noCache` option.
Project and references (14 source files) parsed in 185ms

Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)

Started Fable compilation...

Fable compilation finished in 12070ms

.\deps\spiral\lib\spiral\sm.fsx(560,0): (560,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\common.fsx(2193,0): (2193,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\async_.fsx(250,0): (250,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\threading.fsx(139,0): (139,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\crypto.fsx(2420,0): (2420,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\date_time.fsx(2546,0): (2546,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\platform.fsx(121,0): (121,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\networking.fsx(5011,0): (5011,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\trace.fsx(2226,0): (2226,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\runtime.fsx(7234,0): (7234,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\file_system.fsx(18760,0): (18760,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
polyglot/scripts/core.ps1/ResolveLink #4 / Path: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral/../../deps/polyglot / parent_target:  / path_target: C:\home\git\polyglot / parent: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral\..\..\deps / End: polyglot
spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: C:\home\git\polyglot\target\Builder\dice_fsharp / ProjectName: dice_fsharp / Language: ts / Runtime:  / root: C:\home\git\polyglot
Fable 5.0.0-alpha.9: F# to TypeScript compiler
Minimum @fable-org/fable-library-ts version (when installed from npm): 1.10.0

Thanks to the contributor! @halfabench
Stand with Ukraine! https://standwithukraine.com.ua/

Parsing target\Builder\dice_fsharp\dice_fsharp.fsproj...
Retrieving project options from cache, in case of issues run `dotnet fable clean` or try `--noCache` option.
Project and references (14 source files) parsed in 181ms

Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)

Started Fable compilation...

Fable compilation finished in 9398ms

.\deps\spiral\lib\spiral\sm.fsx(38,20): (38,49) warning FABLE: CultureInfo argument is ignored
.\deps\spiral\lib\spiral\sm.fsx(307,20): (307,51) warning FABLE: CultureInfo argument is ignored
polyglot/scripts/core.ps1/ResolveLink #4 / Path: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral/../../deps/polyglot / parent_target:  / path_target: C:\home\git\polyglot / parent: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral\..\..\deps / End: polyglot
spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: C:\home\git\polyglot\target\Builder\dice_fsharp / ProjectName: dice_fsharp / Language: py / Runtime:  / root: C:\home\git\polyglot
Fable 5.0.0-alpha.9: F# to Python compiler (status: beta)

Thanks to the contributor! @Booksbaum
Stand with Ukraine! https://standwithukraine.com.ua/

Parsing target\Builder\dice_fsharp\dice_fsharp.fsproj...
Retrieving project options from cache, in case of issues run `dotnet fable clean` or try `--noCache` option.
Project and references (14 source files) parsed in 162ms

Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)

Started Fable compilation...

Fable compilation finished in 10520ms

.\deps\spiral\lib\spiral\sm.fsx(38,20): (38,49) warning FABLE: CultureInfo argument is ignored
.\deps\spiral\lib\spiral\sm.fsx(307,20): (307,51) warning FABLE: CultureInfo argument is ignored
dice/lib/fsharp/build.ps1 / path: C:\home\git\polyglot\target\Builder\dice_fsharp/target/rs/dice_fsharp.rs / dice_fsharp.rs
dice/lib/fsharp/build.ps1 / path: C:\home\git\polyglot\target\Builder\dice_fsharp/target/ts/dice_fsharp.ts / dice_fsharp.ts
dice/lib/fsharp/build.ps1 / path: C:\home\git\polyglot\target\Builder\dice_fsharp/target/py/dice_fsharp.py / dice_fsharp.py
   Compiling dice_fsharp v0.0.1 (C:\home\git\dice\lib\fsharp)
    Finished `release` profile [optimized] target(s) in 7.33s
     Running `C:\home\git\dice\target\release\dice_fsharp.exe`
calculateDiceCount / max: 214748364 / n: 11 / p: 362797056
accumulateDiceRolls / power: 10 / acc: 0 / roll: 5 / value: 241864704
accumulateDiceRolls / power: 9 / acc: 241864704 / roll: 6 / value: 50388480
accumulateDiceRolls / power: 8 / acc: 292253184 / roll: 1
accumulateDiceRolls / power: 7 / acc: 292253184 / roll: 6 / value: 1399680
accumulateDiceRolls / power: 6 / acc: 293652864 / roll: 1
accumulateDiceRolls / power: 5 / acc: 293652864 / roll: 4 / value: 23328
accumulateDiceRolls / power: 4 / acc: 293676192 / roll: 1
accumulateDiceRolls / power: 3 / acc: 293676192 / roll: 1
accumulateDiceRolls / power: 2 / acc: 293676192 / roll: 4 / value: 108
accumulateDiceRolls / power: 1 / acc: 293676300 / roll: 4 / value: 18
accumulateDiceRolls / power: 0 / acc: 293676318 / roll: 6 / value: 5
accumulateDiceRolls / power: -1 / acc: 293676323
accumulateDiceRolls / power: 10 / acc: 0 / roll: 5 / value: 241864704
accumulateDiceRolls / power: 9 / acc: 241864704 / roll: 4 / value: 30233088
accumulateDiceRolls / power: 8 / acc: 272097792 / roll: 5 / value: 6718464
accumulateDiceRolls / power: 7 / acc: 278816256 / roll: 2 / value: 279936
accumulateDiceRolls / power: 6 / acc: 279096192 / roll: 2 / value: 46656
accumulateDiceRolls / power: 5 / acc: 279142848 / roll: 1
accumulateDiceRolls / power: 4 / acc: 279142848 / roll: 4 / value: 3888
accumulateDiceRolls / power: 3 / acc: 279146736 / roll: 2 / value: 216
accumulateDiceRolls / power: 2 / acc: 279146952 / roll: 6 / value: 180
accumulateDiceRolls / power: 1 / acc: 279147132 / roll: 2 / value: 6
accumulateDiceRolls / power: 0 / acc: 279147138 / roll: 6 / value: 5
accumulateDiceRolls / power: -1 / acc: 279147143
accumulateDiceRolls / power: 10 / acc: 0 / roll: 3 / value: 120932352
accumulateDiceRolls / power: 9 / acc: 120932352 / roll: 5 / value: 40310784
accumulateDiceRolls / power: 8 / acc: 161243136 / roll: 2 / value: 1679616
accumulateDiceRolls / power: 7 / acc: 162922752 / roll: 1
accumulateDiceRolls / power: 6 / acc: 162922752 / roll: 5 / value: 186624
accumulateDiceRolls / power: 5 / acc: 163109376 / roll: 5 / value: 31104
accumulateDiceRolls / power: 4 / acc: 163140480 / roll: 3 / value: 2592
accumulateDiceRolls / power: 3 / acc: 163143072 / roll: 2 / value: 216
accumulateDiceRolls / power: 2 / acc: 163143288 / roll: 6 / value: 180
accumulateDiceRolls / power: 1 / acc: 163143468 / roll: 3 / value: 12
accumulateDiceRolls / power: 0 / acc: 163143480 / roll: 2 / value: 1
accumulateDiceRolls / power: -1 / acc: 163143481
00:00:00 d #1 main / result: 163143482
dice/lib/fsharp/build.ps1 / $targetDir = C:\home\git\polyglot\target\Builder\dice_fsharp / $projectName: dice_fsharp / $env:CI:''
<dice_ui>
<app.render>
<home.render>
<content.render>
<dice_view.render>
<use_transactions.render>
<lists_view.render>
<transactions_view.render>
<use_transactions.render>
<transaction.render>
<transaction.tr_render>
<transaction.tr_head_render>
<settings_view.render>
<menu_tabs.render>
</dice_ui>
00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: dice_ui / hash:  / code.Length: 1991947
spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: C:\home\git\polyglot\target\Builder\dice_ui
polyglot/scripts/core.ps1/ResolveLink #4 / Path: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral/../../deps/polyglot / parent_target:  / path_target: C:\home\git\polyglot / parent: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral\..\..\deps / End: polyglot
spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: C:\home\git\polyglot\target\Builder\dice_ui / ProjectName: dice_ui / Language: rs / Runtime: WASM / root: C:\home\git\polyglot
Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha)

Thanks to the contributor! @mastoj
Stand with Ukraine! https://standwithukraine.com.ua/

Parsing target\Builder\dice_ui\dice_ui.fsproj...
Retrieving project options from cache, in case of issues run `dotnet fable clean` or try `--noCache` option.
Project and references (14 source files) parsed in 173ms

Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)

Started Fable compilation...

Fable compilation finished in 29272ms

.\target\Builder\dice_ui\dice_ui.fs(25518,11): (25518,12) warning FSHARP: This rule will never be matched (code 26)
.\target\Builder\dice_ui\dice_ui.fs(25944,11): (25944,12) warning FSHARP: This rule will never be matched (code 26)
.\target\Builder\dice_ui\dice_ui.fs(25957,15): (25957,16) warning FSHARP: This rule will never be matched (code 26)
.\deps\spiral\lib\spiral\common.fsx(2193,0): (2193,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\sm.fsx(560,0): (560,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\async_.fsx(250,0): (250,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\crypto.fsx(2420,0): (2420,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\threading.fsx(139,0): (139,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\date_time.fsx(2546,0): (2546,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\platform.fsx(121,0): (121,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\networking.fsx(5011,0): (5011,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\trace.fsx(2226,0): (2226,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\runtime.fsx(7234,0): (7234,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\deps\spiral\lib\spiral\file_system.fsx(18760,0): (18760,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\target\Builder\dice_ui\dice_ui.fs(270,0): (272,3) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\target\Builder\dice_ui\dice_ui.fs(283,0): (285,3) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\target\Builder\dice_ui\dice_ui.fs(288,0): (290,3) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
dice/ui/build.ps1 / path: C:\home\git\polyglot\target\Builder\dice_ui/target/rs/dice_ui.rs
polyglot/scripts/core.ps1/GetFullPath / Path: ./src/dice_ui_wasm.rs / Location: C:\home\git\dice\ui / ResolvedLocation: C:\home\git\dice\ui
polyglot/scripts/core.ps1/GetFullPath / FullPath: C:\home\git\dice\ui\src\dice_ui_wasm.rs
max_width = 100
tab_spaces = 4
indentation_style = "Auto"
newline_style = "Auto"
attr_value_brace_style = "WhenRequired"
closing_tag_style = "Preserve"
macro_names = [
    "leptos::view",
    "view",
]

[attr_values]

✅ C:\home\git\dice\ui\src\dice_ui_wasm.rs
ℹ️ Formatted 1 files in 536 ms
bun install v1.2.5 (013fdddc)

Checked 146 installs across 161 packages (no changes) [141.00ms]
$ tailwindcss -i app.css -o target/tailwind.css -m
Browserslist: caniuse-lite is outdated. Please run:
  npx update-browserslist-db@latest
  Why you should do it regularly: https://github.com/browserslist/update-db#readme

Rebuilding...

Done in 2096ms.
trunk:
2025-03-15T12:11:53.854097Z  INFO 🚀 Starting trunk 0.21.8
2025-03-15T12:11:53.860379Z  INFO ⏫ Found an update of trunk: 0.21.8 -> 0.21.9
2025-03-15T12:11:55.075955Z  INFO 📦 starting build
   Compiling tachys v0.1.7
   Compiling fable_library_rust v0.1.0 (C:\home\git\dice\deps\polyglot\lib\rust\fable\fable_modules\fable-library-rust)
error[E0599]: no method named `as_left_mut` found for mutable reference `&mut Either<<A as Attribute>::State, <B as Attribute>::State>` in the current scope
   --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\tachys-0.1.7\src\view\either.rs:222:44
    |
222 |                 if let Some(state) = state.as_left_mut() {
    |                                            ^^^^^^^^^^^ method not found in `&mut Either<<A as Attribute>::State, <B as Attribute>::State>`

error[E0599]: no method named `as_right_mut` found for mutable reference `&mut Either<<A as Attribute>::State, <B as Attribute>::State>` in the current scope
   --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\tachys-0.1.7\src\view\either.rs:227:44
    |
227 |                 if let Some(state) = state.as_right_mut() {
    |                                            ^^^^^^^^^^^^ method not found in `&mut Either<<A as Attribute>::State, <B as Attribute>::State>`

For more information about this error, try `rustc --explain E0599`.
error: could not compile `tachys` (lib) due to 2 previous errors
2025-03-15T12:12:08.287129Z ERROR ❌ error
error from build pipeline

Caused by:
    0: HTML build pipeline failed (1 errors), showing first
    1: error from asset pipeline
    2: running cargo build
    3: error during cargo build execution
    4: cargo call to executable 'cargo' with args: '["build", "--target=wasm32-unknown-unknown", "--manifest-path", "C:\\home\\git\\dice\\ui\\Cargo.toml", "--release"]' returned a bad status: exit code: 101
2025-03-15T12:12:08.287247Z ERROR error from build pipeline
2025-03-15T12:12:08.287253Z  INFO   1: HTML build pipeline failed (1 errors), showing first
2025-03-15T12:12:08.287256Z  INFO   2: error from asset pipeline
2025-03-15T12:12:08.287259Z  INFO   3: running cargo build
2025-03-15T12:12:08.287262Z  INFO   4: error during cargo build execution
2025-03-15T12:12:08.287265Z  INFO   5: cargo call to executable 'cargo' with args: '["build", "--target=wasm32-unknown-unknown", "--manifest-path", "C:\\home\\git\\dice\\ui\\Cargo.toml", "--release"]' returned a bad status: exit code: 101

# Invoke-Block / $retry: 1/1 / $Location:  / Get-Location: C:\home\git\dice\ui / $OnError: Stop / $exitcode: 1 / $Error: '' / $ScriptBlock:
'trunk build $($fast ? $() : '--release') $($fast ? $() : '--minify') --dist="$targetDir/trunk" --public-url="./" --no-sri'


# Invoke-Block / $retry: 1/1 / $Location:  / Get-Location: C:\home\git\dice\scripts / $OnError: Stop / $exitcode: 1 / $Error: '' / $ScriptBlock:
'pwsh ../ui/build.ps1 -fast $($fast ?? '')'


# Invoke-Block / $retry: 1/1 / $Location:  / Get-Location: C:\home\git\i574n.github\scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / $ScriptBlock:
'pwsh ../../dice/scripts/build.ps1'

In [ ]:
{ pwsh outdated.ps1 } | Invoke-Block
CheckToml / toml: C:\home\git\spiral\workspace\Cargo.toml
spiral_wasm
================
Name                        Project                        Compat   Latest   Kind    Platform
----                        -------                        ------   ------   ----    --------
ahash                       0.7.8                          Removed  ---      Normal  ---
autocfg                     1.4.0                          Removed  ---      Build   ---
bumpalo                     3.16.0                         Removed  ---      Normal  ---
cfg-if                      1.0.0                          Removed  ---      Normal  ---
equivalent                  1.0.1                          ---      Removed  Normal  ---
getrandom                   0.2.15                         Removed  ---      Normal  cfg(any(target_os = "linux", target_os = "android", target_os = "windows", target_os = "macos", target_os = "ios", target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonfly", target_os = "solaris", target_os = "illumos", target_os = "fuchsia", target_os = "redox", target_os = "cloudabi", target_os = "haiku", target_os = "vxworks", target_os = "emscripten", target_os = "wasi"))
hashbrown                   0.12.3                         0.15.2   ---      Normal  ---
hashbrown                   0.15.2                         ---      0.12.3   Normal  ---
indexmap                    1.9.3                          2.7.0    ---      Normal  ---
indexmap                    2.7.0                          ---      1.9.3    Normal  ---
js-sys                      0.3.76                         Removed  ---      Normal  cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
libc                        0.2.169                        Removed  ---      Normal  cfg(unix)
log                         0.4.22                         Removed  ---      Normal  ---
near-sandbox-utils          0.9.0                          0.8.0    0.8.0    Normal  ---
once_cell                   1.20.2                         Removed  ---      Normal  ---
once_cell                   1.20.2                         Removed  ---      Normal  cfg(not(all(target_arch = "arm", target_os = "none")))
proc-macro2                 1.0.92                         Removed  ---      Normal  ---
quote                       1.0.38                         Removed  ---      Normal  ---
syn                         2.0.94                         Removed  ---      Normal  ---
unicode-ident               1.0.14                         Removed  ---      Normal  ---
version_check               0.9.5                          Removed  ---      Build   ---
wasi                        0.11.0+wasi-snapshot-preview1  Removed  ---      Normal  cfg(target_os = "wasi")
wasm-bindgen                0.2.99                         Removed  ---      Normal  ---
wasm-bindgen                0.2.99                         Removed  ---      Normal  cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
wasm-bindgen-backend        0.2.99                         Removed  ---      Normal  ---
wasm-bindgen-macro          0.2.99                         Removed  ---      Normal  ---
wasm-bindgen-macro-support  0.2.99                         Removed  ---      Normal  ---
wasm-bindgen-shared         0.2.99                         Removed  ---      Normal  ---

CheckToml / toml: C:\home\git\spiral\apps\spiral\Cargo.toml
error: failed to download `hybrid-array v0.3.0`

Caused by:
  unable to get packages from source

Caused by:
  failed to parse manifest at `C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-6f17d22bba15001f\hybrid-array-0.3.0\Cargo.toml`

Caused by:
  feature `edition2024` is required

  The package requires the Cargo feature called `edition2024`, but that feature is not stabilized in this version of Cargo (1.81.0).
  Consider trying a more recent nightly release.
  See https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for more information about the status of this feature.

# Invoke-Block / $retry: 1/1 / $Location:  / Get-Location: C:\home\git\spiral\scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / $ScriptBlock:
'cargo outdated -m $toml @_args'

Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
Resolving dependency graph...
Could not detect any platforms from 'net10.0' in Microsoft.AspNetCore.Connections.Abstractions 10.0.0-preview.1.25120.3, please tell the package authors
Could not detect any platforms from 'net10.0' in System.Management 10.0.0-preview.1.25080.5, please tell the package authors
Could not detect any platforms from 'net10.0' in Microsoft.AspNetCore.Http.Connections.Common 10.0.0-preview.1.25120.3, please tell the package authors
Could not detect any platforms from 'net10.0' in Microsoft.AspNetCore.Http.Connections.Client 10.0.0-preview.1.25120.3, please tell the package authors
Could not detect any platforms from 'net10.0' in Microsoft.AspNetCore.SignalR.Common 10.0.0-preview.1.25120.3, please tell the package authors
Could not detect any platforms from 'net10.0' in Microsoft.AspNetCore.SignalR.Client 10.0.0-preview.1.25120.3, please tell the package authors
Could not detect any platforms from 'net10.0' in Microsoft.AspNetCore.SignalR.Client.Core 10.0.0-preview.1.25120.3, please tell the package authors
Could not detect any platforms from 'net10.0' in Microsoft.AspNetCore.SignalR.Protocols.Json 10.0.0-preview.1.25120.3, please tell the package authors
Could not detect any platforms from 'net10.0' in Microsoft.Extensions.Features 10.0.0-preview.1.25120.3, please tell the package authors
Could not detect any platforms from 'net10.0' in System.IO.Pipelines 10.0.0-preview.1.25080.5, please tell the package authors
Could not detect any platforms from 'net10.0' in Microsoft.Extensions.Logging.Abstractions 10.0.0-preview.1.25080.5, please tell the package authors
Could not detect any platforms from 'net10.0' in Microsoft.Extensions.Options 10.0.0-preview.1.25080.5, please tell the package authors
Could not detect any platforms from 'net10.0' in System.Net.ServerSentEvents 10.0.0-preview.1.25080.5, please tell the package authors
Could not detect any platforms from 'net10.0' in System.Text.Json 10.0.0-preview.1.25080.5, please tell the package authors
Could not detect any platforms from 'net10.0' in Microsoft.Extensions.DependencyInjection 10.0.0-preview.1.25080.5, please tell the package authors
Could not detect any platforms from 'net10.0' in Microsoft.Extensions.Logging 10.0.0-preview.1.25080.5, please tell the package authors
Could not detect any platforms from 'net10.0' in System.Threading.Channels 10.0.0-preview.1.25080.5, please tell the package authors
Could not detect any platforms from 'net10.0' in System.CodeDom 10.0.0-preview.1.25080.5, please tell the package authors
Could not detect any platforms from 'net10.0' in Microsoft.Extensions.DependencyInjection.Abstractions 10.0.0-preview.1.25080.5, please tell the package authors
Could not detect any platforms from 'net10.0' in System.Diagnostics.DiagnosticSource 10.0.0-preview.1.25080.5, please tell the package authors
Could not detect any platforms from 'net10.0' in Microsoft.Extensions.Primitives 10.0.0-preview.1.25080.5, please tell the package authors
Could not detect any platforms from 'net10.0' in System.Text.Encodings.Web 10.0.0-preview.1.25080.5, please tell the package authors
Outdated packages found:
  Group: Main
    * Argu 6.2.4 -> 6.2.5
    * Expecto 11.0.0-alpha6 -> 11.0.0-alpha8
    * Expecto.FsCheck 11.0.0-alpha6 -> 11.0.0-alpha8-fscheck2
    * Fable.Core 4.3 -> 4.5.0
    * FsCheck 3.0.1 -> 2.16.6
    * FSharp.Core 9.0.201 -> 9.0.300-beta.25079.4
    * Microsoft.AspNetCore.App.Ref 9.0.2 -> 10.0.0-preview.1.25120.3
    * Microsoft.AspNetCore.Connections.Abstractions 7.0 -> 10.0.0-preview.1.25120.3
    * Microsoft.AspNetCore.Http.Connections.Client 7.0 -> 10.0.0-preview.1.25120.3
    * Microsoft.AspNetCore.Http.Connections.Common 7.0 -> 10.0.0-preview.1.25120.3
    * Microsoft.AspNetCore.SignalR.Client 7.0 -> 10.0.0-preview.1.25120.3
    * Microsoft.AspNetCore.SignalR.Client.Core 7.0 -> 10.0.0-preview.1.25120.3
    * Microsoft.AspNetCore.SignalR.Common 7.0 -> 10.0.0-preview.1.25120.3
    * Microsoft.AspNetCore.SignalR.Protocols.Json 7.0 -> 10.0.0-preview.1.25120.3
    * Microsoft.Bcl.AsyncInterfaces 9.0.2 -> 10.0.0-preview.1.25080.5
    * Microsoft.Extensions.DependencyInjection 9.0.2 -> 10.0.0-preview.1.25080.5
    * Microsoft.Extensions.DependencyInjection.Abstractions 9.0.2 -> 10.0.0-preview.1.25080.5
    * Microsoft.Extensions.Features 7.0 -> 10.0.0-preview.1.25120.3
    * Microsoft.Extensions.Logging 9.0.2 -> 10.0.0-preview.1.25080.5
    * Microsoft.Extensions.Logging.Abstractions 9.0.2 -> 10.0.0-preview.1.25080.5
    * Microsoft.Extensions.Options 9.0.2 -> 10.0.0-preview.1.25080.5
    * Microsoft.Extensions.Primitives 9.0.2 -> 10.0.0-preview.1.25080.5
    * System.CodeDom 9.0.2 -> 10.0.0-preview.1.25080.5
    * System.Configuration.ConfigurationManager 9.0.2 -> 9.0.3
    * System.Diagnostics.EventLog 9.0.2 -> 9.0.3
    * System.IO.Pipelines 9.0.2 -> 10.0.0-preview.1.25080.5
    * System.Management 7.0 -> 10.0.0-preview.1.25080.5
    * System.Security.Cryptography.ProtectedData 9.0.2 -> 9.0.3
    * System.Threading.Channels 9.0.2 -> 10.0.0-preview.1.25080.5
Total time taken: 39 seconds
Paket omitted 24 warnings. You can see them in verbose mode.

CheckToml / toml: C:\home\git\polyglot\workspace\Cargo.toml
chat_contract_tests
================
Name                        Project  Compat   Latest   Kind    Platform
----                        -------  ------   ------   ----    --------
android-tzdata              0.1.1    ---      Removed  Normal  cfg(target_os = "android")
android_system_properties   0.1.5    ---      Removed  Normal  cfg(target_os = "android")
autocfg                     1.4.0    ---      Removed  Build   ---
bumpalo                     3.16.0   ---      Removed  Normal  ---
cc                          1.2.4    ---      Removed  Build   ---
cfg-if                      1.0.0    ---      Removed  Normal  ---
chrono                      0.4.39   ---      Removed  Normal  ---
core-foundation-sys         0.8.7    ---      Removed  Normal  cfg(any(target_os = "macos", target_os = "ios"))
equivalent                  1.0.1    Removed  Removed  Normal  ---
hashbrown                   0.15.2   0.12.3   0.12.3   Normal  ---
iana-time-zone              0.1.61   ---      Removed  Normal  cfg(unix)
iana-time-zone-haiku        0.1.2    ---      Removed  Normal  cfg(target_os = "haiku")
indexmap                    2.7.0    1.9.3    1.9.3    Normal  ---
jobserver                   0.1.32   ---      Removed  Normal  ---
js-sys                      0.3.76   ---      Removed  Normal  cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi"))))
js-sys                      0.3.76   ---      Removed  Normal  cfg(all(target_arch = "wasm32", target_os = "unknown"))
libc                        0.2.168  ---      Removed  Normal  ---
libc                        0.2.168  ---      Removed  Normal  cfg(unix)
libm                        0.2.11   ---      Removed  Normal  ---
log                         0.4.22   ---      Removed  Normal  ---
near-sandbox-utils          0.8.0    ---      0.9.0    Build   ---
near-sandbox-utils          0.9.0    0.8.0    ---      Normal  ---
num-traits                  0.2.19   ---      Removed  Normal  ---
once_cell                   1.20.2   ---      Removed  Normal  ---
proc-macro2                 1.0.92   ---      Removed  Normal  ---
quote                       1.0.37   ---      Removed  Normal  ---
serde                       1.0.216  ---      Removed  Normal  ---
serde_derive                1.0.216  ---      Removed  Normal  ---
shlex                       1.3.0    ---      Removed  Normal  ---
syn                         2.0.90   ---      Removed  Normal  ---
unicode-ident               1.0.14   ---      Removed  Normal  ---
wasm-bindgen                0.2.99   ---      Removed  Normal  ---
wasm-bindgen                0.2.99   ---      Removed  Normal  cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi"))))
wasm-bindgen                0.2.99   ---      Removed  Normal  cfg(all(target_arch = "wasm32", target_os = "unknown"))
wasm-bindgen-backend        0.2.99   ---      Removed  Normal  ---
wasm-bindgen-macro          0.2.99   ---      Removed  Normal  ---
wasm-bindgen-macro-support  0.2.99   ---      Removed  Normal  ---
wasm-bindgen-shared         0.2.99   ---      Removed  Normal  ---
windows-core                0.52.0   ---      Removed  Normal  cfg(target_os = "windows")
windows-targets             0.52.6   ---      Removed  Normal  ---
windows-targets             0.52.6   ---      Removed  Normal  cfg(windows)
windows_aarch64_gnullvm     0.52.6   ---      Removed  Normal  aarch64-pc-windows-gnullvm
windows_aarch64_msvc        0.52.6   ---      Removed  Normal  cfg(all(target_arch = "aarch64", target_env = "msvc", not(windows_raw_dylib)))
windows_i686_gnu            0.52.6   ---      Removed  Normal  cfg(all(target_arch = "x86", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib)))
windows_i686_gnullvm        0.52.6   ---      Removed  Normal  i686-pc-windows-gnullvm
windows_i686_msvc           0.52.6   ---      Removed  Normal  cfg(all(target_arch = "x86", target_env = "msvc", not(windows_raw_dylib)))
windows_x86_64_gnu          0.52.6   ---      Removed  Normal  cfg(all(target_arch = "x86_64", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib)))
windows_x86_64_gnullvm      0.52.6   ---      Removed  Normal  x86_64-pc-windows-gnullvm
windows_x86_64_msvc         0.52.6   ---      Removed  Normal  cfg(all(any(target_arch = "x86_64", target_arch = "arm64ec"), target_env = "msvc", not(windows_raw_dylib)))

CheckToml / toml: C:\home\git\polyglot\apps\chat\contract\Cargo.toml
error: failed to download `hybrid-array v0.3.0`

Caused by:
  unable to get packages from source

Caused by:
  failed to parse manifest at `C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-6f17d22bba15001f\hybrid-array-0.3.0\Cargo.toml`

Caused by:
  feature `edition2024` is required

  The package requires the Cargo feature called `edition2024`, but that feature is not stabilized in this version of Cargo (1.81.0).
  Consider trying a more recent nightly release.
  See https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for more information about the status of this feature.

# Invoke-Block / $retry: 1/1 / $Location:  / Get-Location: C:\home\git\polyglot\scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / $ScriptBlock:
'cargo outdated -m $toml @_args'


CheckToml / toml: C:\home\git\polyglot\apps\chat\contract\tests\Cargo.toml
error: failed to download `hybrid-array v0.3.0`

Caused by:
  unable to get packages from source

Caused by:
  failed to parse manifest at `C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-6f17d22bba15001f\hybrid-array-0.3.0\Cargo.toml`

Caused by:
  feature `edition2024` is required

  The package requires the Cargo feature called `edition2024`, but that feature is not stabilized in this version of Cargo (1.81.0).
  Consider trying a more recent nightly release.
  See https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for more information about the status of this feature.

# Invoke-Block / $retry: 1/1 / $Location:  / Get-Location: C:\home\git\polyglot\scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / $ScriptBlock:
'cargo outdated -m $toml @_args'


CheckToml / toml: C:\home\git\polyglot\apps\plot\Cargo.toml
error: failed to download `hybrid-array v0.3.0`

Caused by:
  unable to get packages from source

Caused by:
  failed to parse manifest at `C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-6f17d22bba15001f\hybrid-array-0.3.0\Cargo.toml`

Caused by:
  feature `edition2024` is required

  The package requires the Cargo feature called `edition2024`, but that feature is not stabilized in this version of Cargo (1.81.0).
  Consider trying a more recent nightly release.
  See https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for more information about the status of this feature.

# Invoke-Block / $retry: 1/1 / $Location:  / Get-Location: C:\home\git\polyglot\scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / $ScriptBlock:
'cargo outdated -m $toml @_args'


CheckJson / json: C:/home/git/polyglot
$ npm-check-updates --target greatest
Using bun
Checking C:\home\git\polyglot\package.json


 @types/node          ~22.10  →    ~22.13
 npm-check-updates  ~17.1.14  →  ~17.1.15

Run ncu --target greatest -u to upgrade package.json

CheckJson / json: C:/home/git/polyglot/apps/ipfs
$ npm-check-updates --target greatest
Using bun
Checking C:\home\git\polyglot\apps\ipfs\package.json


 @types/node          ~22.10  →    ~22.13
 npm-check-updates  ~17.1.14  →  ~17.1.15

Run ncu --target greatest -u to upgrade package.json

CheckJson / json: C:/home/git/polyglot/apps/spiral/temp/extension
$ npm-check-updates --target greatest
Using bun
Checking C:\home\git\polyglot\apps\spiral\temp\extension\package.json


 @playwright/test     1.44.0  →  1.52.0-alpha-2025-03-15
 @types/chrome      ~0.0.268  →                 ~0.0.309
 npm-check-updates  ~17.1.14  →                 ~17.1.15

Run ncu --target greatest -u to upgrade package.json

CheckJson / json: C:/home/git/polyglot/apps/spiral/vscode
$ npm-check-updates --target greatest
Using bun
Checking C:\home\git\polyglot\apps\spiral\vscode\package.json


 @types/node          ~22.10  →    ~22.13
 @types/vscode         ~1.96  →     ~1.98
 npm-check-updates  ~17.1.14  →  ~17.1.15

Run ncu --target greatest -u to upgrade package.json

CheckJson / json: C:/home/git/polyglot/deps/The-Spiral-Language/VS Code Plugin
$ npm-check-updates --target greatest
Checking C:\home\git\polyglot\deps\The-Spiral-Language\VS Code Plugin\package.json


 @microsoft/signalr     8.0.0  →     8.0.7
 @types/node           ~22.10  →    ~22.13
 @types/vscode          ~1.95  →     ~1.98
 esbuild                ~0.24  →     ~0.25
 npm-check-updates   ~17.1.14  →  ~17.1.15
 portfinder           ^1.0.32  →   ^1.0.35

Run ncu --target greatest -u to upgrade package.json

CheckToml / toml: C:\home\git\dice\Cargo.toml / _args: -w
warning: Feature js of package getrandom has been obsolete in version 0.3.1
warning: Feature js of package getrandom has been obsolete in version 0.3.1
dice_contract
================
Name            Project  Compat   Latest   Kind    Platform
----            -------  ------   ------   ----    --------
allocator-api2  0.2.20   Removed  Removed  Normal  ---
equivalent      1.0.1    Removed  Removed  Normal  ---
foldhash        0.1.3    Removed  Removed  Normal  ---

dice_contract_lib
================
Name            Project  Compat   Latest   Kind    Platform
----            -------  ------   ------   ----    --------
allocator-api2  0.2.20   Removed  Removed  Normal  ---
equivalent      1.0.1    Removed  Removed  Normal  ---
foldhash        0.1.3    Removed  Removed  Normal  ---

fable_library_rust
================
Name                        Project                        Compat   Latest   Kind    Platform
----                        -------                        ------   ------   ----    --------
ahash                       0.7.8                          Removed  Removed  Normal  ---
aho-corasick                1.1.3                          Removed  Removed  Normal  ---
allocator-api2              0.2.20                         Removed  Removed  Normal  ---
arrayvec                    0.7.6                          Removed  Removed  Normal  ---
autocfg                     1.4.0                          Removed  Removed  Build   ---
bitvec                      1.0.1                          Removed  Removed  Normal  ---
borsh                       1.5.3                          Removed  Removed  Normal  ---
borsh-derive                1.5.3                          Removed  Removed  Normal  ---
bumpalo                     3.16.0                         Removed  Removed  Normal  ---
bytecheck                   0.6.12                         Removed  Removed  Normal  ---
bytecheck_derive            0.6.12                         Removed  Removed  Normal  ---
byteorder                   1.5.0                          Removed  Removed  Normal  ---
bytes                       1.10.1                         Removed  Removed  Normal  ---
cfg-if                      1.0.0                          Removed  Removed  Normal  ---
cfg_aliases                 0.2.1                          Removed  Removed  Build   ---
equivalent                  1.0.1                          Removed  Removed  Normal  ---
foldhash                    0.1.3                          Removed  Removed  Normal  ---
funty                       2.0.0                          Removed  Removed  Normal  ---
getrandom                   0.2.15                         Removed  Removed  Normal  ---
getrandom                   0.2.15                         Removed  Removed  Normal  cfg(any(target_os = "linux", target_os = "android", target_os = "windows", target_os = "macos", target_os = "ios", target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonfly", target_os = "solaris", target_os = "illumos", target_os = "fuchsia", target_os = "redox", target_os = "cloudabi", target_os = "haiku", target_os = "vxworks", target_os = "emscripten", target_os = "wasi"))
hashbrown                   0.12.3                         Removed  Removed  Normal  ---
hashbrown                   0.15.1                         Removed  Removed  Normal  ---
indexmap                    2.6.0                          Removed  Removed  Normal  ---
itoa                        1.0.11                         Removed  Removed  Normal  ---
js-sys                      0.3.77                         Removed  Removed  Normal  cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
libc                        0.2.162                        Removed  Removed  Normal  cfg(unix)
log                         0.4.22                         Removed  Removed  Normal  ---
memchr                      2.7.4                          Removed  Removed  Normal  ---
num-bigint                  0.4.6                          Removed  Removed  Normal  ---
num-integer                 0.1.46                         Removed  Removed  Normal  ---
num-traits                  0.2.19                         Removed  Removed  Normal  ---
once_cell                   1.20.2                         Removed  Removed  Normal  ---
once_cell                   1.20.2                         Removed  Removed  Normal  cfg(not(all(target_arch = "arm", target_os = "none")))
ppv-lite86                  0.2.20                         Removed  Removed  Normal  ---
proc-macro-crate            3.2.0                          Removed  Removed  Normal  ---
proc-macro2                 1.0.89                         Removed  Removed  Normal  ---
ptr_meta                    0.1.4                          Removed  Removed  Normal  ---
ptr_meta_derive             0.1.4                          Removed  Removed  Normal  ---
quote                       1.0.37                         Removed  Removed  Normal  ---
radium                      0.7.0                          Removed  Removed  Normal  ---
rand                        0.8.5                          Removed  Removed  Normal  ---
rand_chacha                 0.3.1                          Removed  Removed  Normal  ---
rand_core                   0.6.4                          Removed  Removed  Normal  ---
regex                       1.11.1                         Removed  Removed  Normal  ---
regex-automata              0.4.9                          Removed  Removed  Normal  ---
regex-syntax                0.8.5                          Removed  Removed  Normal  ---
rend                        0.4.2                          Removed  Removed  Normal  ---
rkyv                        0.7.45                         Removed  Removed  Normal  ---
rkyv_derive                 0.7.45                         Removed  Removed  Normal  ---
rust_decimal                1.36.0                         Removed  Removed  Normal  ---
rustversion                 1.0.18                         Removed  Removed  Normal  ---
ryu                         1.0.18                         Removed  Removed  Normal  ---
seahash                     4.1.0                          Removed  Removed  Normal  ---
serde                       1.0.215                        Removed  Removed  Normal  ---
serde_derive                1.0.215                        Removed  Removed  Normal  ---
serde_json                  1.0.132                        Removed  Removed  Normal  ---
serde_spanned               0.6.8                          Removed  Removed  Normal  ---
simdutf8                    0.1.5                          Removed  Removed  Normal  ---
syn                         1.0.109                        Removed  Removed  Normal  ---
syn                         2.0.87                         Removed  Removed  Normal  ---
tap                         1.0.1                          Removed  Removed  Normal  ---
tinyvec                     1.8.0                          Removed  Removed  Normal  ---
tinyvec_macros              0.1.1                          Removed  Removed  Normal  ---
toml_datetime               0.6.8                          Removed  Removed  Normal  ---
toml_edit                   0.22.22                        Removed  Removed  Normal  ---
unicode-ident               1.0.13                         Removed  Removed  Normal  ---
uuid                        1.11.0                         Removed  Removed  Normal  ---
version_check               0.9.5                          Removed  Removed  Build   ---
wasi                        0.11.0+wasi-snapshot-preview1  Removed  Removed  Normal  cfg(target_os = "wasi")
wasm-bindgen                0.2.100                        Removed  Removed  Normal  ---
wasm-bindgen                0.2.100                        Removed  Removed  Normal  cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
wasm-bindgen-backend        0.2.100                        Removed  Removed  Normal  ---
wasm-bindgen-macro          0.2.100                        Removed  Removed  Normal  ---
wasm-bindgen-macro-support  0.2.100                        Removed  Removed  Normal  ---
wasm-bindgen-shared         0.2.100                        Removed  Removed  Normal  ---
winnow                      0.6.20                         Removed  Removed  Normal  ---
wyz                         0.5.1                          Removed  Removed  Normal  ---
zerocopy                    0.7.35                         Removed  Removed  Normal  ---
zerocopy-derive             0.7.35                         Removed  Removed  Normal  ---

dice_contract_tests
================
Name                        Project                        Compat   Latest   Kind    Platform
----                        -------                        ------   ------   ----    --------
ahash                       0.7.8                          Removed  Removed  Normal  ---
allocator-api2              0.2.20                         Removed  Removed  Normal  ---
autocfg                     1.4.0                          Removed  Removed  Build   ---
bumpalo                     3.16.0                         Removed  Removed  Normal  ---
cfg-if                      1.0.0                          Removed  Removed  Normal  ---
equivalent                  1.0.1                          Removed  Removed  Normal  ---
foldhash                    0.1.3                          Removed  Removed  Normal  ---
getrandom                   0.2.15                         Removed  Removed  Normal  cfg(any(target_os = "linux", target_os = "android", target_os = "windows", target_os = "macos", target_os = "ios", target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonfly", target_os = "solaris", target_os = "illumos", target_os = "fuchsia", target_os = "redox", target_os = "cloudabi", target_os = "haiku", target_os = "vxworks", target_os = "emscripten", target_os = "wasi"))
hashbrown                   0.12.3                         0.15.1   0.15.1   Normal  ---
indexmap                    1.9.3                          2.6.0    2.6.0    Normal  ---
js-sys                      0.3.77                         Removed  Removed  Normal  cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
libc                        0.2.162                        Removed  Removed  Normal  cfg(unix)
log                         0.4.22                         Removed  Removed  Normal  ---
near-sandbox-utils          0.9.0                          0.8.0    0.8.0    Normal  ---
once_cell                   1.20.2                         Removed  Removed  Normal  ---
once_cell                   1.20.2                         Removed  Removed  Normal  cfg(not(all(target_arch = "arm", target_os = "none")))
proc-macro2                 1.0.89                         Removed  Removed  Normal  ---
quote                       1.0.37                         Removed  Removed  Normal  ---
rustversion                 1.0.18                         Removed  Removed  Normal  ---
syn                         2.0.87                         Removed  Removed  Normal  ---
unicode-ident               1.0.13                         Removed  Removed  Normal  ---
version_check               0.9.5                          Removed  Removed  Build   ---
wasi                        0.11.0+wasi-snapshot-preview1  Removed  Removed  Normal  cfg(target_os = "wasi")
wasm-bindgen                0.2.100                        Removed  Removed  Normal  ---
wasm-bindgen                0.2.100                        Removed  Removed  Normal  cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
wasm-bindgen-backend        0.2.100                        Removed  Removed  Normal  ---
wasm-bindgen-macro          0.2.100                        Removed  Removed  Normal  ---
wasm-bindgen-macro-support  0.2.100                        Removed  Removed  Normal  ---
wasm-bindgen-shared         0.2.100                        Removed  Removed  Normal  ---

dice_ui
================
Name            Project  Compat   Latest   Kind    Platform
----            -------  ------   ------   ----    --------
allocator-api2  0.2.20   Removed  Removed  Normal  ---
equivalent      1.0.1    Removed  Removed  Normal  ---
foldhash        0.1.3    Removed  Removed  Normal  ---

CheckToml / toml: C:\home\git\dice\lib\Cargo.toml / _args: 
warning: Feature js of package getrandom has been obsolete in version 0.3.1
error: failed to download `hybrid-array v0.3.0`

Caused by:
  unable to get packages from source

Caused by:
  failed to parse manifest at `C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-6f17d22bba15001f\hybrid-array-0.3.0\Cargo.toml`

Caused by:
  feature `edition2024` is required

  The package requires the Cargo feature called `edition2024`, but that feature is not stabilized in this version of Cargo (1.81.0).
  Consider trying a more recent nightly release.
  See https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for more information about the status of this feature.

# Invoke-Block / $retry: 1/1 / $Location:  / Get-Location: C:\home\git\dice\scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / $ScriptBlock:
'cargo outdated -m $toml @_args'


CheckToml / toml: C:\home\git\dice\lib\contract\Cargo.toml / _args: 
warning: Feature js of package getrandom has been obsolete in version 0.3.1
error: failed to download `hybrid-array v0.3.0`

Caused by:
  unable to get packages from source

Caused by:
  failed to parse manifest at `C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-6f17d22bba15001f\hybrid-array-0.3.0\Cargo.toml`

Caused by:
  feature `edition2024` is required

  The package requires the Cargo feature called `edition2024`, but that feature is not stabilized in this version of Cargo (1.81.0).
  Consider trying a more recent nightly release.
  See https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for more information about the status of this feature.

# Invoke-Block / $retry: 1/1 / $Location:  / Get-Location: C:\home\git\dice\scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / $ScriptBlock:
'cargo outdated -m $toml @_args'


CheckToml / toml: C:\home\git\dice\lib\fsharp\Cargo.toml / _args: 
warning: Feature js of package getrandom has been obsolete in version 0.3.1
error: failed to download `hybrid-array v0.3.0`

Caused by:
  unable to get packages from source

Caused by:
  failed to parse manifest at `C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-6f17d22bba15001f\hybrid-array-0.3.0\Cargo.toml`

Caused by:
  feature `edition2024` is required

  The package requires the Cargo feature called `edition2024`, but that feature is not stabilized in this version of Cargo (1.81.0).
  Consider trying a more recent nightly release.
  See https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for more information about the status of this feature.

# Invoke-Block / $retry: 1/1 / $Location:  / Get-Location: C:\home\git\dice\scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / $ScriptBlock:
'cargo outdated -m $toml @_args'


CheckToml / toml: C:\home\git\dice\contract\Cargo.toml / _args: 
warning: Feature js of package getrandom has been obsolete in version 0.3.1
error: failed to download `hybrid-array v0.3.0`

Caused by:
  unable to get packages from source

Caused by:
  failed to parse manifest at `C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-6f17d22bba15001f\hybrid-array-0.3.0\Cargo.toml`

Caused by:
  feature `edition2024` is required

  The package requires the Cargo feature called `edition2024`, but that feature is not stabilized in this version of Cargo (1.81.0).
  Consider trying a more recent nightly release.
  See https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for more information about the status of this feature.

# Invoke-Block / $retry: 1/1 / $Location:  / Get-Location: C:\home\git\dice\scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / $ScriptBlock:
'cargo outdated -m $toml @_args'


CheckToml / toml: C:\home\git\dice\contract\tests\Cargo.toml / _args: 
warning: Feature js of package getrandom has been obsolete in version 0.3.1
error: failed to download `hybrid-array v0.3.0`

Caused by:
  unable to get packages from source

Caused by:
  failed to parse manifest at `C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-6f17d22bba15001f\hybrid-array-0.3.0\Cargo.toml`

Caused by:
  feature `edition2024` is required

  The package requires the Cargo feature called `edition2024`, but that feature is not stabilized in this version of Cargo (1.81.0).
  Consider trying a more recent nightly release.
  See https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for more information about the status of this feature.

# Invoke-Block / $retry: 1/1 / $Location:  / Get-Location: C:\home\git\dice\scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / $ScriptBlock:
'cargo outdated -m $toml @_args'


CheckToml / toml: C:\home\git\dice\ui\Cargo.toml / _args: 
warning: Feature js of package getrandom has been obsolete in version 0.3.1
error: failed to download `hybrid-array v0.3.0`

Caused by:
  unable to get packages from source

Caused by:
  failed to parse manifest at `C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-6f17d22bba15001f\hybrid-array-0.3.0\Cargo.toml`

Caused by:
  feature `edition2024` is required

  The package requires the Cargo feature called `edition2024`, but that feature is not stabilized in this version of Cargo (1.81.0).
  Consider trying a more recent nightly release.
  See https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for more information about the status of this feature.

# Invoke-Block / $retry: 1/1 / $Location:  / Get-Location: C:\home\git\dice\scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / $ScriptBlock:
'cargo outdated -m $toml @_args'


CheckJson / json: C:/home/git/dice/ui
$ npm-check-updates --target greatest
Using bun
Checking C:\home\git\dice\ui\package.json


 @types/node          ~22.10  →    ~22.13
 npm-check-updates  ~17.1.14  →  ~17.1.15
 tailwindcss            ~3.4  →      ~4.0

Run ncu --target greatest -u to upgrade package.json

CheckJson / json: C:/home/git/dice/ui/e2e
$ npm-check-updates --target greatest
Using bun
Checking C:\home\git\dice\ui\e2e\package.json


 @playwright/test     1.44.0  →  1.52.0-alpha-2025-03-15
 npm-check-updates  ~17.1.14  →                 ~17.1.15

Run ncu --target greatest -u to upgrade package.json
In [ ]:
{ pwsh publish.ps1 } | Invoke-Block
building file list ... done
created directory ../dist
./
.editorconfig
.gitattributes
.gitignore
CODE_OF_CONDUCT.md
CONTRIBUTING.md
README.md
i574n-deps.code-workspace
i574n.code-workspace
init.ps1
outdated.ps1
publish.ps1
workflow.dib
workflow.dib.html
workflow.dib.ipynb
workflow.ps1
.devcontainer/
.devcontainer/Dockerfile
.devcontainer/devcontainer.json
.github/
.github/FUNDING.yml
.github/workflows/
.github/workflows/gh-pages.yml
profile/
profile/README.md
scripts/
scripts/build.ps1
scripts/init.ps1
scripts/outdated.ps1
scripts/publish.ps1
scripts/workflow.dib
scripts/workflow.dib.html
scripts/workflow.dib.ipynb
scripts/workflow.ps1

sent 28,716,981 bytes  received 596 bytes  57,435,154.00 bytes/sec
total size is 28,711,246  speedup is 1.00
building file list ... done
created directory ../dist
./
skipping non-regular file ".obsidian/plugins/obsidian-custom-frames/main.js"
.editorconfig
.gitattributes
.gitignore
.markdownlint.json
LICENSE
README.md
fleek.config.json
init.ps1
publish-fleek.ps1
publish.ps1
workflow.ps1
.babashka/
.babashka/bb.edn
.babashka/nbb.edn
.devcontainer/
.devcontainer/Dockerfile
.devcontainer/devcontainer.json
.github/
.github/workflows/
.github/workflows/gh-pages.yml
.obsidian/
.obsidian/app.json
.obsidian/appearance.json
.obsidian/bookmarks.json
.obsidian/community-plugins.json
.obsidian/core-plugins.json
.obsidian/daily-notes.json
.obsidian/graph.json
.obsidian/hotkeys.json
.obsidian/workspace-mobile.json
.obsidian/workspace.json
.obsidian/plugins/
.obsidian/plugins/babashka/
.obsidian/plugins/babashka/data.json
.obsidian/plugins/babashka/main.js
.obsidian/plugins/babashka/manifest.json
.obsidian/plugins/better-word-count/
.obsidian/plugins/better-word-count/main.js
.obsidian/plugins/better-word-count/manifest.json
.obsidian/plugins/better-word-count/styles.css
.obsidian/plugins/calendar/
.obsidian/plugins/calendar/data.json
.obsidian/plugins/calendar/main.js
.obsidian/plugins/calendar/manifest.json
.obsidian/plugins/convert-url-to-iframe/
.obsidian/plugins/convert-url-to-iframe/main.js
.obsidian/plugins/convert-url-to-iframe/manifest.json
.obsidian/plugins/convert-url-to-iframe/styles.css
.obsidian/plugins/dataview/
.obsidian/plugins/dataview/main.js
.obsidian/plugins/dataview/manifest.json
.obsidian/plugins/dataview/styles.css
.obsidian/plugins/file-indicators/
.obsidian/plugins/file-indicators/data.json
.obsidian/plugins/file-indicators/main.js
.obsidian/plugins/file-indicators/manifest.json
.obsidian/plugins/file-indicators/styles.css
.obsidian/plugins/key-promoter/
.obsidian/plugins/key-promoter/data.json
.obsidian/plugins/key-promoter/main.js
.obsidian/plugins/key-promoter/manifest.json
.obsidian/plugins/novel-word-count/
.obsidian/plugins/novel-word-count/data.json
.obsidian/plugins/novel-word-count/main.js
.obsidian/plugins/novel-word-count/manifest.json
.obsidian/plugins/novel-word-count/styles.css
.obsidian/plugins/obsidian-checklist-plugin/
.obsidian/plugins/obsidian-checklist-plugin/main.js
.obsidian/plugins/obsidian-checklist-plugin/manifest.json
.obsidian/plugins/obsidian-checklist-plugin/styles.css
.obsidian/plugins/obsidian-custom-file-extensions-plugin/
.obsidian/plugins/obsidian-custom-file-extensions-plugin/data.json
.obsidian/plugins/obsidian-custom-file-extensions-plugin/main.js
.obsidian/plugins/obsidian-custom-file-extensions-plugin/manifest.json
.obsidian/plugins/obsidian-custom-frames/
.obsidian/plugins/obsidian-custom-frames/_main.js
.obsidian/plugins/obsidian-custom-frames/data.json
.obsidian/plugins/obsidian-custom-frames/manifest.json
.obsidian/plugins/obsidian-custom-frames/styles.css
.obsidian/plugins/obsidian-day-planner/
.obsidian/plugins/obsidian-day-planner/data.json
.obsidian/plugins/obsidian-day-planner/main.js
.obsidian/plugins/obsidian-day-planner/manifest.json
.obsidian/plugins/obsidian-day-planner/styles.css
.obsidian/plugins/obsidian-git/
.obsidian/plugins/obsidian-git/data.json
.obsidian/plugins/obsidian-git/main.js
.obsidian/plugins/obsidian-git/manifest.json
.obsidian/plugins/obsidian-git/styles.css
.obsidian/plugins/obsidian-html-plugin/
.obsidian/plugins/obsidian-html-plugin/main.js
.obsidian/plugins/obsidian-html-plugin/manifest.json
.obsidian/plugins/obsidian-kanban/
.obsidian/plugins/obsidian-kanban/main.js
.obsidian/plugins/obsidian-kanban/manifest.json
.obsidian/plugins/obsidian-kanban/styles.css
.obsidian/plugins/obsidian-linter/
.obsidian/plugins/obsidian-linter/data.json
.obsidian/plugins/obsidian-linter/main.js
.obsidian/plugins/obsidian-linter/manifest.json
.obsidian/plugins/obsidian-linter/styles.css
.obsidian/plugins/obsidian-mind-map/
.obsidian/plugins/obsidian-mind-map/main.js
.obsidian/plugins/obsidian-mind-map/manifest.json
.obsidian/plugins/obsidian-plugin-toc/
.obsidian/plugins/obsidian-plugin-toc/data.json
.obsidian/plugins/obsidian-plugin-toc/main.js
.obsidian/plugins/obsidian-plugin-toc/manifest.json
.obsidian/plugins/obsidian-prominent-starred-files/
.obsidian/plugins/obsidian-prominent-starred-files/main.js
.obsidian/plugins/obsidian-prominent-starred-files/manifest.json
.obsidian/plugins/obsidian-prominent-starred-files/styles.css
.obsidian/plugins/obsidian-tasks-plugin/
.obsidian/plugins/obsidian-tasks-plugin/data.json
.obsidian/plugins/obsidian-tasks-plugin/main.js
.obsidian/plugins/obsidian-tasks-plugin/manifest.json
.obsidian/plugins/obsidian-tasks-plugin/styles.css
.obsidian/plugins/obsidian-version-history-diff/
.obsidian/plugins/obsidian-version-history-diff/main.js
.obsidian/plugins/obsidian-version-history-diff/manifest.json
.obsidian/plugins/obsidian-version-history-diff/styles.css
.obsidian/plugins/oz-image-plugin/
.obsidian/plugins/oz-image-plugin/data.json
.obsidian/plugins/oz-image-plugin/main.js
.obsidian/plugins/oz-image-plugin/manifest.json
.obsidian/plugins/oz-image-plugin/styles.css
.obsidian/plugins/recent-files-obsidian/
.obsidian/plugins/recent-files-obsidian/data.json
.obsidian/plugins/recent-files-obsidian/main.js
.obsidian/plugins/recent-files-obsidian/manifest.json
.obsidian/plugins/recent-files-obsidian/styles.css
.obsidian/plugins/remember-cursor-position/
.obsidian/plugins/remember-cursor-position/cursor-positions.json
.obsidian/plugins/remember-cursor-position/main.js
.obsidian/plugins/remember-cursor-position/manifest.json
.obsidian/plugins/reveal-active-file-button/
.obsidian/plugins/reveal-active-file-button/main.js
.obsidian/plugins/reveal-active-file-button/manifest.json
.obsidian/plugins/terminal/
.obsidian/plugins/terminal/data.json
.obsidian/plugins/terminal/main.js
.obsidian/plugins/terminal/manifest.json
.obsidian/plugins/terminal/styles.css
data/
data/ai/
data/ai/ai.md
data/ai/ai.mp3.md
data/ai/ai.pdf.md
data/ai/chatgpt.html.md
data/ai/chatgpt.md
data/ai/chatgpt.toml
data/ai/gpt3.html.md
data/ai/rhyme 6.md
data/apple/
data/apple/apple.html.md
data/apple/apple.i574n.md
data/art/
data/art/art.md
data/astrology/
data/astrology/astrology.fc1943s.md
data/astrology/astrology.html.md
data/astrology/astrology.md
data/astronomy/
data/astronomy/astronomy.md
data/biology/
data/biology/biology.mp3.md
data/books/
data/books/books.md
data/business/
data/business/business.md
data/chat/
data/chat/AdySweet.html.md
data/chat/Angrykat.html.md
data/chat/AubriToffee.html.md
data/chat/AwesomeEly.html.md
data/chat/BirthdayLexxx.html.md
data/chat/Blond3B.html.md
data/chat/Brithanybrown.html.md
data/chat/Cherrycute666.html.md
data/chat/Dakota_Blare.html.md
data/chat/EffyTudor.html.md
data/chat/Fairy_Sweet.html.md
data/chat/GirlOffGrid.html.md
data/chat/HinakoHime.html.md
data/chat/ImperialKiss.html.md
data/chat/JALYN.html.md
data/chat/Jully_Lov.html.md
data/chat/Kitty.html.md
data/chat/Luckyystrike.html.md
data/chat/MissLullu.html.md
data/chat/Missbaby8.html.md
data/chat/NicolePowell.html.md
data/chat/Olivia.html.md
data/chat/Red_Flower203.html.md
data/chat/RocknRose.html.md
data/chat/RorrieGomez.html.md
data/chat/Stacy_x3.html.md
data/chat/Stephanie.html.md
data/chat/TinaHale.html.md
data/chat/WhitneyR.html.md
data/chat/Yarrow.html.md
data/chat/Yukenzi.html.md
data/chat/aliceisonfire.html.md
data/chat/chloewildd.html.md
data/chat/diney_.html.md
data/chat/kittennmoon.html.md
data/chat/mfc.html.md
data/chores/
data/chores/chores.md
data/cliparts/
data/cliparts/avatars.i574n.png.md
data/cliparts/cliparts.html.md
data/clojure/
data/clojure/clojure.md
data/community/
data/community/community.md
data/community/netiquette_pt-br.md
data/compilers/
data/compilers/compilers.md
data/compilers/compilers.pdf.md
data/cryptography/
data/cryptography/cryptography.md
data/dance/
data/dance/dance.md
data/dialects/
data/dialects/dialects.md
data/dialects/dialects.pdf.md
data/dialects/english.md
data/dialects/korean.html.md
data/dialects/korean.md
data/dialects/korean.mp3.md
data/dialects/korean.mp4.md
data/dialects/korean.pdf.md
data/dialects/korean.png.md
data/dialects/portuguese.md
data/dialects/spanish.md
data/dotnet/
data/dotnet/dotnet.md
data/doujinshi/
data/doujinshi/doujinshi.md
data/drugs/
data/drugs/drugs.html.md
data/drugs/drugs.md
data/drugs/drugs.mp3.md
data/drugs/drugs.pdf.md
data/drugs/selva-verde_pt-br.md
data/economy/
data/economy/만리마속도_pt-br.md
data/engineering/
data/engineering/engineering.mp3.md
data/ethics/
data/ethics/ethics.mp3.md
data/exercism/
data/exercism/exercism.html.md
data/facebook/
data/facebook/facebook.fc1943s.md
data/facebook/facebook.html.md
data/fashion/
data/fashion/fashion.md
data/fiction/
data/fiction/acting.md
data/fiction/animation.md
data/fiction/comics.md
data/fiction/fiction.md
data/fiction/fiction.mp3.md
data/fiction/series.mp4.md
data/fiction/stories.md
data/filmow/
data/filmow/filmow.fc1943s.md
data/filmow/filmow.html.md
data/fitness/
data/fitness/fitness.md
data/food/
data/food/food.md
data/food/food.mp3.md
data/gamedev/
data/gamedev/gamedev.pdf.md
data/gaming/
data/gaming/gaming.7z.md
data/git/
data/git/git.md
data/github/
data/github/github.fc1943s.md
data/github/github.html.md
data/github/github.md
data/google/
data/google/google.fc1943s.md
data/google/google.i574n.md
data/hardware/
data/hardware/hardware.html.md
data/hardware/hardware.md
data/hip-hop/
data/hip-hop/complexity-and-competition_pt-br.md
data/hip-hop/hip-hop.md
data/history/
data/history/history.md
data/history/history.mp3.md
data/hunting/
data/hunting/hunting.md
data/identity/
data/identity/identity.fc1943s.7z.md
data/identity/identity.fc1943s.pdf.md
data/identity/identity.fc1943s.png.md
data/identity/identity.프리마.toml
data/kakao/
data/kakao/kakao.html.md
data/kakao/kakao.i574n.md
data/lastfm/
data/lastfm/lastfm.fc1943s.html.md
data/lastfm/lastfm.fc1943s.md
data/lastfm/lastfm.html.md
data/linux/
data/linux/linux.md
data/magic/
data/magic/magic.html.md
data/magic/magic.md
data/magic/magic.pdf.md
data/magic/o-caminho-demonico-dos-dados_pt-br.md
data/magic/the-book-of-remembering_pt-br.md
data/martial-arts/
data/martial-arts/martial-arts.md
data/math/
data/math/math.md
data/mercadolivre/
data/mercadolivre/mercadolivre.html.md
data/mercadolivre/mercadolivre.i574n.md
data/microsoft/
data/microsoft/microsoft.html.md
data/microsoft/microsoft.i574n.md
data/motorcycle/
data/motorcycle/motorcycle.md
data/music/
data/music/mecha-haze.7z.md
data/music/mecha-haze.html.md
data/music/mecha-haze.pdf.md
data/music/mixtape-pluto.md
data/music/music.md
data/music/music.mp3.md
data/navigation/
data/navigation/navigation.html.md
data/navigation/navigation.png.md
data/nix/
data/nix/nix.html.md
data/nix/nix.md
data/numbers/
data/numbers/numbers.md
data/personality/
data/personality/mbti.toml
data/personality/personality.html.md
data/personality/personality.md
data/personality/personality.pdf.md
data/personality/personality.png.md
data/philosophy/
data/philosophy/philosophy.mp3.md
data/physics/
data/physics/physics.md
data/politics/
data/politics/hanauittang.md
data/politics/politics.md
data/politics/politics.mp3.md
data/politics/politics.pdf.md
data/politics/politics.png.md
data/programming/
data/programming/polyglot.html.md
data/programming/polyglot.md
data/programming/powershell.md
data/programming/programming.md
data/programming/programming.mp3.md
data/programming/rust.md
data/programming/rust.pdf.md
data/programming/systems.md
data/protonmail/
data/protonmail/protonmail.fc1943s.md
data/protonmail/protonmail.html.md
data/protonmail/protonmail.i574n.md
data/psychology/
data/psychology/inner-inferno_pt-br.md
data/psychology/psychology.md
data/psychology/psychology.mp3.md
data/psychology/psychology.pdf.md
data/reddit/
data/reddit/reddit.html.md
data/reddit/reddit.i574n.md
data/relationships/
data/relationships/relationships.md
data/religion/
data/religion/hinduism.md
data/religion/kimbanda.md
data/religion/kimbanda.pdf.md
data/religion/maya.md
data/religion/religion.md
data/religion/religion.pdf.md
data/science/
data/science/science.md
data/security/
data/security/security.md
data/sex/
data/sex/sex.html.md
data/sex/sex.md
data/sex/sex.mp3.md
data/sex/sex.pdf.md
data/spiral/
data/spiral/spiral.html.md
data/spirituality/
data/spirituality/gvk_en-us.md
data/spirituality/gvk_pt-br.md
data/spirituality/ressurection_pt-br.md
data/spirituality/spirituality.md
data/spirituality/spirituality.mp4.md
data/spirituality/spirituality.pdf.md
data/spirituality/the-book-of-innocence_pt-br.md
data/streaming/
data/streaming/streaming.md
data/tarot/
data/tarot/tarot.md
data/tarot/tarot.png.md
data/tech/
data/tech/devilopment_pt-br.md
data/tech/tech.epub.md
data/tech/tech.html.md
data/tech/tech.md
data/tech/tech.mp3.md
data/tidal/
data/tidal/tidal.html.md
data/trakt/
data/trakt/trakt.html.md
data/trakt/trakt.i574n.md
data/travel/
data/travel/maps.html.md
data/travel/maps.md
data/travel/maps.png.md
data/travel/north korea.png.md
data/travel/travel.html.md
data/travel/travel.i574n.html.md
data/travel/travel.i574n.md
data/travel/travel.md
data/travel/travel.mp3.md
data/travel/travel.png.md
data/twitter/
data/twitter/twitter.fc1943s.md
data/twitter/twitter.html.md
data/twitter/twitter.i574n.md
data/typing/
data/typing/typing.html.md
data/typing/typing.i574n.md
data/typing/typing.md
data/vim/
data/vim/vimrc.md
data/warez/
data/warez/warez.html.md
data/weather/
data/weather/weather.html.md
data/weather/weather.md
data/web3/
data/web3/near.html.md
data/web3/storage.fc1943s.md
data/web3/storage.html.md
data/web3/web3.fc1943s.7z.md
data/web3/web3.fc1943s.md
data/web3/web3.html.md
data/web3/web3.i574n.md
data/web3/web3.md
data/web3/web3.pdf.md
data/windows/
data/windows/windows.html.md
data/windows/windows.md
data/work/
data/work/cv.fc1943s.md
data/work/cv.fc1943s.pdf.md
data/work/cv_pt-br.fc1943s.md
data/work/work.fc1943s.pdf.md
data/workflow/
data/workflow/tasks.md
data/workflow/test.md
data/workflow/test.toml
data/workflow/vault.fc1943s.7z.md
data/workflow/vault.html.md
data/workflow/vault.md
data/workflow/workflow.md
data/workflow/workflow.mp3.md
data/writing/
data/writing/writing.html.md
data/writing/writing.md
scripts/
scripts/init.ps1
scripts/publish-fleek.ps1
scripts/publish.ps1
scripts/workflow.ps1

sent 266,900,183 bytes  received 7,522 bytes  48,528,673.64 bytes/sec
total size is 266,806,068  speedup is 1.00
vault/scripts/publish.ps1 / targetDir: C:\home\git\vault\target\gh-pages / distDir: C:\home\git\vault/dist / targetDirLog: C:\home\git\vault/target/gh-pages / resolvedTargetDir: C:\home\git\vault\target\gh-pages
fatal: destination path 'gh-pages' already exists and is not an empty directory.
error: cannot pull with rebase: You have unstaged changes.
error: Please commit or stash them.
00:00:00 i #1 documents.main / { args = Array(MutCell(["--source-dir", "C:\home\git\vault", "--dist-dir", "C:\home\git\vault/dist", "--cache-dir", "C:\home\git\vault\target\gh-pages", "--hangul-spec", "por-br"])) }
00:00:00 d #2 documents.run / { source_dir = \\?\C:\home\git\vault; dist_dir = \\?\C:\home\git\vault\dist; cache_dir = \\?\C:\home\git\vault\target\gh-pages; hangul_spec = por-br }
00:00:00 d #3 documents.run / { files_len = 252 }
00:00:00 d #4 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/fiction/stories.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/fiction/stories.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:00 d #8 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/dialects/dialects.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/dialects/dialects.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:00 d #6 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/drugs/drugs.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/drugs/drugs.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:00 d #9 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/dialects/korean.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/dialects/korean.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:00 d #4 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/ai/ai.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/ai/ai.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:00 d #7 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/magic/magic.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/magic/magic.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:00 d #10 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/hip-hop/complexity-and-competition_pt-br.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/hip-hop/complexity-and-competition_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:00 d #11 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/GirlOffGrid.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/GirlOffGrid.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:00 v #12 > '92d1d8cd0a34226b7cdf85130b1dd4d1f0423e10'
00:00:00 v #13 > '9374f730729923ec03218a01780c68bb615491a4'
00:00:00 v #14 > '8aa274da073635a68a9f909b759505235c2bac57'
00:00:00 v #15 > '0cc6d8990d1fe5ac8b9962d67abcc506613aec39'
00:00:00 v #16 > '51563b7ac15182af49fe8a3e4fba27f308d9492a'
00:00:00 v #17 > 'e42da5723e601e2eaf26691ae223892b88386727'
00:00:00 v #18 > 'e93e10423e6621a5538596571851d23a593252d3'
00:00:00 v #19 > 'f5e82445d251df9ddf5c77ec561ad32ff1304781'
00:00:00 v #20 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:00 v #21 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:00 d #22 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/magic/magic.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/magic/magic.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:00 v #23 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:00 v #24 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:00 d #25 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/dialects/korean.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/dialects/korean.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:00 d #26 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/fiction/stories.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/fiction/stories.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:00 v #27 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:00 v #28 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:00 d #29 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:00 d #30 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/ai/ai.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/ai/ai.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:00 d #31 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/drugs/drugs.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/drugs/drugs.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:00 v #32 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:00 d #33 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/dialects/dialects.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/dialects/dialects.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:00 v #34 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:00 d #35 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/GirlOffGrid.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/GirlOffGrid.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:00 v #36 > 92d1d8cd0a34226b7cdf85130b1dd4d1f0423e10
00:00:00 v #37 > 8aa274da073635a68a9f909b759505235c2bac57
00:00:00 v #38 > 9374f730729923ec03218a01780c68bb615491a4
00:00:00 v #39 > 0cc6d8990d1fe5ac8b9962d67abcc506613aec39
00:00:00 v #40 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:00 i #41 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.pdf.hangul.md.epub }
00:00:00 d #42 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/magic/magic.pdf.hangul.md.epub; result = 6752 }
00:00:00 i #43 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.pdf.hangul.md.pdf }
00:00:00 v #44 > e42da5723e601e2eaf26691ae223892b88386727
00:00:00 d #45 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/magic/magic.pdf.hangul.md.pdf; result = 6682 }
00:00:00 i #46 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.pdf.hangul.md.html }
00:00:00 v #47 > 51563b7ac15182af49fe8a3e4fba27f308d9492a
00:00:00 d #48 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/magic/magic.pdf.hangul.md.html; result = 15565 }
00:00:00 i #49 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.pdf.md.epub }
00:00:00 v #50 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:00 d #51 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.pdf.md.epub; new_path = c:/home/git/vault/dist/data/magic/magic.pdf.md.epub; result = 6327 }
00:00:00 i #52 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.pdf.md.pdf }
00:00:00 d #53 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/magic/magic.pdf.md.pdf; result = 15781 }
00:00:00 i #54 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/stories.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\stories.hangul.md.epub }
00:00:00 i #55 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.pdf.md.html }
00:00:00 d #56 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.pdf.md.html; new_path = c:/home/git/vault/dist/data/magic/magic.pdf.md.html; result = 13789 }
00:00:00 i #57 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.pdf.hangul.md }
00:00:00 d #58 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\stories.hangul.md.epub; new_path = c:/home/git/vault/dist/data/fiction/stories.hangul.md.epub; result = 150468 }
00:00:00 i #59 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/stories.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\stories.hangul.md.pdf }
00:00:00 d #59 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/magic/magic.pdf.hangul.md; result = 4606 }
00:00:00 v #61 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:00 v #62 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:00 d #63 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\stories.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/fiction/stories.hangul.md.pdf; result = 209486 }
00:00:00 i #64 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/stories.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\stories.hangul.md.html }
00:00:00 d #65 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/magic/o-caminho-demonico-dos-dados_pt-br.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/magic/o-caminho-demonico-dos-dados_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:00 i #66 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.mp3.hangul.md.epub }
00:00:00 i #67 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.pdf.hangul.md.epub }
00:00:00 d #68 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\stories.hangul.md.html; new_path = c:/home/git/vault/dist/data/fiction/stories.hangul.md.html; result = 690683 }
00:00:00 d #69 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/drugs/drugs.mp3.hangul.md.epub; result = 5850 }
00:00:00 d #70 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/dialects/korean.pdf.hangul.md.epub; result = 5763 }
00:00:00 i #71 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/stories.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\stories.md.epub }
00:00:00 i #72 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.mp3.hangul.md.pdf }
00:00:00 i #73 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.pdf.hangul.md.pdf }
00:00:00 d #74 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/drugs/drugs.mp3.hangul.md.pdf; result = 4357 }
00:00:00 d #75 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/korean.pdf.hangul.md.pdf; result = 5067 }
00:00:00 d #76 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\stories.md.epub; new_path = c:/home/git/vault/dist/data/fiction/stories.md.epub; result = 138020 }
00:00:00 i #77 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/stories.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\stories.md.pdf }
00:00:00 i #78 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.pdf.hangul.md.html }
00:00:00 i #78 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.mp3.hangul.md.html }
00:00:00 v #80 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:00 v #81 > e93e10423e6621a5538596571851d23a593252d3
00:00:00 d #82 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/dialects/korean.pdf.hangul.md.html; result = 10506 }
00:00:00 d #83 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/drugs/drugs.mp3.hangul.md.html; result = 10998 }
00:00:00 d #84 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\stories.md.pdf; new_path = c:/home/git/vault/dist/data/fiction/stories.md.pdf; result = 545333 }
00:00:00 v #85 > f5e82445d251df9ddf5c77ec561ad32ff1304781
00:00:00 i #86 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/stories.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\stories.md.html }
00:00:00 i #87 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.pdf.md.epub }
00:00:00 i #88 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.mp3.md.epub }
00:00:00 i #89 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\complexity-and-competition_pt-br.hangul.md.epub }
00:00:00 v #90 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:00 d #91 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.pdf.md.epub; new_path = c:/home/git/vault/dist/data/dialects/korean.pdf.md.epub; result = 5619 }
00:00:00 i #92 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.pdf.md.pdf }
00:00:00 d #94 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\stories.md.html; new_path = c:/home/git/vault/dist/data/fiction/stories.md.html; result = 486630 }
00:00:00 d #92 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.mp3.md.epub; new_path = c:/home/git/vault/dist/data/drugs/drugs.mp3.md.epub; result = 5676 }
00:00:00 i #95 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/stories.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\stories.hangul.md }
00:00:00 d #96 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\complexity-and-competition_pt-br.hangul.md.epub; new_path = c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.hangul.md.epub; result = 40361 }
00:00:00 i #97 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.mp3.md.pdf }
00:00:00 d #98 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/korean.pdf.md.pdf; result = 8555 }
00:00:00 i #99 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.pdf.md.html }
00:00:00 i #100 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\complexity-and-competition_pt-br.hangul.md.pdf }
00:00:00 d #101 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/drugs/drugs.mp3.md.pdf; result = 8824 }
00:00:00 d #102 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.pdf.md.html; new_path = c:/home/git/vault/dist/data/dialects/korean.pdf.md.html; result = 10326 }
00:00:00 i #103 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.mp3.md.html }
00:00:00 d #104 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\stories.hangul.md; new_path = c:/home/git/vault/dist/data/fiction/stories.hangul.md; result = 591526 }
00:00:00 d #105 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\complexity-and-competition_pt-br.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.hangul.md.pdf; result = 48381 }
00:00:00 i #106 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.pdf.hangul.md }
00:00:00 i #107 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\complexity-and-competition_pt-br.hangul.md.html }
00:00:00 d #108 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/dialects/korean.pdf.hangul.md; result = 518 }
00:00:00 i #109 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.hangul.md.epub }
00:00:00 d #110 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.mp3.md.html; new_path = c:/home/git/vault/dist/data/drugs/drugs.mp3.md.html; result = 10550 }
00:00:00 i #111 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.mp3.hangul.md }
00:00:00 d #112 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/drugs/drugs.mp3.hangul.md; result = 982 }
00:00:00 d #113 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\complexity-and-competition_pt-br.hangul.md.html; new_path = c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.hangul.md.html; result = 159575 }
00:00:00 i #114 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\complexity-and-competition_pt-br.md.epub }
00:00:00 d #115 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.hangul.md.epub; new_path = c:/home/git/vault/dist/data/ai/ai.hangul.md.epub; result = 77900 }
00:00:00 i #116 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.hangul.md.pdf }
00:00:00 d #117 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\complexity-and-competition_pt-br.md.epub; new_path = c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.md.epub; result = 35705 }
00:00:00 d #118 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/filmow/filmow.fc1943s.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/filmow/filmow.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:00 d #119 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/dialects/korean.png.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/dialects/korean.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:00 i #120 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\complexity-and-competition_pt-br.md.pdf }
00:00:00 d #121 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/ai/ai.hangul.md.pdf; result = 270471 }
00:00:00 i #122 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.hangul.md.html }
00:00:00 d #123 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/drugs/drugs.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/drugs/drugs.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:00 d #124 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\complexity-and-competition_pt-br.md.pdf; new_path = c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.md.pdf; result = 130346 }
00:00:00 i #125 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\complexity-and-competition_pt-br.md.html }
00:00:00 d #126 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.hangul.md.html; new_path = c:/home/git/vault/dist/data/ai/ai.hangul.md.html; result = 331977 }
00:00:00 v #126 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:00 i #128 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.md.epub }
00:00:00 d #129 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\complexity-and-competition_pt-br.md.html; new_path = c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.md.html; result = 110911 }
00:00:00 v #130 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:00 i #131 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\complexity-and-competition_pt-br.hangul.md }
00:00:00 d #132 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.md.epub; new_path = c:/home/git/vault/dist/data/ai/ai.md.epub; result = 68680 }
00:00:00 i #133 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.md.pdf }
00:00:00 i #134 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/dialects.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dialects.hangul.md.epub }
00:00:00 d #135 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\complexity-and-competition_pt-br.hangul.md; new_path = c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.hangul.md; result = 143161 }
00:00:00 d #136 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.md.pdf; new_path = c:/home/git/vault/dist/data/ai/ai.md.pdf; result = 214865 }
00:00:00 i #137 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.md.html }
00:00:00 d #138 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dialects.hangul.md.epub; new_path = c:/home/git/vault/dist/data/dialects/dialects.hangul.md.epub; result = 14754 }
00:00:00 i #139 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/dialects.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dialects.hangul.md.pdf }
00:00:00 d #140 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.md.html; new_path = c:/home/git/vault/dist/data/ai/ai.md.html; result = 227267 }
00:00:00 i #141 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/GirlOffGrid.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\GirlOffGrid.html.hangul.md.epub }
00:00:00 d #142 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/hip-hop/hip-hop.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/hip-hop/hip-hop.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:00 i #143 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.hangul.md }
00:00:00 d #144 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\GirlOffGrid.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/GirlOffGrid.html.hangul.md.epub; result = 5569 }
00:00:00 i #145 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/GirlOffGrid.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\GirlOffGrid.html.hangul.md.pdf }
00:00:00 d #146 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.hangul.md; new_path = c:/home/git/vault/dist/data/ai/ai.hangul.md; result = 300046 }
00:00:00 d #147 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dialects.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/dialects.hangul.md.pdf; result = 18125 }
00:00:00 i #148 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/dialects.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dialects.hangul.md.html }
00:00:00 d #149 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\GirlOffGrid.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/GirlOffGrid.html.hangul.md.pdf; result = 4626 }
00:00:00 i #150 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/GirlOffGrid.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\GirlOffGrid.html.hangul.md.html }
00:00:00 d #151 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dialects.hangul.md.html; new_path = c:/home/git/vault/dist/data/dialects/dialects.hangul.md.html; result = 55636 }
00:00:00 i #152 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/dialects.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dialects.md.epub }
00:00:00 d #153 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/ai/ai.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/ai/ai.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:00 d #154 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\GirlOffGrid.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/GirlOffGrid.html.hangul.md.html; result = 11683 }
00:00:00 d #155 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dialects.md.epub; new_path = c:/home/git/vault/dist/data/dialects/dialects.md.epub; result = 13689 }
00:00:00 i #156 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/GirlOffGrid.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\GirlOffGrid.html.md.epub }
00:00:00 i #157 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/dialects.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dialects.md.pdf }
00:00:00 d #158 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\GirlOffGrid.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/GirlOffGrid.html.md.epub; result = 5494 }
00:00:00 i #159 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/GirlOffGrid.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\GirlOffGrid.html.md.pdf }
00:00:00 d #160 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\GirlOffGrid.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/GirlOffGrid.html.md.pdf; result = 5019 }
00:00:00 d #161 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dialects.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/dialects.md.pdf; result = 44687 }
00:00:00 i #162 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/dialects.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dialects.md.html }
00:00:00 i #162 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/GirlOffGrid.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\GirlOffGrid.html.md.html }
00:00:00 d #164 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dialects.md.html; new_path = c:/home/git/vault/dist/data/dialects/dialects.md.html; result = 42513 }
00:00:00 d #164 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\GirlOffGrid.html.md.html; new_path = c:/home/git/vault/dist/data/chat/GirlOffGrid.html.md.html; result = 11642 }
00:00:00 i #166 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/dialects.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dialects.hangul.md }
00:00:00 i #167 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/GirlOffGrid.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\GirlOffGrid.html.hangul.md }
00:00:00 d #168 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dialects.hangul.md; new_path = c:/home/git/vault/dist/data/dialects/dialects.hangul.md; result = 36913 }
00:00:00 d #169 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/dialects/dialects.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/dialects/dialects.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:00 d #170 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\GirlOffGrid.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/GirlOffGrid.html.hangul.md; result = 152 }
00:00:00 d #171 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/HinakoHime.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/HinakoHime.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:00 v #172 > 'bc2fc4871a825475ed82471fa09ac9ead438a16f'
00:00:00 v #173 > '56ee19c0052ec69368954d0186b82fc57768f560'
00:00:00 v #174 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:00 d #175 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:00 v #176 > '41908b616ee0d23d4bf8e8d74c949bdd21a2abf3'
00:00:00 v #177 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:00 d #178 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/drugs/drugs.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/drugs/drugs.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:00 v #179 > '01521afcb2137c1e764ac68f071a5d357f1fd11b'
00:00:00 v #180 > 'cf4ab3213857e7332c4aa6d4298bceed4722422c'
00:00:00 v #181 > '41c27f4e0fbaa63ad44e6d51714f29b18cca7124'
00:00:00 v #182 > '9d8a58110fa4acf8f547c88b5246fdd2e2fce405'
00:00:00 v #183 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:00 d #184 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/filmow/filmow.fc1943s.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/filmow/filmow.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:00 v #185 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:00 d #186 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/hip-hop/hip-hop.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/hip-hop/hip-hop.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:00 v #187 > 'de3214502cd7688c3205782f465182caf2927a32'
00:00:00 v #188 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:00 d #189 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/dialects/dialects.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/dialects/dialects.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:00 v #190 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:00 v #191 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:00 d #192 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/ai/ai.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/ai/ai.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:00 d #193 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/dialects/korean.png.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/dialects/korean.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:00 v #194 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:00 d #195 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/HinakoHime.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/HinakoHime.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:00 v #196 > 56ee19c0052ec69368954d0186b82fc57768f560
00:00:00 v #197 > bc2fc4871a825475ed82471fa09ac9ead438a16f
00:00:00 v #198 > 01521afcb2137c1e764ac68f071a5d357f1fd11b
00:00:00 v #199 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:00 i #200 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.pdf.hangul.md.epub }
00:00:00 d #201 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/drugs/drugs.pdf.hangul.md.epub; result = 5722 }
00:00:00 i #202 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.pdf.hangul.md.pdf }
00:00:00 v #203 > 9d8a58110fa4acf8f547c88b5246fdd2e2fce405
00:00:00 v #204 > 41908b616ee0d23d4bf8e8d74c949bdd21a2abf3
00:00:00 d #205 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/drugs/drugs.pdf.hangul.md.pdf; result = 5145 }
00:00:00 i #206 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.pdf.hangul.md.html }
00:00:00 d #207 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/drugs/drugs.pdf.hangul.md.html; result = 10407 }
00:00:00 i #208 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.pdf.md.epub }
00:00:00 d #209 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.pdf.md.epub; new_path = c:/home/git/vault/dist/data/drugs/drugs.pdf.md.epub; result = 5587 }
00:00:00 i #210 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.pdf.md.pdf }
00:00:00 d #211 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/drugs/drugs.pdf.md.pdf; result = 8434 }
00:00:00 v #212 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:00 i #213 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.pdf.md.html }
00:00:00 i #214 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\o-caminho-demonico-dos-dados_pt-br.hangul.md.epub }
00:00:00 d #215 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.pdf.md.html; new_path = c:/home/git/vault/dist/data/drugs/drugs.pdf.md.html; result = 10256 }
00:00:00 i #216 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.pdf.hangul.md }
00:00:00 d #217 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\o-caminho-demonico-dos-dados_pt-br.hangul.md.epub; new_path = c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.hangul.md.epub; result = 69109 }
00:00:00 d #218 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/drugs/drugs.pdf.hangul.md; result = 419 }
00:00:00 i #219 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\o-caminho-demonico-dos-dados_pt-br.hangul.md.pdf }
00:00:00 d #220 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\o-caminho-demonico-dos-dados_pt-br.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.hangul.md.pdf; result = 79893 }
00:00:00 i #221 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\o-caminho-demonico-dos-dados_pt-br.hangul.md.html }
00:00:00 v #222 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:00 d #223 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\o-caminho-demonico-dos-dados_pt-br.hangul.md.html; new_path = c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.hangul.md.html; result = 293260 }
00:00:00 d #224 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/drugs/selva-verde_pt-br.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/drugs/selva-verde_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:00 i #225 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\o-caminho-demonico-dos-dados_pt-br.md.epub }
00:00:00 v #226 > cf4ab3213857e7332c4aa6d4298bceed4722422c
00:00:00 i #227 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hip-hop/hip-hop.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hip-hop.hangul.md.epub }
00:00:00 d #228 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\o-caminho-demonico-dos-dados_pt-br.md.epub; new_path = c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.md.epub; result = 61781 }
00:00:00 i #229 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\o-caminho-demonico-dos-dados_pt-br.md.pdf }
00:00:00 d #230 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hip-hop.hangul.md.epub; new_path = c:/home/git/vault/dist/data/hip-hop/hip-hop.hangul.md.epub; result = 204399 }
00:00:00 v #231 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:00 i #231 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hip-hop/hip-hop.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hip-hop.hangul.md.pdf }
00:00:00 v #233 > de3214502cd7688c3205782f465182caf2927a32
00:00:00 v #234 > 41c27f4e0fbaa63ad44e6d51714f29b18cca7124
00:00:00 d #235 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\o-caminho-demonico-dos-dados_pt-br.md.pdf; new_path = c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.md.pdf; result = 230927 }
00:00:00 d #236 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hip-hop.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/hip-hop/hip-hop.hangul.md.pdf; result = 218135 }
00:00:00 i #237 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\o-caminho-demonico-dos-dados_pt-br.md.html }
00:00:00 i #238 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hip-hop/hip-hop.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hip-hop.hangul.md.html }
00:00:00 v #239 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:00 d #240 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\o-caminho-demonico-dos-dados_pt-br.md.html; new_path = c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.md.html; result = 204770 }
00:00:00 i #241 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\o-caminho-demonico-dos-dados_pt-br.hangul.md }
00:00:00 i #242 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/filmow/filmow.fc1943s.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\filmow.fc1943s.hangul.md.epub }
00:00:00 d #243 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\o-caminho-demonico-dos-dados_pt-br.hangul.md; new_path = c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.hangul.md; result = 267218 }
00:00:00 i #244 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/dialects.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dialects.pdf.hangul.md.epub }
00:00:00 d #245 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hip-hop.hangul.md.html; new_path = c:/home/git/vault/dist/data/hip-hop/hip-hop.hangul.md.html; result = 901844 }
00:00:00 d #246 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\filmow.fc1943s.hangul.md.epub; new_path = c:/home/git/vault/dist/data/filmow/filmow.fc1943s.hangul.md.epub; result = 5511 }
00:00:00 i #247 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hip-hop/hip-hop.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hip-hop.md.epub }
00:00:00 i #248 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/filmow/filmow.fc1943s.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\filmow.fc1943s.hangul.md.pdf }
00:00:00 d #249 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dialects.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/dialects/dialects.pdf.hangul.md.epub; result = 5727 }
00:00:00 i #250 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/dialects.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dialects.pdf.hangul.md.pdf }
00:00:00 d #251 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\filmow.fc1943s.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/filmow/filmow.fc1943s.hangul.md.pdf; result = 4534 }
00:00:00 d #252 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dialects.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/dialects.pdf.hangul.md.pdf; result = 4865 }
00:00:00 d #253 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hip-hop.md.epub; new_path = c:/home/git/vault/dist/data/hip-hop/hip-hop.md.epub; result = 180054 }
00:00:00 i #254 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hip-hop/hip-hop.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hip-hop.md.pdf }
00:00:00 i #255 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/dialects.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dialects.pdf.hangul.md.html }
00:00:00 i #255 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/filmow/filmow.fc1943s.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\filmow.fc1943s.hangul.md.html }
00:00:00 d #257 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/magic/the-book-of-remembering_pt-br.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/magic/the-book-of-remembering_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:00 d #258 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dialects.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/dialects/dialects.pdf.hangul.md.html; result = 10426 }
00:00:00 d #259 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\filmow.fc1943s.hangul.md.html; new_path = c:/home/git/vault/dist/data/filmow/filmow.fc1943s.hangul.md.html; result = 10083 }
00:00:00 i #260 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/dialects.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dialects.pdf.md.epub }
00:00:00 d #261 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hip-hop.md.pdf; new_path = c:/home/git/vault/dist/data/hip-hop/hip-hop.md.pdf; result = 629891 }
00:00:00 i #262 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/filmow/filmow.fc1943s.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\filmow.fc1943s.md.epub }
00:00:00 i #262 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hip-hop/hip-hop.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hip-hop.md.html }
00:00:00 d #264 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dialects.pdf.md.epub; new_path = c:/home/git/vault/dist/data/dialects/dialects.pdf.md.epub; result = 5592 }
00:00:00 v #265 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:00 i #266 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/dialects.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dialects.pdf.md.pdf }
00:00:00 d #267 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\filmow.fc1943s.md.epub; new_path = c:/home/git/vault/dist/data/filmow/filmow.fc1943s.md.epub; result = 5448 }
00:00:00 d #268 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hip-hop.md.html; new_path = c:/home/git/vault/dist/data/hip-hop/hip-hop.md.html; result = 632523 }
00:00:00 i #269 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/filmow/filmow.fc1943s.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\filmow.fc1943s.md.pdf }
00:00:00 d #270 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dialects.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/dialects.pdf.md.pdf; result = 8318 }
00:00:00 i #271 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hip-hop/hip-hop.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hip-hop.hangul.md }
00:00:00 i #272 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/dialects.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dialects.pdf.md.html }
00:00:00 d #273 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\filmow.fc1943s.md.pdf; new_path = c:/home/git/vault/dist/data/filmow/filmow.fc1943s.md.pdf; result = 6270 }
00:00:00 v #274 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:00 i #275 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/filmow/filmow.fc1943s.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\filmow.fc1943s.md.html }
00:00:00 i #275 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.png.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.png.hangul.md.epub }
00:00:00 d #277 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dialects.pdf.md.html; new_path = c:/home/git/vault/dist/data/dialects/dialects.pdf.md.html; result = 10266 }
00:00:00 d #278 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hip-hop.hangul.md; new_path = c:/home/git/vault/dist/data/hip-hop/hip-hop.hangul.md; result = 795535 }
00:00:00 i #279 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/dialects.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dialects.pdf.hangul.md }
00:00:00 v #280 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:00 d #281 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\filmow.fc1943s.md.html; new_path = c:/home/git/vault/dist/data/filmow/filmow.fc1943s.md.html; result = 10056 }
00:00:00 d #282 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.png.hangul.md.epub; new_path = c:/home/git/vault/dist/data/dialects/korean.png.hangul.md.epub; result = 5892 }
00:00:00 d #283 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dialects.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/dialects/dialects.pdf.hangul.md; result = 438 }
00:00:00 i #284 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.png.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.png.hangul.md.pdf }
00:00:00 i #285 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/filmow/filmow.fc1943s.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\filmow.fc1943s.hangul.md }
00:00:00 d #286 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.png.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/korean.png.hangul.md.pdf; result = 2464 }
00:00:00 d #287 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/history/history.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/history/history.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:00 d #288 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\filmow.fc1943s.hangul.md; new_path = c:/home/git/vault/dist/data/filmow/filmow.fc1943s.hangul.md; result = 103 }
00:00:00 i #289 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.png.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.png.hangul.md.html }
00:00:00 i #290 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/HinakoHime.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\HinakoHime.html.hangul.md.epub }
00:00:00 d #291 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/dialects/english.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/dialects/english.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:00 d #293 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\HinakoHime.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/HinakoHime.html.hangul.md.epub; result = 5563 }
00:00:00 d #292 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.png.hangul.md.html; new_path = c:/home/git/vault/dist/data/dialects/korean.png.hangul.md.html; result = 11145 }
00:00:00 i #294 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.mp3.hangul.md.epub }
00:00:00 i #295 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/HinakoHime.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\HinakoHime.html.hangul.md.pdf }
00:00:00 i #296 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.png.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.png.md.epub }
00:00:00 d #297 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\HinakoHime.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/HinakoHime.html.hangul.md.pdf; result = 4626 }
00:00:00 d #298 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/ai/ai.mp3.hangul.md.epub; result = 6231 }
00:00:00 i #299 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/HinakoHime.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\HinakoHime.html.hangul.md.html }
00:00:00 i #301 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.mp3.hangul.md.pdf }
00:00:00 d #302 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.png.md.epub; new_path = c:/home/git/vault/dist/data/dialects/korean.png.md.epub; result = 5706 }
00:00:00 d #299 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/filmow/filmow.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/filmow/filmow.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:00 i #303 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.png.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.png.md.pdf }
00:00:00 d #304 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\HinakoHime.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/HinakoHime.html.hangul.md.html; result = 11677 }
00:00:00 d #305 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/ai/ai.mp3.hangul.md.pdf; result = 4899 }
00:00:00 i #306 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.mp3.hangul.md.html }
00:00:00 i #307 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/HinakoHime.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\HinakoHime.html.md.epub }
00:00:00 d #308 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.png.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/korean.png.md.pdf; result = 2466 }
00:00:00 i #309 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.png.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.png.md.html }
00:00:00 d #310 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\HinakoHime.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/HinakoHime.html.md.epub; result = 5494 }
00:00:00 d #310 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/ai/ai.mp3.hangul.md.html; result = 13563 }
00:00:00 i #312 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.mp3.md.epub }
00:00:00 i #313 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/HinakoHime.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\HinakoHime.html.md.pdf }
00:00:00 d #314 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.mp3.md.epub; new_path = c:/home/git/vault/dist/data/ai/ai.mp3.md.epub; result = 5964 }
00:00:00 d #315 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\HinakoHime.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/HinakoHime.html.md.pdf; result = 4912 }
00:00:00 i #316 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.mp3.md.pdf }
00:00:00 i #317 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/HinakoHime.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\HinakoHime.html.md.html }
00:00:00 d #318 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\HinakoHime.html.md.html; new_path = c:/home/git/vault/dist/data/chat/HinakoHime.html.md.html; result = 11641 }
00:00:00 d #319 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.png.md.html; new_path = c:/home/git/vault/dist/data/dialects/korean.png.md.html; result = 10739 }
00:00:00 i #320 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/HinakoHime.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\HinakoHime.html.hangul.md }
00:00:00 i #321 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.png.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.png.hangul.md }
00:00:00 d #322 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/ai/ai.mp3.md.pdf; result = 10630 }
00:00:00 d #323 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\HinakoHime.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/HinakoHime.html.hangul.md; result = 146 }
00:00:00 i #324 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.mp3.md.html }
00:00:00 d #325 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.png.hangul.md; new_path = c:/home/git/vault/dist/data/dialects/korean.png.hangul.md; result = 1018 }
00:00:00 d #326 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.mp3.md.html; new_path = c:/home/git/vault/dist/data/ai/ai.mp3.md.html; result = 12131 }
00:00:00 i #327 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.mp3.hangul.md }
00:00:00 d #328 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/ImperialKiss.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/ImperialKiss.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:00 d #329 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/ai/ai.mp3.hangul.md; result = 3316 }
00:00:00 d #330 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/dialects/portuguese.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/dialects/portuguese.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:00 d #331 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/ai/ai.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/ai/ai.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:00 v #332 > '0a6f0097bf5c439e2a73990bdd489709029ecc19'
00:00:00 v #333 > '48dcc245fdab8c3eb81effb7c26587051a8741e8'
00:00:00 v #333 > 'f014c8e3c31d9f07da79aab6bae53f0d944e95be'
00:00:00 v #335 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:00 d #336 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:00 v #337 > '094c61b8db2dc16a5a80d1b7dcc16cadde7b3c7e'
00:00:00 v #338 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:00 d #339 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/filmow/filmow.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/filmow/filmow.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:00 v #340 > '774732b6fcb822c743c608aef727c05b0694c557'
00:00:00 v #341 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:00 d #342 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:00 v #343 > '56ff044e3443dc01d62c5d2f0f72ea826c4dacb1'
00:00:00 v #344 > '42cdf7b6ccd8f267a0ab14ed4302d2666126f920'
00:00:00 v #345 > 'd1f86efd6a618fd5e2c37d84ff58297aab9949b4'
00:00:00 v #346 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:00 d #347 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/dialects/english.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/dialects/english.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:00 v #348 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:00 d #349 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/ImperialKiss.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/ImperialKiss.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:00 v #350 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:00 v #351 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:00 d #352 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/ai/ai.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/ai/ai.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:00 d #353 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/history/history.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/history/history.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:00 v #354 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:00 d #355 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/dialects/portuguese.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/dialects/portuguese.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:00 v #356 > 0a6f0097bf5c439e2a73990bdd489709029ecc19
00:00:01 v #357 > f014c8e3c31d9f07da79aab6bae53f0d944e95be
00:00:01 v #358 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:01 i #359 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\selva-verde_pt-br.hangul.md.epub }
00:00:01 d #360 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\selva-verde_pt-br.hangul.md.epub; new_path = c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.hangul.md.epub; result = 32678 }
00:00:01 i #361 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\selva-verde_pt-br.hangul.md.pdf }
00:00:01 d #362 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\selva-verde_pt-br.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.hangul.md.pdf; result = 33909 }
00:00:01 i #363 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\selva-verde_pt-br.hangul.md.html }
00:00:01 d #364 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\selva-verde_pt-br.hangul.md.html; new_path = c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.hangul.md.html; result = 116541 }
00:00:01 i #365 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\selva-verde_pt-br.md.epub }
00:00:01 d #366 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\selva-verde_pt-br.md.epub; new_path = c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.md.epub; result = 28816 }
00:00:01 i #367 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\selva-verde_pt-br.md.pdf }
00:00:01 v #368 > 48dcc245fdab8c3eb81effb7c26587051a8741e8
00:00:01 d #369 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\selva-verde_pt-br.md.pdf; new_path = c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.md.pdf; result = 96826 }
00:00:01 i #370 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\selva-verde_pt-br.md.html }
00:00:01 d #371 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\selva-verde_pt-br.md.html; new_path = c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.md.html; result = 81574 }
00:00:01 i #372 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\selva-verde_pt-br.hangul.md }
00:00:01 v #373 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:01 d #374 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\selva-verde_pt-br.hangul.md; new_path = c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.hangul.md; result = 102468 }
00:00:01 i #375 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/filmow/filmow.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\filmow.html.hangul.md.epub }
00:00:01 d #376 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/economy/만리마속도_pt-br.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/economy/만리마속도_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:01 d #377 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\filmow.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/filmow/filmow.html.hangul.md.epub; result = 5787 }
00:00:01 v #378 > 774732b6fcb822c743c608aef727c05b0694c557
00:00:01 i #379 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/filmow/filmow.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\filmow.html.hangul.md.pdf }
00:00:01 d #380 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\filmow.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/filmow/filmow.html.hangul.md.pdf; result = 5321 }
00:00:01 i #381 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/filmow/filmow.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\filmow.html.hangul.md.html }
00:00:01 v #382 > 094c61b8db2dc16a5a80d1b7dcc16cadde7b3c7e
00:00:01 d #383 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\filmow.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/filmow/filmow.html.hangul.md.html; result = 14722 }
00:00:01 i #384 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/filmow/filmow.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\filmow.html.md.epub }
00:00:01 d #385 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\filmow.html.md.epub; new_path = c:/home/git/vault/dist/data/filmow/filmow.html.md.epub; result = 5627 }
00:00:01 i #386 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/filmow/filmow.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\filmow.html.md.pdf }
00:00:01 v #387 > 56ff044e3443dc01d62c5d2f0f72ea826c4dacb1
00:00:01 d #388 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\filmow.html.md.pdf; new_path = c:/home/git/vault/dist/data/filmow/filmow.html.md.pdf; result = 8657 }
00:00:01 i #389 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/filmow/filmow.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\filmow.html.md.html }
00:00:01 d #390 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\filmow.html.md.html; new_path = c:/home/git/vault/dist/data/filmow/filmow.html.md.html; result = 13836 }
00:00:01 i #391 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/filmow/filmow.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\filmow.html.hangul.md }
00:00:01 d #392 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\filmow.html.hangul.md; new_path = c:/home/git/vault/dist/data/filmow/filmow.html.hangul.md; result = 3064 }
00:00:01 v #393 > 42cdf7b6ccd8f267a0ab14ed4302d2666126f920
00:00:01 d #394 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/fitness/fitness.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/fitness/fitness.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:01 v #395 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:01 i #396 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-remembering_pt-br.hangul.md.epub }
00:00:01 v #397 > d1f86efd6a618fd5e2c37d84ff58297aab9949b4
00:00:01 v #398 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:01 d #399 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-remembering_pt-br.hangul.md.epub; new_path = c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.hangul.md.epub; result = 195458 }
00:00:01 i #400 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-remembering_pt-br.hangul.md.pdf }
00:00:01 d #401 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-remembering_pt-br.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.hangul.md.pdf; result = 203453 }
00:00:01 i #402 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-remembering_pt-br.hangul.md.html }
00:00:01 v #403 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:01 i #404 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/ImperialKiss.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ImperialKiss.html.hangul.md.epub }
00:00:01 d #405 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-remembering_pt-br.hangul.md.html; new_path = c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.hangul.md.html; result = 786300 }
00:00:01 i #406 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-remembering_pt-br.md.epub }
00:00:01 d #407 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ImperialKiss.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/ImperialKiss.html.hangul.md.epub; result = 5567 }
00:00:01 i #408 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/english.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\english.hangul.md.epub }
00:00:01 d #409 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-remembering_pt-br.md.epub; new_path = c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.md.epub; result = 171495 }
00:00:01 i #410 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/ImperialKiss.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ImperialKiss.html.hangul.md.pdf }
00:00:01 d #411 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\english.hangul.md.epub; new_path = c:/home/git/vault/dist/data/dialects/english.hangul.md.epub; result = 11327 }
00:00:01 i #412 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-remembering_pt-br.md.pdf }
00:00:01 i #413 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/english.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\english.hangul.md.pdf }
00:00:01 d #414 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ImperialKiss.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/ImperialKiss.html.hangul.md.pdf; result = 4626 }
00:00:01 i #415 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/ImperialKiss.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ImperialKiss.html.hangul.md.html }
00:00:01 d #416 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-remembering_pt-br.md.pdf; new_path = c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.md.pdf; result = 617393 }
00:00:01 i #417 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-remembering_pt-br.md.html }
00:00:01 d #418 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ImperialKiss.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/ImperialKiss.html.hangul.md.html; result = 11683 }
00:00:01 v #419 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:01 i #420 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/ImperialKiss.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ImperialKiss.html.md.epub }
00:00:01 d #421 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-remembering_pt-br.md.html; new_path = c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.md.html; result = 540206 }
00:00:01 d #422 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ImperialKiss.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/ImperialKiss.html.md.epub; result = 5496 }
00:00:01 i #423 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-remembering_pt-br.hangul.md }
00:00:01 i #424 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/ImperialKiss.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ImperialKiss.html.md.pdf }
00:00:01 d #425 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\english.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/english.hangul.md.pdf; result = 7596 }
00:00:01 d #426 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ImperialKiss.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/ImperialKiss.html.md.pdf; result = 4864 }
00:00:01 d #427 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-remembering_pt-br.hangul.md; new_path = c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.hangul.md; result = 739723 }
00:00:01 i #428 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/history/history.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\history.hangul.md.epub }
00:00:01 i #429 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/ImperialKiss.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ImperialKiss.html.md.html }
00:00:01 d #430 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\history.hangul.md.epub; new_path = c:/home/git/vault/dist/data/history/history.hangul.md.epub; result = 12772 }
00:00:01 d #431 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ImperialKiss.html.md.html; new_path = c:/home/git/vault/dist/data/chat/ImperialKiss.html.md.html; result = 11643 }
00:00:01 i #432 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/history/history.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\history.hangul.md.pdf }
00:00:01 i #433 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/ImperialKiss.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ImperialKiss.html.hangul.md }
00:00:01 d #434 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/martial-arts/martial-arts.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/martial-arts/martial-arts.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:01 d #435 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ImperialKiss.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/ImperialKiss.html.hangul.md; result = 152 }
00:00:01 i #436 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/english.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\english.hangul.md.html }
00:00:01 d #437 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\english.hangul.md.html; new_path = c:/home/git/vault/dist/data/dialects/english.hangul.md.html; result = 27975 }
00:00:01 i #438 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/english.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\english.md.epub }
00:00:01 d #439 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\english.md.epub; new_path = c:/home/git/vault/dist/data/dialects/english.md.epub; result = 10376 }
00:00:01 i #440 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/english.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\english.md.pdf }
00:00:01 d #441 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/JALYN.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/JALYN.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:01 v #442 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:01 v #443 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:01 d #444 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\history.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/history/history.hangul.md.pdf; result = 13016 }
00:00:01 d #445 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\english.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/english.md.pdf; result = 22689 }
00:00:01 i #446 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/history/history.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\history.hangul.md.html }
00:00:01 i #447 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/english.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\english.md.html }
00:00:01 d #448 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\english.md.html; new_path = c:/home/git/vault/dist/data/dialects/english.md.html; result = 22049 }
00:00:01 i #449 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/english.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\english.hangul.md }
00:00:01 i #450 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/portuguese.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\portuguese.hangul.md.epub }
00:00:01 d #451 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\history.hangul.md.html; new_path = c:/home/git/vault/dist/data/history/history.hangul.md.html; result = 39849 }
00:00:01 i #452 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.pdf.hangul.md.epub }
00:00:01 d #453 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\english.hangul.md; new_path = c:/home/git/vault/dist/data/dialects/english.hangul.md; result = 16757 }
00:00:01 i #454 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/history/history.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\history.md.epub }
00:00:01 d #455 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/dialects/korean.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/dialects/korean.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:01 d #456 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\portuguese.hangul.md.epub; new_path = c:/home/git/vault/dist/data/dialects/portuguese.hangul.md.epub; result = 10344 }
00:00:01 d #457 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/ai/ai.pdf.hangul.md.epub; result = 5671 }
00:00:01 d #458 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\history.md.epub; new_path = c:/home/git/vault/dist/data/history/history.md.epub; result = 11762 }
00:00:01 i #459 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/portuguese.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\portuguese.hangul.md.pdf }
00:00:01 i #460 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.pdf.hangul.md.pdf }
00:00:01 i #461 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/history/history.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\history.md.pdf }
00:00:01 d #462 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\portuguese.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/portuguese.hangul.md.pdf; result = 8568 }
00:00:01 d #463 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/ai/ai.pdf.hangul.md.pdf; result = 4712 }
00:00:01 i #464 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/portuguese.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\portuguese.hangul.md.html }
00:00:01 d #465 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\history.md.pdf; new_path = c:/home/git/vault/dist/data/history/history.md.pdf; result = 34189 }
00:00:01 i #466 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/history/history.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\history.md.html }
00:00:01 i #467 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.pdf.hangul.md.html }
00:00:01 d #468 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\portuguese.hangul.md.html; new_path = c:/home/git/vault/dist/data/dialects/portuguese.hangul.md.html; result = 31204 }
00:00:01 i #469 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/portuguese.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\portuguese.md.epub }
00:00:01 d #470 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\history.md.html; new_path = c:/home/git/vault/dist/data/history/history.md.html; result = 31531 }
00:00:01 d #471 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/ai/ai.pdf.hangul.md.html; result = 10345 }
00:00:01 i #472 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/history/history.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\history.hangul.md }
00:00:01 d #473 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\portuguese.md.epub; new_path = c:/home/git/vault/dist/data/dialects/portuguese.md.epub; result = 9453 }
00:00:01 d #474 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\history.hangul.md; new_path = c:/home/git/vault/dist/data/history/history.hangul.md; result = 23503 }
00:00:01 i #475 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.pdf.md.epub }
00:00:01 i #476 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/portuguese.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\portuguese.md.pdf }
00:00:01 d #477 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/history/history.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/history/history.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:01 d #478 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.pdf.md.epub; new_path = c:/home/git/vault/dist/data/ai/ai.pdf.md.epub; result = 5549 }
00:00:01 d #479 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\portuguese.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/portuguese.md.pdf; result = 23477 }
00:00:01 i #480 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/portuguese.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\portuguese.md.html }
00:00:01 i #481 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.pdf.md.pdf }
00:00:01 d #482 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\portuguese.md.html; new_path = c:/home/git/vault/dist/data/dialects/portuguese.md.html; result = 25635 }
00:00:01 d #483 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/ai/ai.pdf.md.pdf; result = 7659 }
00:00:01 i #484 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/portuguese.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\portuguese.hangul.md }
00:00:01 d #485 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\portuguese.hangul.md; new_path = c:/home/git/vault/dist/data/dialects/portuguese.hangul.md; result = 17654 }
00:00:01 i #486 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.pdf.md.html }
00:00:01 v #487 > 'ac4e96ed15d66d20d52a5acd366302ee1fa2c75c'
00:00:01 d #488 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.pdf.md.html; new_path = c:/home/git/vault/dist/data/ai/ai.pdf.md.html; result = 10204 }
00:00:01 d #489 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/dialects/spanish.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/dialects/spanish.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:01 i #490 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.pdf.hangul.md }
00:00:01 d #491 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/ai/ai.pdf.hangul.md; result = 377 }
00:00:01 d #492 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/ai/chatgpt.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/ai/chatgpt.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:01 v #493 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:01 d #494 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/economy/만리마속도_pt-br.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/economy/만리마속도_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:01 v #495 > '24833b2f816481cdd369f731b8c534211a13069c'
00:00:01 v #496 > 'e2a97d576e8c00a85dd8a963faa6b0bd07588818'
00:00:01 v #497 > '23758be8f32af0fbd2cdcafa908f9b54cc000dc7'
00:00:01 v #498 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:01 d #499 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/fitness/fitness.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/fitness/fitness.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:01 v #500 > '5e27ade0698b4ee7994791fd595a4fcbdcf49b21'
00:00:01 v #501 > 'b61ba948805fe014979b6a8ed1873009ba516603'
00:00:01 v #502 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:01 v #503 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:01 d #504 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/JALYN.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/JALYN.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:01 d #505 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/dialects/korean.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/dialects/korean.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:01 v #506 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:01 d #507 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/martial-arts/martial-arts.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/martial-arts/martial-arts.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:01 v #508 > '6e0a5e5f4b8e22db3ef519cf6b1c5834c60896be'
00:00:01 v #509 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:01 d #510 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/history/history.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/history/history.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:01 v #511 > '9e9633005f4854af5132be43c52c81f1abc3118c'
00:00:01 v #512 > ac4e96ed15d66d20d52a5acd366302ee1fa2c75c
00:00:01 v #513 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:01 v #513 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:01 d #515 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/ai/chatgpt.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/ai/chatgpt.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:01 d #516 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/dialects/spanish.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/dialects/spanish.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:01 v #517 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:01 i #518 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/economy/만리마속도_pt-br.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\만리마속도_pt-br.hangul.md.epub }
00:00:01 d #519 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\만리마속도_pt-br.hangul.md.epub; new_path = c:/home/git/vault/dist/data/economy/만리마속도_pt-br.hangul.md.epub; result = 319445 }
00:00:01 i #520 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/economy/만리마속도_pt-br.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\만리마속도_pt-br.hangul.md.pdf }
00:00:01 d #521 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\만리마속도_pt-br.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/economy/만리마속도_pt-br.hangul.md.pdf; result = 331490 }
00:00:01 v #522 > 24833b2f816481cdd369f731b8c534211a13069c
00:00:01 i #523 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/economy/만리마속도_pt-br.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\만리마속도_pt-br.hangul.md.html }
00:00:01 d #524 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\만리마속도_pt-br.hangul.md.html; new_path = c:/home/git/vault/dist/data/economy/만리마속도_pt-br.hangul.md.html; result = 1335933 }
00:00:01 i #525 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/economy/만리마속도_pt-br.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\만리마속도_pt-br.md.epub }
00:00:01 d #526 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\만리마속도_pt-br.md.epub; new_path = c:/home/git/vault/dist/data/economy/만리마속도_pt-br.md.epub; result = 279819 }
00:00:01 i #527 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/economy/만리마속도_pt-br.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\만리마속도_pt-br.md.pdf }
00:00:01 d #528 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\만리마속도_pt-br.md.pdf; new_path = c:/home/git/vault/dist/data/economy/만리마속도_pt-br.md.pdf; result = 977530 }
00:00:01 i #529 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/economy/만리마속도_pt-br.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\만리마속도_pt-br.md.html }
00:00:01 v #530 > 23758be8f32af0fbd2cdcafa908f9b54cc000dc7
00:00:01 v #531 > 5e27ade0698b4ee7994791fd595a4fcbdcf49b21
00:00:01 d #532 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\만리마속도_pt-br.md.html; new_path = c:/home/git/vault/dist/data/economy/만리마속도_pt-br.md.html; result = 903159 }
00:00:01 i #533 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/economy/만리마속도_pt-br.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\만리마속도_pt-br.hangul.md }
00:00:01 v #534 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:01 d #535 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\만리마속도_pt-br.hangul.md; new_path = c:/home/git/vault/dist/data/economy/만리마속도_pt-br.hangul.md; result = 1272473 }
00:00:01 v #536 > e2a97d576e8c00a85dd8a963faa6b0bd07588818
00:00:01 i #537 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fitness/fitness.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fitness.hangul.md.epub }
00:00:01 d #538 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/engineering/engineering.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/engineering/engineering.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:01 d #539 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fitness.hangul.md.epub; new_path = c:/home/git/vault/dist/data/fitness/fitness.hangul.md.epub; result = 7127 }
00:00:01 i #540 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fitness/fitness.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fitness.hangul.md.pdf }
00:00:01 d #541 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fitness.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/fitness/fitness.hangul.md.pdf; result = 7244 }
00:00:01 i #542 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fitness/fitness.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fitness.hangul.md.html }
00:00:01 d #543 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fitness.hangul.md.html; new_path = c:/home/git/vault/dist/data/fitness/fitness.hangul.md.html; result = 14757 }
00:00:01 i #544 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fitness/fitness.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fitness.md.epub }
00:00:01 d #545 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fitness.md.epub; new_path = c:/home/git/vault/dist/data/fitness/fitness.md.epub; result = 6723 }
00:00:01 i #546 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fitness/fitness.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fitness.md.pdf }
00:00:01 d #547 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fitness.md.pdf; new_path = c:/home/git/vault/dist/data/fitness/fitness.md.pdf; result = 18508 }
00:00:01 i #548 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fitness/fitness.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fitness.md.html }
00:00:01 d #549 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fitness.md.html; new_path = c:/home/git/vault/dist/data/fitness/fitness.md.html; result = 13224 }
00:00:01 i #550 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fitness/fitness.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fitness.hangul.md }
00:00:01 v #551 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:01 d #552 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fitness.hangul.md; new_path = c:/home/git/vault/dist/data/fitness/fitness.hangul.md; result = 4527 }
00:00:01 v #553 > b61ba948805fe014979b6a8ed1873009ba516603
00:00:01 v #554 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:01 v #555 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:01 d #556 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/food/food.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/food/food.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:01 i #557 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.html.hangul.md.epub }
00:00:01 i #557 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/martial-arts/martial-arts.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\martial-arts.hangul.md.epub }
00:00:01 d #559 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/dialects/korean.html.hangul.md.epub; result = 5825 }
00:00:01 d #560 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\martial-arts.hangul.md.epub; new_path = c:/home/git/vault/dist/data/martial-arts/martial-arts.hangul.md.epub; result = 38033 }
00:00:01 i #561 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.html.hangul.md.pdf }
00:00:01 i #561 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/martial-arts/martial-arts.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\martial-arts.hangul.md.pdf }
00:00:01 d #563 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/korean.html.hangul.md.pdf; result = 4703 }
00:00:01 i #564 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.html.hangul.md.html }
00:00:01 i #564 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/JALYN.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\JALYN.html.hangul.md.epub }
00:00:01 d #566 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\martial-arts.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/martial-arts/martial-arts.hangul.md.pdf; result = 44090 }
00:00:01 d #567 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\JALYN.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/JALYN.html.hangul.md.epub; result = 5559 }
00:00:01 d #568 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/dialects/korean.html.hangul.md.html; result = 13006 }
00:00:01 i #569 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/martial-arts/martial-arts.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\martial-arts.hangul.md.html }
00:00:01 i #570 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.html.md.epub }
00:00:01 i #571 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/JALYN.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\JALYN.html.hangul.md.pdf }
00:00:01 d #572 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.html.md.epub; new_path = c:/home/git/vault/dist/data/dialects/korean.html.md.epub; result = 5668 }
00:00:01 d #572 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\JALYN.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/JALYN.html.hangul.md.pdf; result = 4629 }
00:00:01 d #574 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\martial-arts.hangul.md.html; new_path = c:/home/git/vault/dist/data/martial-arts/martial-arts.hangul.md.html; result = 188516 }
00:00:01 i #575 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/martial-arts/martial-arts.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\martial-arts.md.epub }
00:00:01 i #576 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/JALYN.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\JALYN.html.hangul.md.html }
00:00:01 i #577 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.html.md.pdf }
00:00:01 d #578 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\martial-arts.md.epub; new_path = c:/home/git/vault/dist/data/martial-arts/martial-arts.md.epub; result = 33383 }
00:00:01 d #579 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.html.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/korean.html.md.pdf; result = 8992 }
00:00:01 d #580 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\JALYN.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/JALYN.html.hangul.md.html; result = 11668 }
00:00:01 i #581 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.html.md.html }
00:00:01 i #582 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/martial-arts/martial-arts.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\martial-arts.md.pdf }
00:00:01 i #583 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/JALYN.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\JALYN.html.md.epub }
00:00:01 d #584 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.html.md.html; new_path = c:/home/git/vault/dist/data/dialects/korean.html.md.html; result = 12334 }
00:00:01 d #585 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\martial-arts.md.pdf; new_path = c:/home/git/vault/dist/data/martial-arts/martial-arts.md.pdf; result = 133631 }
00:00:01 i #586 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/martial-arts/martial-arts.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\martial-arts.md.html }
00:00:01 i #587 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.html.hangul.md }
00:00:01 d #588 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.html.hangul.md; new_path = c:/home/git/vault/dist/data/dialects/korean.html.hangul.md; result = 2149 }
00:00:01 d #589 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\JALYN.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/JALYN.html.md.epub; result = 5493 }
00:00:01 d #590 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\martial-arts.md.html; new_path = c:/home/git/vault/dist/data/martial-arts/martial-arts.md.html; result = 131276 }
00:00:01 i #591 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/martial-arts/martial-arts.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\martial-arts.hangul.md }
00:00:01 i #592 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/JALYN.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\JALYN.html.md.pdf }
00:00:01 d #593 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\martial-arts.hangul.md; new_path = c:/home/git/vault/dist/data/martial-arts/martial-arts.hangul.md; result = 156203 }
00:00:01 d #594 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\JALYN.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/JALYN.html.md.pdf; result = 5097 }
00:00:01 d #595 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/dialects/korean.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/dialects/korean.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:01 i #596 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/JALYN.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\JALYN.html.md.html }
00:00:01 d #597 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\JALYN.html.md.html; new_path = c:/home/git/vault/dist/data/chat/JALYN.html.md.html; result = 11636 }
00:00:01 d #598 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/math/math.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/math/math.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:01 i #599 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/JALYN.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\JALYN.html.hangul.md }
00:00:01 d #600 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\JALYN.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/JALYN.html.hangul.md; result = 137 }
00:00:01 v #601 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:01 d #602 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Jully_Lov.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Jully_Lov.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:01 i #603 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/history/history.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\history.mp3.hangul.md.epub }
00:00:01 d #604 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\history.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/history/history.mp3.hangul.md.epub; result = 6081 }
00:00:01 i #605 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/history/history.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\history.mp3.hangul.md.pdf }
00:00:01 d #606 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\history.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/history/history.mp3.hangul.md.pdf; result = 4473 }
00:00:01 i #607 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/history/history.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\history.mp3.hangul.md.html }
00:00:01 d #608 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\history.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/history/history.mp3.hangul.md.html; result = 11788 }
00:00:01 i #609 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/history/history.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\history.mp3.md.epub }
00:00:01 d #610 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\history.mp3.md.epub; new_path = c:/home/git/vault/dist/data/history/history.mp3.md.epub; result = 5829 }
00:00:01 i #611 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/history/history.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\history.mp3.md.pdf }
00:00:01 d #612 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\history.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/history/history.mp3.md.pdf; result = 9793 }
00:00:01 i #613 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/history/history.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\history.mp3.md.html }
00:00:01 d #614 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\history.mp3.md.html; new_path = c:/home/git/vault/dist/data/history/history.mp3.md.html; result = 10988 }
00:00:01 i #615 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/history/history.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\history.mp3.hangul.md }
00:00:01 d #616 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\history.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/history/history.mp3.hangul.md; result = 1679 }
00:00:01 d #617 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/hunting/hunting.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/hunting/hunting.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:01 v #618 > 9e9633005f4854af5132be43c52c81f1abc3118c
00:00:01 v #619 > 6e0a5e5f4b8e22db3ef519cf6b1c5834c60896be
00:00:01 v #620 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:01 i #621 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/chatgpt.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.html.hangul.md.epub }
00:00:01 d #622 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/ai/chatgpt.html.hangul.md.epub; result = 5514 }
00:00:01 i #623 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/chatgpt.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.html.hangul.md.pdf }
00:00:01 d #624 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/ai/chatgpt.html.hangul.md.pdf; result = 3758 }
00:00:01 i #625 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/chatgpt.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.html.hangul.md.html }
00:00:01 d #626 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/ai/chatgpt.html.hangul.md.html; result = 10100 }
00:00:01 i #627 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/chatgpt.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.html.md.epub }
00:00:01 v #628 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:01 d #629 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.html.md.epub; new_path = c:/home/git/vault/dist/data/ai/chatgpt.html.md.epub; result = 5447 }
00:00:01 i #630 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/chatgpt.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.html.md.pdf }
00:00:01 d #631 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.html.md.pdf; new_path = c:/home/git/vault/dist/data/ai/chatgpt.html.md.pdf; result = 5892 }
00:00:01 i #632 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/chatgpt.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.html.md.html }
00:00:01 i #633 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/spanish.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spanish.hangul.md.epub }
00:00:01 d #634 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.html.md.html; new_path = c:/home/git/vault/dist/data/ai/chatgpt.html.md.html; result = 10065 }
00:00:01 i #635 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/chatgpt.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.html.hangul.md }
00:00:01 d #636 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spanish.hangul.md.epub; new_path = c:/home/git/vault/dist/data/dialects/spanish.hangul.md.epub; result = 20164 }
00:00:01 v #637 > 'e0edc596c7417feeaacdbf3ea04a7b3e05048dd5'
00:00:01 d #638 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.html.hangul.md; new_path = c:/home/git/vault/dist/data/ai/chatgpt.html.hangul.md; result = 133 }
00:00:01 i #639 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/spanish.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spanish.hangul.md.pdf }
00:00:01 d #640 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spanish.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/spanish.hangul.md.pdf; result = 21277 }
00:00:01 i #641 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/spanish.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spanish.hangul.md.html }
00:00:01 d #642 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spanish.hangul.md.html; new_path = c:/home/git/vault/dist/data/dialects/spanish.hangul.md.html; result = 78039 }
00:00:01 d #643 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/ai/chatgpt.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/ai/chatgpt.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:01 i #644 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/spanish.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spanish.md.epub }
00:00:01 d #645 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spanish.md.epub; new_path = c:/home/git/vault/dist/data/dialects/spanish.md.epub; result = 18291 }
00:00:01 i #646 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/spanish.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spanish.md.pdf }
00:00:01 d #647 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spanish.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/spanish.md.pdf; result = 59586 }
00:00:01 i #648 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/spanish.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spanish.md.html }
00:00:01 d #649 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spanish.md.html; new_path = c:/home/git/vault/dist/data/dialects/spanish.md.html; result = 56736 }
00:00:01 i #650 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/spanish.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spanish.hangul.md }
00:00:01 d #651 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spanish.hangul.md; new_path = c:/home/git/vault/dist/data/dialects/spanish.hangul.md; result = 57778 }
00:00:01 d #652 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/dotnet/dotnet.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/dotnet/dotnet.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:01 v #653 > 'bdb231b92700c577e134d2ae8d941fd84f388693'
00:00:01 v #654 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:01 v #655 > '70e7431d7fa3cd9c92de39e0deffacdb7c5f7005'
00:00:01 d #656 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/engineering/engineering.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/engineering/engineering.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:01 v #657 > '460ade05b46845f1860c525fad851cadb565e729'
00:00:01 v #658 > 'c7a57567fdf7ab3fb89bd268224cfdf5f8dadc9f'
00:00:01 v #659 > '2dfe570d538066c6a62ee8e5e4c05b67160b042c'
00:00:01 v #660 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:01 d #661 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/math/math.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/math/math.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:01 v #662 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:01 v #663 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:01 v #664 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:01 d #665 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/hunting/hunting.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/hunting/hunting.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:01 d #666 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Jully_Lov.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Jully_Lov.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:01 d #667 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/food/food.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/food/food.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:01 v #668 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:01 d #669 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/dialects/korean.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/dialects/korean.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:01 v #670 > '5a67a00b2a87bc4d1fd4b4a8a03cc9ac996871f8'
00:00:01 v #671 > e0edc596c7417feeaacdbf3ea04a7b3e05048dd5
00:00:01 v #672 > '4444c1a375a066e67699f10d0ccc5f7847e149cb'
00:00:01 v #673 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:01 d #674 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/ai/chatgpt.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/ai/chatgpt.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:01 v #675 > bdb231b92700c577e134d2ae8d941fd84f388693
00:00:01 v #676 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:01 i #677 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/engineering/engineering.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\engineering.mp3.hangul.md.epub }
00:00:01 v #678 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:01 d #679 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/dotnet/dotnet.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/dotnet/dotnet.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:01 d #680 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\engineering.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/engineering/engineering.mp3.hangul.md.epub; result = 5645 }
00:00:01 i #681 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/engineering/engineering.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\engineering.mp3.hangul.md.pdf }
00:00:01 v #682 > c7a57567fdf7ab3fb89bd268224cfdf5f8dadc9f
00:00:01 d #683 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\engineering.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/engineering/engineering.mp3.hangul.md.pdf; result = 3990 }
00:00:01 i #684 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/engineering/engineering.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\engineering.mp3.hangul.md.html }
00:00:01 d #685 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\engineering.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/engineering/engineering.mp3.hangul.md.html; result = 10278 }
00:00:01 i #686 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/engineering/engineering.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\engineering.mp3.md.epub }
00:00:01 d #687 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\engineering.mp3.md.epub; new_path = c:/home/git/vault/dist/data/engineering/engineering.mp3.md.epub; result = 5525 }
00:00:01 i #688 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/engineering/engineering.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\engineering.mp3.md.pdf }
00:00:01 d #689 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\engineering.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/engineering/engineering.mp3.md.pdf; result = 7540 }
00:00:01 i #690 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/engineering/engineering.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\engineering.mp3.md.html }
00:00:01 d #691 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\engineering.mp3.md.html; new_path = c:/home/git/vault/dist/data/engineering/engineering.mp3.md.html; result = 10118 }
00:00:01 i #692 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/engineering/engineering.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\engineering.mp3.hangul.md }
00:00:01 d #693 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\engineering.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/engineering/engineering.mp3.hangul.md; result = 353 }
00:00:01 v #694 > 70e7431d7fa3cd9c92de39e0deffacdb7c5f7005
00:00:01 d #695 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/ethics/ethics.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/ethics/ethics.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:01 v #696 > 460ade05b46845f1860c525fad851cadb565e729
00:00:01 v #697 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:01 v #698 > 2dfe570d538066c6a62ee8e5e4c05b67160b042c
00:00:01 i #699 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/food/food.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\food.hangul.md.epub }
00:00:01 d #700 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\food.hangul.md.epub; new_path = c:/home/git/vault/dist/data/food/food.hangul.md.epub; result = 36753 }
00:00:01 i #701 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/food/food.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\food.hangul.md.pdf }
00:00:01 v #702 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:01 d #703 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\food.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/food/food.hangul.md.pdf; result = 63383 }
00:00:01 i #704 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/food/food.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\food.hangul.md.html }
00:00:01 d #705 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\food.hangul.md.html; new_path = c:/home/git/vault/dist/data/food/food.hangul.md.html; result = 174783 }
00:00:01 i #706 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/food/food.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\food.md.epub }
00:00:01 i #707 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hunting/hunting.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hunting.hangul.md.epub }
00:00:01 d #708 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hunting.hangul.md.epub; new_path = c:/home/git/vault/dist/data/hunting/hunting.hangul.md.epub; result = 21652 }
00:00:01 d #709 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\food.md.epub; new_path = c:/home/git/vault/dist/data/food/food.md.epub; result = 33010 }
00:00:01 i #710 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hunting/hunting.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hunting.hangul.md.pdf }
00:00:01 i #710 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/food/food.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\food.md.pdf }
00:00:01 d #712 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\food.md.pdf; new_path = c:/home/git/vault/dist/data/food/food.md.pdf; result = 135025 }
00:00:01 d #712 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hunting.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/hunting/hunting.hangul.md.pdf; result = 26383 }
00:00:01 i #714 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hunting/hunting.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hunting.hangul.md.html }
00:00:01 i #715 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/food/food.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\food.md.html }
00:00:01 d #716 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\food.md.html; new_path = c:/home/git/vault/dist/data/food/food.md.html; result = 128885 }
00:00:01 i #717 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/food/food.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\food.hangul.md }
00:00:01 v #718 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:01 v #719 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:01 d #720 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hunting.hangul.md.html; new_path = c:/home/git/vault/dist/data/hunting/hunting.hangul.md.html; result = 86605 }
00:00:01 i #721 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hunting/hunting.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hunting.md.epub }
00:00:01 d #722 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\food.hangul.md; new_path = c:/home/git/vault/dist/data/food/food.hangul.md; result = 127583 }
00:00:01 d #723 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hunting.md.epub; new_path = c:/home/git/vault/dist/data/hunting/hunting.md.epub; result = 19641 }
00:00:01 i #724 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hunting/hunting.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hunting.md.pdf }
00:00:01 i #725 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Jully_Lov.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Jully_Lov.html.hangul.md.epub }
00:00:01 i #726 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/math/math.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\math.hangul.md.epub }
00:00:01 d #727 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\math.hangul.md.epub; new_path = c:/home/git/vault/dist/data/math/math.hangul.md.epub; result = 6278 }
00:00:01 d #728 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hunting.md.pdf; new_path = c:/home/git/vault/dist/data/hunting/hunting.md.pdf; result = 67970 }
00:00:01 i #729 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hunting/hunting.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hunting.md.html }
00:00:01 i #730 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/math/math.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\math.hangul.md.pdf }
00:00:01 d #731 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/food/food.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/food/food.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:01 d #732 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\math.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/math/math.hangul.md.pdf; result = 7355 }
00:00:01 d #733 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hunting.md.html; new_path = c:/home/git/vault/dist/data/hunting/hunting.md.html; result = 63988 }
00:00:01 i #734 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hunting/hunting.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hunting.hangul.md }
00:00:01 i #735 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/math/math.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\math.hangul.md.html }
00:00:01 d #736 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hunting.hangul.md; new_path = c:/home/git/vault/dist/data/hunting/hunting.hangul.md; result = 62482 }
00:00:01 d #737 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Jully_Lov.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Jully_Lov.html.hangul.md.epub; result = 5563 }
00:00:01 i #738 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Jully_Lov.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Jully_Lov.html.hangul.md.pdf }
00:00:01 d #739 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Jully_Lov.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Jully_Lov.html.hangul.md.pdf; result = 4677 }
00:00:01 i #740 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Jully_Lov.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Jully_Lov.html.hangul.md.html }
00:00:01 d #741 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/identity/identity.fc1943s.7z.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/identity/identity.fc1943s.7z.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:01 v #742 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:01 d #743 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Jully_Lov.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Jully_Lov.html.hangul.md.html; result = 11671 }
00:00:01 d #744 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\math.hangul.md.html; new_path = c:/home/git/vault/dist/data/math/math.hangul.md.html; result = 12268 }
00:00:01 i #745 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Jully_Lov.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Jully_Lov.html.md.epub }
00:00:01 i #746 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/math/math.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\math.md.epub }
00:00:01 d #747 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\math.md.epub; new_path = c:/home/git/vault/dist/data/math/math.md.epub; result = 6065 }
00:00:01 d #748 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Jully_Lov.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Jully_Lov.html.md.epub; result = 5492 }
00:00:01 i #749 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/math/math.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\math.md.pdf }
00:00:01 i #750 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.hangul.md.epub }
00:00:01 d #751 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\math.md.pdf; new_path = c:/home/git/vault/dist/data/math/math.md.pdf; result = 14947 }
00:00:01 i #752 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Jully_Lov.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Jully_Lov.html.md.pdf }
00:00:01 i #753 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/math/math.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\math.md.html }
00:00:01 d #754 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Jully_Lov.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Jully_Lov.html.md.pdf; result = 4927 }
00:00:01 d #755 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.hangul.md.epub; new_path = c:/home/git/vault/dist/data/dialects/korean.hangul.md.epub; result = 224165 }
00:00:01 i #756 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Jully_Lov.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Jully_Lov.html.md.html }
00:00:01 i #757 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.hangul.md.pdf }
00:00:01 d #758 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\math.md.html; new_path = c:/home/git/vault/dist/data/math/math.md.html; result = 11558 }
00:00:01 d #759 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Jully_Lov.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Jully_Lov.html.md.html; result = 11635 }
00:00:01 i #760 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/math/math.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\math.hangul.md }
00:00:01 i #761 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Jully_Lov.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Jully_Lov.html.hangul.md }
00:00:01 d #762 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\math.hangul.md; new_path = c:/home/git/vault/dist/data/math/math.hangul.md; result = 2232 }
00:00:01 d #763 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/korean.hangul.md.pdf; result = 296445 }
00:00:01 i #764 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.hangul.md.html }
00:00:01 d #765 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Jully_Lov.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Jully_Lov.html.hangul.md; result = 141 }
00:00:01 d #766 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/mercadolivre/mercadolivre.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/mercadolivre/mercadolivre.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:01 d #767 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/kittennmoon.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/kittennmoon.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:01 d #768 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.hangul.md.html; new_path = c:/home/git/vault/dist/data/dialects/korean.hangul.md.html; result = 1132691 }
00:00:01 i #769 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.md.epub }
00:00:01 d #770 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.md.epub; new_path = c:/home/git/vault/dist/data/dialects/korean.md.epub; result = 207001 }
00:00:01 i #771 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.md.pdf }
00:00:01 d #772 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/korean.md.pdf; result = 738483 }
00:00:01 i #773 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.md.html }
00:00:01 v #774 > 5a67a00b2a87bc4d1fd4b4a8a03cc9ac996871f8
00:00:01 d #775 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.md.html; new_path = c:/home/git/vault/dist/data/dialects/korean.md.html; result = 823639 }
00:00:01 i #776 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.hangul.md }
00:00:01 d #777 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.hangul.md; new_path = c:/home/git/vault/dist/data/dialects/korean.hangul.md; result = 976987 }
00:00:01 d #778 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/dialects/korean.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/dialects/korean.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:01 v #779 > 4444c1a375a066e67699f10d0ccc5f7847e149cb
00:00:01 v #780 > 'eb05ce2c347cba8aa7491d11c958465cd9af4a87'
00:00:01 v #781 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:01 v #782 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:01 i #783 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/chatgpt.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.hangul.md.epub }
00:00:01 d #784 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/ethics/ethics.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/ethics/ethics.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:01 v #785 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:01 d #786 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.hangul.md.epub; new_path = c:/home/git/vault/dist/data/ai/chatgpt.hangul.md.epub; result = 21991 }
00:00:01 i #787 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/chatgpt.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.hangul.md.pdf }
00:00:01 i #788 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dotnet/dotnet.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dotnet.hangul.md.epub }
00:00:01 d #789 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/ai/chatgpt.hangul.md.pdf; result = 26438 }
00:00:01 d #790 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dotnet.hangul.md.epub; new_path = c:/home/git/vault/dist/data/dotnet/dotnet.hangul.md.epub; result = 5461 }
00:00:01 i #791 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/chatgpt.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.hangul.md.html }
00:00:01 i #792 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dotnet/dotnet.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dotnet.hangul.md.pdf }
00:00:01 d #793 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.hangul.md.html; new_path = c:/home/git/vault/dist/data/ai/chatgpt.hangul.md.html; result = 87531 }
00:00:01 d #794 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dotnet.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/dotnet/dotnet.hangul.md.pdf; result = 3401 }
00:00:01 i #795 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dotnet/dotnet.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dotnet.hangul.md.html }
00:00:01 i #796 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/chatgpt.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.md.epub }
00:00:01 d #797 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.md.epub; new_path = c:/home/git/vault/dist/data/ai/chatgpt.md.epub; result = 19733 }
00:00:01 d #798 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dotnet.hangul.md.html; new_path = c:/home/git/vault/dist/data/dotnet/dotnet.hangul.md.html; result = 9977 }
00:00:01 i #799 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dotnet/dotnet.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dotnet.md.epub }
00:00:01 i #800 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/chatgpt.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.md.pdf }
00:00:01 d #801 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dotnet.md.epub; new_path = c:/home/git/vault/dist/data/dotnet/dotnet.md.epub; result = 5416 }
00:00:01 i #802 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dotnet/dotnet.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dotnet.md.pdf }
00:00:01 d #803 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.md.pdf; new_path = c:/home/git/vault/dist/data/ai/chatgpt.md.pdf; result = 79304 }
00:00:01 i #804 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/chatgpt.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.md.html }
00:00:01 d #805 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dotnet.md.pdf; new_path = c:/home/git/vault/dist/data/dotnet/dotnet.md.pdf; result = 4970 }
00:00:01 i #806 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dotnet/dotnet.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dotnet.md.html }
00:00:01 v #807 > '90d1370c18ccc4155bfa0452150965014b0f58eb'
00:00:01 d #808 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.md.html; new_path = c:/home/git/vault/dist/data/ai/chatgpt.md.html; result = 65906 }
00:00:01 d #809 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dotnet.md.html; new_path = c:/home/git/vault/dist/data/dotnet/dotnet.md.html; result = 9957 }
00:00:01 i #810 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dotnet/dotnet.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dotnet.hangul.md }
00:00:01 i #811 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/chatgpt.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.hangul.md }
00:00:01 d #812 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dotnet.hangul.md; new_path = c:/home/git/vault/dist/data/dotnet/dotnet.hangul.md; result = 66 }
00:00:01 d #813 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.hangul.md; new_path = c:/home/git/vault/dist/data/ai/chatgpt.hangul.md; result = 67428 }
00:00:01 d #814 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/doujinshi/doujinshi.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/doujinshi/doujinshi.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:01 d #815 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/ai/gpt3.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/ai/gpt3.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:01 v #816 > 'd05c5d0f35097a6a85d45b60ebf092ab80c163c8'
00:00:01 v #817 > 'a929a5a405afe3ec45d53978c7f1a3a6ebb78795'
00:00:01 v #818 > 'cba44947002177d81094bbfcafe46a93f1bdc47e'
00:00:01 v #819 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:01 v #820 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:01 v #821 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:01 d #822 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:01 v #823 > '12b0a770aa67947704dc6cd7888ba8ca1df39a61'
00:00:01 d #824 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:01 d #825 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/food/food.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/food/food.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:01 v #826 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:01 d #827 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/kittennmoon.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/kittennmoon.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:01 v #828 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:01 d #829 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/dialects/korean.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/dialects/korean.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:01 v #830 > eb05ce2c347cba8aa7491d11c958465cd9af4a87
00:00:02 v #831 > 'b0c8fd838dd78173824274b77bbcef62bcaa2290'
00:00:02 v #832 > '941beea1483213ff0ffe70d5c32f391923b16030'
00:00:02 v #833 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:02 v #834 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:02 i #835 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ethics/ethics.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ethics.mp3.hangul.md.epub }
00:00:02 d #836 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/doujinshi/doujinshi.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/doujinshi/doujinshi.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:02 d #837 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ethics.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/ethics/ethics.mp3.hangul.md.epub; result = 5656 }
00:00:02 i #838 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ethics/ethics.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ethics.mp3.hangul.md.pdf }
00:00:02 d #839 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ethics.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/ethics/ethics.mp3.hangul.md.pdf; result = 3993 }
00:00:02 i #840 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ethics/ethics.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ethics.mp3.hangul.md.html }
00:00:02 d #841 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ethics.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/ethics/ethics.mp3.hangul.md.html; result = 10305 }
00:00:02 i #842 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ethics/ethics.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ethics.mp3.md.epub }
00:00:02 d #843 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ethics.mp3.md.epub; new_path = c:/home/git/vault/dist/data/ethics/ethics.mp3.md.epub; result = 5533 }
00:00:02 i #844 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ethics/ethics.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ethics.mp3.md.pdf }
00:00:02 d #845 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ethics.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/ethics/ethics.mp3.md.pdf; result = 7722 }
00:00:02 i #846 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ethics/ethics.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ethics.mp3.md.html }
00:00:02 d #847 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ethics.mp3.md.html; new_path = c:/home/git/vault/dist/data/ethics/ethics.mp3.md.html; result = 10143 }
00:00:02 i #848 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ethics/ethics.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ethics.mp3.hangul.md }
00:00:02 d #849 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ethics.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/ethics/ethics.mp3.hangul.md; result = 380 }
00:00:02 d #850 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/exercism/exercism.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/exercism/exercism.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:02 v #851 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:02 d #852 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/ai/gpt3.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/ai/gpt3.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:02 v #853 > 90d1370c18ccc4155bfa0452150965014b0f58eb
00:00:02 v #854 > d05c5d0f35097a6a85d45b60ebf092ab80c163c8
00:00:02 v #855 > a929a5a405afe3ec45d53978c7f1a3a6ebb78795
00:00:02 v #856 > cba44947002177d81094bbfcafe46a93f1bdc47e
00:00:02 v #857 > 12b0a770aa67947704dc6cd7888ba8ca1df39a61
00:00:02 v #858 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:02 i #859 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.7z.hangul.md.epub }
00:00:02 d #860 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.7z.hangul.md.epub; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.hangul.md.epub; result = 5983 }
00:00:02 i #861 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.7z.hangul.md.pdf }
00:00:02 d #862 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.7z.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.hangul.md.pdf; result = 8642 }
00:00:02 i #863 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.7z.hangul.md.html }
00:00:02 d #864 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.7z.hangul.md.html; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.hangul.md.html; result = 11673 }
00:00:02 i #865 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.7z.md.epub }
00:00:02 d #866 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.7z.md.epub; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.md.epub; result = 5840 }
00:00:02 i #867 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.7z.md.pdf }
00:00:02 d #868 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.7z.md.pdf; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.md.pdf; result = 11769 }
00:00:02 i #869 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.7z.md.html }
00:00:02 d #870 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.7z.md.html; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.md.html; result = 11621 }
00:00:02 i #871 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.7z.hangul.md }
00:00:02 d #872 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.7z.hangul.md; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.hangul.md; result = 1349 }
00:00:02 v #873 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:02 d #874 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/identity/identity.fc1943s.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/identity/identity.fc1943s.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:02 v #875 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:02 v #876 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:02 i #877 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/food/food.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\food.mp3.hangul.md.epub }
00:00:02 d #878 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\food.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/food/food.mp3.hangul.md.epub; result = 5607 }
00:00:02 i #879 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.html.hangul.md.epub }
00:00:02 i #880 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/food/food.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\food.mp3.hangul.md.pdf }
00:00:02 d #881 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.hangul.md.epub; result = 5512 }
00:00:02 i #882 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/kittennmoon.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kittennmoon.html.hangul.md.epub }
00:00:02 i #883 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.html.hangul.md.pdf }
00:00:02 d #884 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\food.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/food/food.mp3.hangul.md.pdf; result = 3726 }
00:00:02 d #885 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.hangul.md.pdf; result = 3756 }
00:00:02 d #885 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kittennmoon.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/kittennmoon.html.hangul.md.epub; result = 5562 }
00:00:02 i #887 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/food/food.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\food.mp3.hangul.md.html }
00:00:02 i #888 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.html.hangul.md.html }
00:00:02 i #889 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/kittennmoon.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kittennmoon.html.hangul.md.pdf }
00:00:02 d #890 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\food.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/food/food.mp3.hangul.md.html; result = 10197 }
00:00:02 d #891 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.hangul.md.html; result = 10092 }
00:00:02 d #892 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kittennmoon.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/kittennmoon.html.hangul.md.pdf; result = 4627 }
00:00:02 i #893 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/food/food.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\food.mp3.md.epub }
00:00:02 i #894 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/kittennmoon.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kittennmoon.html.hangul.md.html }
00:00:02 i #894 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.html.md.epub }
00:00:02 v #896 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:02 d #897 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.html.md.epub; new_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.md.epub; result = 5443 }
00:00:02 d #898 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kittennmoon.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/kittennmoon.html.hangul.md.html; result = 11671 }
00:00:02 d #899 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\food.mp3.md.epub; new_path = c:/home/git/vault/dist/data/food/food.mp3.md.epub; result = 5493 }
00:00:02 i #900 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/kittennmoon.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kittennmoon.html.md.epub }
00:00:02 i #900 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.html.md.pdf }
00:00:02 i #900 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/food/food.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\food.mp3.md.pdf }
00:00:02 d #903 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kittennmoon.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/kittennmoon.html.md.epub; result = 5493 }
00:00:02 d #903 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.html.md.pdf; new_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.md.pdf; result = 5929 }
00:00:02 d #905 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\food.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/food/food.mp3.md.pdf; result = 6917 }
00:00:02 i #906 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/kittennmoon.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kittennmoon.html.md.pdf }
00:00:02 i #907 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp3.hangul.md.epub }
00:00:02 i #908 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.html.md.html }
00:00:02 i #909 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/food/food.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\food.mp3.md.html }
00:00:02 d #910 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/dialects/korean.mp3.hangul.md.epub; result = 5981 }
00:00:02 d #911 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.html.md.html; new_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.md.html; result = 10060 }
00:00:02 d #912 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kittennmoon.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/kittennmoon.html.md.pdf; result = 4849 }
00:00:02 i #913 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.html.hangul.md }
00:00:02 i #914 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp3.hangul.md.pdf }
00:00:02 i #915 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/kittennmoon.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kittennmoon.html.md.html }
00:00:02 d #916 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\food.mp3.md.html; new_path = c:/home/git/vault/dist/data/food/food.mp3.md.html; result = 10055 }
00:00:02 d #917 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.html.hangul.md; new_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.hangul.md; result = 125 }
00:00:02 d #918 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/korean.mp3.hangul.md.pdf; result = 4747 }
00:00:02 d #919 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kittennmoon.html.md.html; new_path = c:/home/git/vault/dist/data/chat/kittennmoon.html.md.html; result = 11642 }
00:00:02 i #920 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp3.hangul.md.html }
00:00:02 i #921 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/food/food.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\food.mp3.hangul.md }
00:00:02 i #922 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/kittennmoon.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kittennmoon.html.hangul.md }
00:00:02 d #923 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\food.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/food/food.mp3.hangul.md; result = 273 }
00:00:02 d #924 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kittennmoon.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/kittennmoon.html.hangul.md; result = 140 }
00:00:02 d #925 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/dialects/korean.mp3.hangul.md.html; result = 11902 }
00:00:02 i #926 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp3.md.epub }
00:00:02 d #927 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp3.md.epub; new_path = c:/home/git/vault/dist/data/dialects/korean.mp3.md.epub; result = 5786 }
00:00:02 d #928 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/mercadolivre/mercadolivre.i574n.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/mercadolivre/mercadolivre.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:02 i #929 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp3.md.pdf }
00:00:02 d #930 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/korean.mp3.md.pdf; result = 10213 }
00:00:02 d #931 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Kitty.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Kitty.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:02 d #932 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/gamedev/gamedev.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/gamedev/gamedev.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:02 i #933 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp3.md.html }
00:00:02 d #934 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp3.md.html; new_path = c:/home/git/vault/dist/data/dialects/korean.mp3.md.html; result = 11092 }
00:00:02 i #935 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp3.hangul.md }
00:00:02 d #936 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/dialects/korean.mp3.hangul.md; result = 1840 }
00:00:02 d #937 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/dialects/korean.mp4.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/dialects/korean.mp4.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:02 v #938 > b0c8fd838dd78173824274b77bbcef62bcaa2290
00:00:02 v #939 > '61b61ae6334ea017fee41ba877bedfd66ce5cd59'
00:00:02 v #940 > 941beea1483213ff0ffe70d5c32f391923b16030
00:00:02 v #941 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:02 v #942 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:02 d #943 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/exercism/exercism.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/exercism/exercism.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:02 i #944 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/doujinshi/doujinshi.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\doujinshi.hangul.md.epub }
00:00:02 d #945 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\doujinshi.hangul.md.epub; new_path = c:/home/git/vault/dist/data/doujinshi/doujinshi.hangul.md.epub; result = 22492 }
00:00:02 i #946 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/doujinshi/doujinshi.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\doujinshi.hangul.md.pdf }
00:00:02 d #947 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\doujinshi.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/doujinshi/doujinshi.hangul.md.pdf; result = 41661 }
00:00:02 i #948 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/doujinshi/doujinshi.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\doujinshi.hangul.md.html }
00:00:02 d #949 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\doujinshi.hangul.md.html; new_path = c:/home/git/vault/dist/data/doujinshi/doujinshi.hangul.md.html; result = 146553 }
00:00:02 i #950 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/doujinshi/doujinshi.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\doujinshi.md.epub }
00:00:02 v #951 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:02 d #952 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\doujinshi.md.epub; new_path = c:/home/git/vault/dist/data/doujinshi/doujinshi.md.epub; result = 20254 }
00:00:02 i #953 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/doujinshi/doujinshi.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\doujinshi.md.pdf }
00:00:02 d #954 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\doujinshi.md.pdf; new_path = c:/home/git/vault/dist/data/doujinshi/doujinshi.md.pdf; result = 105252 }
00:00:02 i #955 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/doujinshi/doujinshi.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\doujinshi.md.html }
00:00:02 i #956 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/gpt3.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gpt3.html.hangul.md.epub }
00:00:02 v #957 > 'b036d7daa1eaa41f6831e80a72c6ff7fc97752dc'
00:00:02 d #958 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\doujinshi.md.html; new_path = c:/home/git/vault/dist/data/doujinshi/doujinshi.md.html; result = 102650 }
00:00:02 d #959 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gpt3.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/ai/gpt3.html.hangul.md.epub; result = 5733 }
00:00:02 i #959 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/doujinshi/doujinshi.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\doujinshi.hangul.md }
00:00:02 i #961 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/gpt3.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gpt3.html.hangul.md.pdf }
00:00:02 d #962 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gpt3.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/ai/gpt3.html.hangul.md.pdf; result = 4899 }
00:00:02 i #963 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/gpt3.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gpt3.html.hangul.md.html }
00:00:02 d #964 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\doujinshi.hangul.md; new_path = c:/home/git/vault/dist/data/doujinshi/doujinshi.hangul.md; result = 123460 }
00:00:02 d #965 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/drugs/drugs.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/drugs/drugs.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:02 d #966 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gpt3.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/ai/gpt3.html.hangul.md.html; result = 11175 }
00:00:02 i #967 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/gpt3.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gpt3.html.md.epub }
00:00:02 d #968 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gpt3.html.md.epub; new_path = c:/home/git/vault/dist/data/ai/gpt3.html.md.epub; result = 5588 }
00:00:02 i #969 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/gpt3.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gpt3.html.md.pdf }
00:00:02 d #970 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gpt3.html.md.pdf; new_path = c:/home/git/vault/dist/data/ai/gpt3.html.md.pdf; result = 7458 }
00:00:02 i #971 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/gpt3.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gpt3.html.md.html }
00:00:02 d #972 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gpt3.html.md.html; new_path = c:/home/git/vault/dist/data/ai/gpt3.html.md.html; result = 10887 }
00:00:02 i #973 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/gpt3.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gpt3.html.hangul.md }
00:00:02 v #973 > 'f17f49a270365e8c39076003cf9650004458b689'
00:00:02 d #975 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gpt3.html.hangul.md; new_path = c:/home/git/vault/dist/data/ai/gpt3.html.hangul.md; result = 941 }
00:00:02 d #976 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/ai/rhyme 6.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/ai/rhyme 6.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:02 v #977 > 'c0cfc32ae13aa63faf689421c4f9688e7dd36e97'
00:00:02 v #978 > 'ec8cc309cc04d193ab3779a9a83894281f55c1fb'
00:00:02 v #979 > '42d41c00c1027498867bb79e25d63be757ea1a27'
00:00:02 v #980 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:02 d #981 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:02 v #982 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:02 d #983 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:02 v #984 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:02 d #985 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/gamedev/gamedev.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/gamedev/gamedev.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:02 v #986 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:02 d #987 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Kitty.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Kitty.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:02 v #988 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:02 d #989 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/dialects/korean.mp4.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/dialects/korean.mp4.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:02 v #990 > 61b61ae6334ea017fee41ba877bedfd66ce5cd59
00:00:02 v #991 > '087920199f5f965c9f053b82497e31778239031a'
00:00:02 v #992 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:02 i #993 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/exercism/exercism.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\exercism.html.hangul.md.epub }
00:00:02 d #994 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\exercism.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/exercism/exercism.html.hangul.md.epub; result = 5542 }
00:00:02 i #995 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/exercism/exercism.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\exercism.html.hangul.md.pdf }
00:00:02 v #996 > 'e80cfd7265fe2b552d3a6b9a6779d3be6747ce96'
00:00:02 d #997 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\exercism.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/exercism/exercism.html.hangul.md.pdf; result = 3808 }
00:00:02 i #998 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/exercism/exercism.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\exercism.html.hangul.md.html }
00:00:02 d #999 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\exercism.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/exercism/exercism.html.hangul.md.html; result = 10355 }
00:00:02 i #1000 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/exercism/exercism.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\exercism.html.md.epub }
00:00:02 d #1001 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\exercism.html.md.epub; new_path = c:/home/git/vault/dist/data/exercism/exercism.html.md.epub; result = 5462 }
00:00:02 v #1002 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:02 i #1003 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/exercism/exercism.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\exercism.html.md.pdf }
00:00:02 d #1004 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\exercism.html.md.pdf; new_path = c:/home/git/vault/dist/data/exercism/exercism.html.md.pdf; result = 6010 }
00:00:02 d #1005 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/drugs/drugs.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/drugs/drugs.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:02 i #1006 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/exercism/exercism.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\exercism.html.md.html }
00:00:02 d #1007 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\exercism.html.md.html; new_path = c:/home/git/vault/dist/data/exercism/exercism.html.md.html; result = 10262 }
00:00:02 v #1008 > b036d7daa1eaa41f6831e80a72c6ff7fc97752dc
00:00:02 i #1009 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/exercism/exercism.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\exercism.html.hangul.md }
00:00:02 d #1010 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\exercism.html.hangul.md; new_path = c:/home/git/vault/dist/data/exercism/exercism.html.hangul.md; result = 299 }
00:00:02 d #1011 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/facebook/facebook.fc1943s.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/facebook/facebook.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:02 v #1012 > f17f49a270365e8c39076003cf9650004458b689
00:00:02 v #1013 > c0cfc32ae13aa63faf689421c4f9688e7dd36e97
00:00:02 v #1014 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:02 v #1015 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:02 d #1016 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/ai/rhyme 6.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/ai/rhyme 6.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:02 i #1017 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.pdf.hangul.md.epub }
00:00:02 d #1018 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.hangul.md.epub; result = 6093 }
00:00:02 i #1019 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.pdf.hangul.md.pdf }
00:00:02 d #1020 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.hangul.md.pdf; result = 5663 }
00:00:02 i #1021 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.pdf.hangul.md.html }
00:00:02 v #1022 > ec8cc309cc04d193ab3779a9a83894281f55c1fb
00:00:02 d #1023 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.hangul.md.html; result = 13391 }
00:00:02 v #1024 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:02 i #1025 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.pdf.md.epub }
00:00:02 d #1026 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.pdf.md.epub; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.md.epub; result = 5871 }
00:00:02 i #1027 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.pdf.md.pdf }
00:00:02 d #1028 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.md.pdf; result = 10914 }
00:00:02 i #1029 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.i574n.hangul.md.epub }
00:00:02 v #1030 > 42d41c00c1027498867bb79e25d63be757ea1a27
00:00:02 i #1031 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.pdf.md.html }
00:00:02 d #1032 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.i574n.hangul.md.epub; new_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.hangul.md.epub; result = 5515 }
00:00:02 d #1033 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.pdf.md.html; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.md.html; result = 12292 }
00:00:02 i #1034 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.i574n.hangul.md.pdf }
00:00:02 v #1035 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:02 i #1036 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.pdf.hangul.md }
00:00:02 d #1037 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.i574n.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.hangul.md.pdf; result = 4380 }
00:00:02 d #1038 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.hangul.md; result = 2889 }
00:00:02 i #1039 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.i574n.hangul.md.html }
00:00:02 d #1040 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.i574n.hangul.md.html; new_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.hangul.md.html; result = 10091 }
00:00:02 i #1041 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.i574n.md.epub }
00:00:02 i #1042 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/gamedev/gamedev.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gamedev.pdf.hangul.md.epub }
00:00:02 d #1043 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.i574n.md.epub; new_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.md.epub; result = 5452 }
00:00:02 d #1043 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gamedev.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/gamedev/gamedev.pdf.hangul.md.epub; result = 5719 }
00:00:02 i #1045 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/gamedev/gamedev.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gamedev.pdf.hangul.md.pdf }
00:00:02 d #1046 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/identity/identity.fc1943s.png.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/identity/identity.fc1943s.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:02 i #1046 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.i574n.md.pdf }
00:00:02 d #1048 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.i574n.md.pdf; new_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.md.pdf; result = 5996 }
00:00:02 i #1049 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.i574n.md.html }
00:00:02 d #1050 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.i574n.md.html; new_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.md.html; result = 10060 }
00:00:02 i #1051 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.i574n.hangul.md }
00:00:02 d #1052 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.i574n.hangul.md; new_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.hangul.md; result = 111 }
00:00:02 d #1053 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gamedev.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/gamedev/gamedev.pdf.hangul.md.pdf; result = 4587 }
00:00:02 i #1054 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/gamedev/gamedev.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gamedev.pdf.hangul.md.html }
00:00:02 d #1055 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gamedev.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/gamedev/gamedev.pdf.hangul.md.html; result = 10430 }
00:00:02 i #1056 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/gamedev/gamedev.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gamedev.pdf.md.epub }
00:00:02 d #1057 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gamedev.pdf.md.epub; new_path = c:/home/git/vault/dist/data/gamedev/gamedev.pdf.md.epub; result = 5577 }
00:00:02 i #1058 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/gamedev/gamedev.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gamedev.pdf.md.pdf }
00:00:02 d #1059 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/microsoft/microsoft.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/microsoft/microsoft.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:02 v #1060 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:02 d #1061 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gamedev.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/gamedev/gamedev.pdf.md.pdf; result = 9916 }
00:00:02 i #1062 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/gamedev/gamedev.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gamedev.pdf.md.html }
00:00:02 d #1063 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gamedev.pdf.md.html; new_path = c:/home/git/vault/dist/data/gamedev/gamedev.pdf.md.html; result = 10254 }
00:00:02 i #1064 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/gamedev/gamedev.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gamedev.pdf.hangul.md }
00:00:02 v #1065 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:02 d #1066 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gamedev.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/gamedev/gamedev.pdf.hangul.md; result = 443 }
00:00:02 i #1067 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.mp4.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp4.hangul.md.epub }
00:00:02 d #1068 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp4.hangul.md.epub; new_path = c:/home/git/vault/dist/data/dialects/korean.mp4.hangul.md.epub; result = 5788 }
00:00:02 i #1069 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.mp4.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp4.hangul.md.pdf }
00:00:02 i #1070 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Kitty.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Kitty.html.hangul.md.epub }
00:00:02 d #1071 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/gaming/gaming.7z.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/gaming/gaming.7z.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:02 d #1072 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Kitty.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Kitty.html.hangul.md.epub; result = 5558 }
00:00:02 i #1073 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Kitty.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Kitty.html.hangul.md.pdf }
00:00:02 d #1074 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp4.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/korean.mp4.hangul.md.pdf; result = 6422 }
00:00:02 i #1075 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.mp4.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp4.hangul.md.html }
00:00:02 d #1076 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Kitty.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Kitty.html.hangul.md.pdf; result = 4628 }
00:00:02 d #1077 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp4.hangul.md.html; new_path = c:/home/git/vault/dist/data/dialects/korean.mp4.hangul.md.html; result = 10862 }
00:00:02 i #1078 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Kitty.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Kitty.html.hangul.md.html }
00:00:02 i #1079 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.mp4.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp4.md.epub }
00:00:02 d #1080 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp4.md.epub; new_path = c:/home/git/vault/dist/data/dialects/korean.mp4.md.epub; result = 5638 }
00:00:02 d #1080 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Kitty.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Kitty.html.hangul.md.html; result = 11668 }
00:00:02 i #1082 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.mp4.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp4.md.pdf }
00:00:02 i #1083 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Kitty.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Kitty.html.md.epub }
00:00:02 d #1084 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Kitty.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Kitty.html.md.epub; result = 5490 }
00:00:02 i #1085 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Kitty.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Kitty.html.md.pdf }
00:00:02 d #1086 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp4.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/korean.mp4.md.pdf; result = 14136 }
00:00:02 i #1087 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.mp4.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp4.md.html }
00:00:02 d #1088 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Kitty.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Kitty.html.md.pdf; result = 4815 }
00:00:02 i #1089 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Kitty.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Kitty.html.md.html }
00:00:02 d #1090 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp4.md.html; new_path = c:/home/git/vault/dist/data/dialects/korean.mp4.md.html; result = 10545 }
00:00:02 i #1091 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.mp4.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp4.hangul.md }
00:00:02 d #1092 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp4.hangul.md; new_path = c:/home/git/vault/dist/data/dialects/korean.mp4.hangul.md; result = 849 }
00:00:02 d #1093 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/facebook/facebook.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/facebook/facebook.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:02 d #1094 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Kitty.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Kitty.html.md.html; result = 11636 }
00:00:02 i #1095 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Kitty.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Kitty.html.hangul.md }
00:00:02 d #1096 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Kitty.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Kitty.html.hangul.md; result = 137 }
00:00:02 d #1097 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Luckyystrike.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Luckyystrike.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:02 v #1098 > 087920199f5f965c9f053b82497e31778239031a
00:00:02 v #1099 > 'd218e2d0579ceb35b6c9eb03d0063ac9746cda1f'
00:00:02 v #1100 > e80cfd7265fe2b552d3a6b9a6779d3be6747ce96
00:00:02 v #1101 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:02 d #1102 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/facebook/facebook.fc1943s.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/facebook/facebook.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:02 v #1103 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:02 v #1104 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:02 v #1105 > 'c23b3c88e5cb9e9ab6f57e5b005ddd546c262903'
00:00:02 i #1106 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.html.hangul.md.epub }
00:00:02 i #1107 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/rhyme 6.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rhyme 6.hangul.md.epub }
00:00:02 d #1108 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/drugs/drugs.html.hangul.md.epub; result = 5510 }
00:00:02 d #1108 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rhyme 6.hangul.md.epub; new_path = c:/home/git/vault/dist/data/ai/rhyme 6.hangul.md.epub; result = 8994 }
00:00:02 i #1110 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/rhyme 6.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rhyme 6.hangul.md.pdf }
00:00:02 v #1111 > '146508acc29359c653f49c8cd52ca4d5f26eee02'
00:00:02 i #1112 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.html.hangul.md.pdf }
00:00:02 d #1113 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rhyme 6.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/ai/rhyme 6.hangul.md.pdf; result = 5189 }
00:00:02 v #1114 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:02 i #1115 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/rhyme 6.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rhyme 6.hangul.md.html }
00:00:02 d #1116 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/identity/identity.fc1943s.png.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/identity/identity.fc1943s.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:02 d #1117 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rhyme 6.hangul.md.html; new_path = c:/home/git/vault/dist/data/ai/rhyme 6.hangul.md.html; result = 18745 }
00:00:02 i #1119 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/rhyme 6.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rhyme 6.md.epub }
00:00:02 d #1118 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/drugs/drugs.html.hangul.md.pdf; result = 3786 }
00:00:02 v #1120 > 'fe409a2db2f6562982abe31d4e36f94ac07f70cc'
00:00:02 i #1121 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.html.hangul.md.html }
00:00:02 d #1122 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rhyme 6.md.epub; new_path = c:/home/git/vault/dist/data/ai/rhyme 6.md.epub; result = 8319 }
00:00:02 i #1123 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/rhyme 6.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rhyme 6.md.pdf }
00:00:02 d #1124 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/drugs/drugs.html.hangul.md.html; result = 10093 }
00:00:02 v #1125 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:02 i #1126 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.html.md.epub }
00:00:02 d #1127 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rhyme 6.md.pdf; new_path = c:/home/git/vault/dist/data/ai/rhyme 6.md.pdf; result = 15308 }
00:00:02 d #1128 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/microsoft/microsoft.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/microsoft/microsoft.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:02 v #1129 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:02 i #1130 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/rhyme 6.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rhyme 6.md.html }
00:00:02 d #1131 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.html.md.epub; new_path = c:/home/git/vault/dist/data/drugs/drugs.html.md.epub; result = 5445 }
00:00:02 d #1132 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/gaming/gaming.7z.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/gaming/gaming.7z.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:02 d #1133 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rhyme 6.md.html; new_path = c:/home/git/vault/dist/data/ai/rhyme 6.md.html; result = 16132 }
00:00:02 i #1134 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.html.md.pdf }
00:00:02 i #1135 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/rhyme 6.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rhyme 6.hangul.md }
00:00:02 d #1136 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.html.md.pdf; new_path = c:/home/git/vault/dist/data/drugs/drugs.html.md.pdf; result = 6041 }
00:00:02 i #1137 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.html.md.html }
00:00:02 d #1138 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rhyme 6.hangul.md; new_path = c:/home/git/vault/dist/data/ai/rhyme 6.hangul.md; result = 8043 }
00:00:02 v #1139 > '3d488ff01374aae26e1f062b0400e2b62ad1712a'
00:00:02 d #1140 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.html.md.html; new_path = c:/home/git/vault/dist/data/drugs/drugs.html.md.html; result = 10060 }
00:00:02 i #1141 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.html.hangul.md }
00:00:02 d #1142 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.html.hangul.md; new_path = c:/home/git/vault/dist/data/drugs/drugs.html.hangul.md; result = 126 }
00:00:02 d #1143 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/apple/apple.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/apple/apple.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:02 d #1144 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/drugs/drugs.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/drugs/drugs.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:02 v #1145 > '0dfb76b4eb66823a9d64e6d9832084838f0931aa'
00:00:02 v #1146 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:02 d #1147 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Luckyystrike.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Luckyystrike.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:02 v #1148 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:02 d #1149 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/facebook/facebook.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/facebook/facebook.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:02 v #1150 > d218e2d0579ceb35b6c9eb03d0063ac9746cda1f
00:00:02 v #1151 > c23b3c88e5cb9e9ab6f57e5b005ddd546c262903
00:00:02 v #1152 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:02 i #1153 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/facebook/facebook.fc1943s.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\facebook.fc1943s.hangul.md.epub }
00:00:02 v #1154 > 146508acc29359c653f49c8cd52ca4d5f26eee02
00:00:02 v #1155 > fe409a2db2f6562982abe31d4e36f94ac07f70cc
00:00:02 d #1156 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\facebook.fc1943s.hangul.md.epub; new_path = c:/home/git/vault/dist/data/facebook/facebook.fc1943s.hangul.md.epub; result = 5513 }
00:00:02 i #1157 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/facebook/facebook.fc1943s.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\facebook.fc1943s.hangul.md.pdf }
00:00:02 d #1158 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\facebook.fc1943s.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/facebook/facebook.fc1943s.hangul.md.pdf; result = 4531 }
00:00:02 i #1159 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/facebook/facebook.fc1943s.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\facebook.fc1943s.hangul.md.html }
00:00:02 d #1160 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\facebook.fc1943s.hangul.md.html; new_path = c:/home/git/vault/dist/data/facebook/facebook.fc1943s.hangul.md.html; result = 10086 }
00:00:02 i #1161 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/facebook/facebook.fc1943s.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\facebook.fc1943s.md.epub }
00:00:02 d #1162 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\facebook.fc1943s.md.epub; new_path = c:/home/git/vault/dist/data/facebook/facebook.fc1943s.md.epub; result = 5449 }
00:00:02 i #1163 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/facebook/facebook.fc1943s.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\facebook.fc1943s.md.pdf }
00:00:02 d #1164 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\facebook.fc1943s.md.pdf; new_path = c:/home/git/vault/dist/data/facebook/facebook.fc1943s.md.pdf; result = 6216 }
00:00:02 i #1165 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/facebook/facebook.fc1943s.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\facebook.fc1943s.md.html }
00:00:02 v #1166 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:02 d #1167 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\facebook.fc1943s.md.html; new_path = c:/home/git/vault/dist/data/facebook/facebook.fc1943s.md.html; result = 10058 }
00:00:02 i #1168 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/facebook/facebook.fc1943s.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\facebook.fc1943s.hangul.md }
00:00:02 d #1169 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\facebook.fc1943s.hangul.md; new_path = c:/home/git/vault/dist/data/facebook/facebook.fc1943s.hangul.md; result = 106 }
00:00:02 v #1170 > '32e36a4c8b29b54ba54d7b9ad799ccf8af4b8708'
00:00:02 i #1171 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.png.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.png.hangul.md.epub }
00:00:02 d #1172 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.png.hangul.md.epub; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.png.hangul.md.epub; result = 6961 }
00:00:02 d #1173 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/kakao/kakao.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/kakao/kakao.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:02 i #1174 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.png.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.png.hangul.md.pdf }
00:00:02 v #1175 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:02 d #1176 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.png.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.png.hangul.md.pdf; result = 2202 }
00:00:02 v #1177 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:02 i #1178 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.png.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.png.hangul.md.html }
00:00:02 d #1179 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.png.hangul.md.html; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.png.hangul.md.html; result = 21635 }
00:00:02 i #1180 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/gaming/gaming.7z.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gaming.7z.hangul.md.epub }
00:00:02 i #1181 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.png.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.png.md.epub }
00:00:02 i #1182 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/microsoft/microsoft.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.html.hangul.md.epub }
00:00:02 d #1183 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gaming.7z.hangul.md.epub; new_path = c:/home/git/vault/dist/data/gaming/gaming.7z.hangul.md.epub; result = 5566 }
00:00:02 i #1184 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/gaming/gaming.7z.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gaming.7z.hangul.md.pdf }
00:00:02 d #1185 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.png.md.epub; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.png.md.epub; result = 6642 }
00:00:02 d #1186 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/microsoft/microsoft.html.hangul.md.epub; result = 5524 }
00:00:02 i #1187 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.png.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.png.md.pdf }
00:00:02 i #1188 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/microsoft/microsoft.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.html.hangul.md.pdf }
00:00:02 d #1189 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gaming.7z.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/gaming/gaming.7z.hangul.md.pdf; result = 3504 }
00:00:02 d #1190 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.png.md.pdf; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.png.md.pdf; result = 2203 }
00:00:02 i #1191 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/gaming/gaming.7z.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gaming.7z.hangul.md.html }
00:00:02 d #1192 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/microsoft/microsoft.html.hangul.md.pdf; result = 3759 }
00:00:02 i #1193 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.png.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.png.md.html }
00:00:02 i #1194 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/microsoft/microsoft.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.html.hangul.md.html }
00:00:02 d #1195 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gaming.7z.hangul.md.html; new_path = c:/home/git/vault/dist/data/gaming/gaming.7z.hangul.md.html; result = 10100 }
00:00:02 d #1196 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.png.md.html; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.png.md.html; result = 17455 }
00:00:02 d #1196 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/microsoft/microsoft.html.hangul.md.html; result = 10105 }
00:00:02 i #1198 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/gaming/gaming.7z.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gaming.7z.md.epub }
00:00:02 i #1199 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/microsoft/microsoft.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.html.md.epub }
00:00:02 i #1200 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.png.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.png.hangul.md }
00:00:02 d #1201 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gaming.7z.md.epub; new_path = c:/home/git/vault/dist/data/gaming/gaming.7z.md.epub; result = 5476 }
00:00:02 d #1202 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.html.md.epub; new_path = c:/home/git/vault/dist/data/microsoft/microsoft.html.md.epub; result = 5452 }
00:00:02 i #1203 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/microsoft/microsoft.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.html.md.pdf }
00:00:02 i #1204 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/gaming/gaming.7z.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gaming.7z.md.pdf }
00:00:02 d #1205 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.png.hangul.md; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.png.hangul.md; result = 10469 }
00:00:02 d #1206 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.html.md.pdf; new_path = c:/home/git/vault/dist/data/microsoft/microsoft.html.md.pdf; result = 5945 }
00:00:02 d #1207 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gaming.7z.md.pdf; new_path = c:/home/git/vault/dist/data/gaming/gaming.7z.md.pdf; result = 7452 }
00:00:02 i #1208 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/gaming/gaming.7z.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gaming.7z.md.html }
00:00:02 i #1209 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/microsoft/microsoft.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.html.md.html }
00:00:02 d #1210 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gaming.7z.md.html; new_path = c:/home/git/vault/dist/data/gaming/gaming.7z.md.html; result = 10137 }
00:00:02 d #1211 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.html.md.html; new_path = c:/home/git/vault/dist/data/microsoft/microsoft.html.md.html; result = 10068 }
00:00:02 i #1212 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/microsoft/microsoft.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.html.hangul.md }
00:00:02 i #1213 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/gaming/gaming.7z.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gaming.7z.hangul.md }
00:00:02 d #1214 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.html.hangul.md; new_path = c:/home/git/vault/dist/data/microsoft/microsoft.html.hangul.md; result = 138 }
00:00:02 d #1215 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gaming.7z.hangul.md; new_path = c:/home/git/vault/dist/data/gaming/gaming.7z.hangul.md; result = 196 }
00:00:02 d #1216 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/spirituality/gvk_en-us.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/spirituality/gvk_en-us.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:02 v #1217 > '175166e893681d4a1d3046b5b80ed26e41716f15'
00:00:02 v #1218 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:02 d #1219 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/microsoft/microsoft.i574n.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/microsoft/microsoft.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:02 d #1220 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/git/git.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/git/git.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:02 d #1221 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/apple/apple.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/apple/apple.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:02 v #1222 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:02 d #1223 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/drugs/drugs.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/drugs/drugs.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:02 v #1224 > 3d488ff01374aae26e1f062b0400e2b62ad1712a
00:00:02 v #1225 > 0dfb76b4eb66823a9d64e6d9832084838f0931aa
00:00:02 v #1226 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:02 i #1227 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/facebook/facebook.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\facebook.html.hangul.md.epub }
00:00:02 d #1228 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\facebook.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/facebook/facebook.html.hangul.md.epub; result = 5531 }
00:00:02 i #1229 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/facebook/facebook.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\facebook.html.hangul.md.pdf }
00:00:02 d #1230 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\facebook.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/facebook/facebook.html.hangul.md.pdf; result = 3806 }
00:00:02 i #1231 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/facebook/facebook.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\facebook.html.hangul.md.html }
00:00:02 v #1232 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:02 d #1233 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\facebook.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/facebook/facebook.html.hangul.md.html; result = 10297 }
00:00:02 i #1234 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/facebook/facebook.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\facebook.html.md.epub }
00:00:02 d #1235 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\facebook.html.md.epub; new_path = c:/home/git/vault/dist/data/facebook/facebook.html.md.epub; result = 5457 }
00:00:02 i #1236 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/facebook/facebook.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\facebook.html.md.pdf }
00:00:02 i #1237 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Luckyystrike.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Luckyystrike.html.hangul.md.epub }
00:00:02 d #1238 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\facebook.html.md.pdf; new_path = c:/home/git/vault/dist/data/facebook/facebook.html.md.pdf; result = 6082 }
00:00:02 d #1239 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Luckyystrike.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Luckyystrike.html.hangul.md.epub; result = 5562 }
00:00:02 i #1240 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Luckyystrike.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Luckyystrike.html.hangul.md.pdf }
00:00:02 i #1241 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/facebook/facebook.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\facebook.html.md.html }
00:00:02 d #1242 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Luckyystrike.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Luckyystrike.html.hangul.md.pdf; result = 4626 }
00:00:02 d #1242 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\facebook.html.md.html; new_path = c:/home/git/vault/dist/data/facebook/facebook.html.md.html; result = 10237 }
00:00:02 i #1244 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/facebook/facebook.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\facebook.html.hangul.md }
00:00:02 i #1245 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Luckyystrike.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Luckyystrike.html.hangul.md.html }
00:00:02 d #1246 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\facebook.html.hangul.md; new_path = c:/home/git/vault/dist/data/facebook/facebook.html.hangul.md; result = 241 }
00:00:02 d #1246 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Luckyystrike.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Luckyystrike.html.hangul.md.html; result = 11680 }
00:00:02 i #1248 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Luckyystrike.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Luckyystrike.html.md.epub }
00:00:02 d #1249 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Luckyystrike.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Luckyystrike.html.md.epub; result = 5497 }
00:00:02 i #1250 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Luckyystrike.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Luckyystrike.html.md.pdf }
00:00:02 d #1251 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Luckyystrike.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Luckyystrike.html.md.pdf; result = 4868 }
00:00:02 i #1252 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Luckyystrike.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Luckyystrike.html.md.html }
00:00:02 d #1253 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/fashion/fashion.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/fashion/fashion.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:02 d #1254 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Luckyystrike.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Luckyystrike.html.md.html; result = 11643 }
00:00:02 i #1255 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Luckyystrike.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Luckyystrike.html.hangul.md }
00:00:02 d #1256 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Luckyystrike.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Luckyystrike.html.hangul.md; result = 149 }
00:00:02 v #1257 > '7e3cfddfb6ec92f470b429403cd5e5a9b1ec7315'
00:00:02 d #1258 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/mfc.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/mfc.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:02 v #1259 > 'bc664f6fe58e40fdb09e32888ff175b541ca60bb'
00:00:02 v #1260 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:02 d #1261 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/kakao/kakao.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/kakao/kakao.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:02 v #1262 > '9dff62934948131bfa2a14d61ea4e056cb9c4c15'
00:00:02 v #1263 > '1d96ec9b8172db5a5f0b1e515a843c9f7c3e2eb8'
00:00:02 v #1264 > 32e36a4c8b29b54ba54d7b9ad799ccf8af4b8708
00:00:02 v #1265 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:02 d #1266 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/spirituality/gvk_en-us.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/spirituality/gvk_en-us.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:02 v #1267 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:02 d #1268 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/git/git.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/git/git.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:02 v #1269 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:02 v #1270 > 175166e893681d4a1d3046b5b80ed26e41716f15
00:00:02 d #1271 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/microsoft/microsoft.i574n.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/microsoft/microsoft.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:02 v #1272 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:02 i #1273 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/apple/apple.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\apple.html.hangul.md.epub }
00:00:02 d #1274 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\apple.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/apple/apple.html.hangul.md.epub; result = 5514 }
00:00:02 i #1275 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/apple/apple.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\apple.html.hangul.md.pdf }
00:00:02 d #1276 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\apple.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/apple/apple.html.hangul.md.pdf; result = 3754 }
00:00:02 i #1277 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/apple/apple.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\apple.html.hangul.md.html }
00:00:02 d #1278 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\apple.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/apple/apple.html.hangul.md.html; result = 10099 }
00:00:02 i #1279 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/apple/apple.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\apple.html.md.epub }
00:00:02 d #1280 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\apple.html.md.epub; new_path = c:/home/git/vault/dist/data/apple/apple.html.md.epub; result = 5445 }
00:00:02 i #1281 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/apple/apple.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\apple.html.md.pdf }
00:00:02 v #1282 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:02 d #1283 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\apple.html.md.pdf; new_path = c:/home/git/vault/dist/data/apple/apple.html.md.pdf; result = 5928 }
00:00:02 i #1284 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/apple/apple.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\apple.html.md.html }
00:00:02 d #1285 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\apple.html.md.html; new_path = c:/home/git/vault/dist/data/apple/apple.html.md.html; result = 10062 }
00:00:02 i #1286 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/apple/apple.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\apple.html.hangul.md }
00:00:02 d #1287 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\apple.html.hangul.md; new_path = c:/home/git/vault/dist/data/apple/apple.html.hangul.md; result = 132 }
00:00:02 i #1288 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.hangul.md.epub }
00:00:02 d #1289 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/apple/apple.i574n.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/apple/apple.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:02 d #1290 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.hangul.md.epub; new_path = c:/home/git/vault/dist/data/drugs/drugs.hangul.md.epub; result = 54555 }
00:00:02 i #1291 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.hangul.md.pdf }
00:00:02 d #1292 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/drugs/drugs.hangul.md.pdf; result = 59569 }
00:00:02 i #1293 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.hangul.md.html }
00:00:02 d #1294 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.hangul.md.html; new_path = c:/home/git/vault/dist/data/drugs/drugs.hangul.md.html; result = 208269 }
00:00:02 i #1295 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.md.epub }
00:00:02 d #1296 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.md.epub; new_path = c:/home/git/vault/dist/data/drugs/drugs.md.epub; result = 47872 }
00:00:02 i #1297 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.md.pdf }
00:00:02 d #1298 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.md.pdf; new_path = c:/home/git/vault/dist/data/drugs/drugs.md.pdf; result = 164323 }
00:00:02 i #1299 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.md.html }
00:00:02 d #1300 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.md.html; new_path = c:/home/git/vault/dist/data/drugs/drugs.md.html; result = 142593 }
00:00:02 i #1301 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.hangul.md }
00:00:02 d #1302 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.hangul.md; new_path = c:/home/git/vault/dist/data/drugs/drugs.hangul.md; result = 186809 }
00:00:02 v #1303 > '431296e1ef3d698ddfa8eb4e42afadb8b9705626'
00:00:02 d #1304 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/typing/typing.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/typing/typing.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:02 v #1305 > '851a864bfefadeefdcb491f5c0dc83cd24bafccc'
00:00:02 v #1306 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:02 d #1307 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/fashion/fashion.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/fashion/fashion.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:02 v #1308 > 7e3cfddfb6ec92f470b429403cd5e5a9b1ec7315
00:00:02 v #1309 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:02 v #1310 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:02 d #1311 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/mfc.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/mfc.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:02 i #1312 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/kakao/kakao.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kakao.html.hangul.md.epub }
00:00:02 v #1313 > bc664f6fe58e40fdb09e32888ff175b541ca60bb
00:00:02 d #1314 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kakao.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/kakao/kakao.html.hangul.md.epub; result = 5544 }
00:00:02 i #1315 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/kakao/kakao.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kakao.html.hangul.md.pdf }
00:00:02 d #1316 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kakao.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/kakao/kakao.html.hangul.md.pdf; result = 3849 }
00:00:02 i #1317 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/kakao/kakao.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kakao.html.hangul.md.html }
00:00:02 d #1318 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kakao.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/kakao/kakao.html.hangul.md.html; result = 10331 }
00:00:02 i #1319 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/kakao/kakao.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kakao.html.md.epub }
00:00:02 d #1320 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kakao.html.md.epub; new_path = c:/home/git/vault/dist/data/kakao/kakao.html.md.epub; result = 5462 }
00:00:02 i #1321 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/kakao/kakao.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kakao.html.md.pdf }
00:00:02 d #1322 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kakao.html.md.pdf; new_path = c:/home/git/vault/dist/data/kakao/kakao.html.md.pdf; result = 6189 }
00:00:02 i #1323 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/kakao/kakao.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kakao.html.md.html }
00:00:02 d #1324 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kakao.html.md.html; new_path = c:/home/git/vault/dist/data/kakao/kakao.html.md.html; result = 10254 }
00:00:02 i #1325 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/kakao/kakao.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kakao.html.hangul.md }
00:00:02 d #1326 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kakao.html.hangul.md; new_path = c:/home/git/vault/dist/data/kakao/kakao.html.hangul.md; result = 275 }
00:00:02 v #1327 > 1d96ec9b8172db5a5f0b1e515a843c9f7c3e2eb8
00:00:02 d #1328 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/kakao/kakao.i574n.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/kakao/kakao.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:02 v #1329 > 9dff62934948131bfa2a14d61ea4e056cb9c4c15
00:00:02 v #1330 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:02 i #1331 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/gvk_en-us.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gvk_en-us.hangul.md.epub }
00:00:02 d #1332 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gvk_en-us.hangul.md.epub; new_path = c:/home/git/vault/dist/data/spirituality/gvk_en-us.hangul.md.epub; result = 305445 }
00:00:02 i #1333 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/gvk_en-us.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gvk_en-us.hangul.md.pdf }
00:00:03 d #1334 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gvk_en-us.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/spirituality/gvk_en-us.hangul.md.pdf; result = 393049 }
00:00:03 i #1335 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/gvk_en-us.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gvk_en-us.hangul.md.html }
00:00:03 v #1336 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:03 v #1337 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:03 d #1338 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gvk_en-us.hangul.md.html; new_path = c:/home/git/vault/dist/data/spirituality/gvk_en-us.hangul.md.html; result = 1320097 }
00:00:03 i #1339 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/gvk_en-us.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gvk_en-us.md.epub }
00:00:03 i #1340 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/microsoft/microsoft.i574n.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.i574n.hangul.md.epub }
00:00:03 v #1341 > 'cb0232045c36a04a06163a007ad562c73b568cbf'
00:00:03 i #1342 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/git/git.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\git.hangul.md.epub }
00:00:03 d #1343 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.i574n.hangul.md.epub; new_path = c:/home/git/vault/dist/data/microsoft/microsoft.i574n.hangul.md.epub; result = 5503 }
00:00:03 i #1344 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/microsoft/microsoft.i574n.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.i574n.hangul.md.pdf }
00:00:03 d #1345 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\git.hangul.md.epub; new_path = c:/home/git/vault/dist/data/git/git.hangul.md.epub; result = 7594 }
00:00:03 d #1346 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gvk_en-us.md.epub; new_path = c:/home/git/vault/dist/data/spirituality/gvk_en-us.md.epub; result = 271989 }
00:00:03 d #1347 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.i574n.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/microsoft/microsoft.i574n.hangul.md.pdf; result = 4374 }
00:00:03 i #1348 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/git/git.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\git.hangul.md.pdf }
00:00:03 i #1349 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/gvk_en-us.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gvk_en-us.md.pdf }
00:00:03 i #1350 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/microsoft/microsoft.i574n.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.i574n.hangul.md.html }
00:00:03 d #1351 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\git.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/git/git.hangul.md.pdf; result = 6941 }
00:00:03 i #1352 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/git/git.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\git.hangul.md.html }
00:00:03 d #1353 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.i574n.hangul.md.html; new_path = c:/home/git/vault/dist/data/microsoft/microsoft.i574n.hangul.md.html; result = 10076 }
00:00:03 i #1354 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/microsoft/microsoft.i574n.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.i574n.md.epub }
00:00:03 d #1355 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\git.hangul.md.html; new_path = c:/home/git/vault/dist/data/git/git.hangul.md.html; result = 22492 }
00:00:03 i #1356 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/git/git.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\git.md.epub }
00:00:03 d #1357 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gvk_en-us.md.pdf; new_path = c:/home/git/vault/dist/data/spirituality/gvk_en-us.md.pdf; result = 1037850 }
00:00:03 d #1358 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.i574n.md.epub; new_path = c:/home/git/vault/dist/data/microsoft/microsoft.i574n.md.epub; result = 5444 }
00:00:03 i #1359 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/gvk_en-us.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gvk_en-us.md.html }
00:00:03 i #1360 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/microsoft/microsoft.i574n.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.i574n.md.pdf }
00:00:03 d #1361 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\git.md.epub; new_path = c:/home/git/vault/dist/data/git/git.md.epub; result = 7129 }
00:00:03 i #1362 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/git/git.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\git.md.pdf }
00:00:03 d #1363 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.i574n.md.pdf; new_path = c:/home/git/vault/dist/data/microsoft/microsoft.i574n.md.pdf; result = 5983 }
00:00:03 i #1364 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/microsoft/microsoft.i574n.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.i574n.md.html }
00:00:03 v #1365 > '774e2194fe72bc417e8c0e1df440587de46ba008'
00:00:03 d #1366 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gvk_en-us.md.html; new_path = c:/home/git/vault/dist/data/spirituality/gvk_en-us.md.html; result = 915676 }
00:00:03 d #1367 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\git.md.pdf; new_path = c:/home/git/vault/dist/data/git/git.md.pdf; result = 17923 }
00:00:03 d #1368 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.i574n.md.html; new_path = c:/home/git/vault/dist/data/microsoft/microsoft.i574n.md.html; result = 10052 }
00:00:03 i #1369 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/gvk_en-us.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gvk_en-us.hangul.md }
00:00:03 i #1370 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/git/git.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\git.md.html }
00:00:03 i #1371 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/microsoft/microsoft.i574n.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.i574n.hangul.md }
00:00:03 d #1372 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.i574n.hangul.md; new_path = c:/home/git/vault/dist/data/microsoft/microsoft.i574n.hangul.md; result = 96 }
00:00:03 d #1373 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\git.md.html; new_path = c:/home/git/vault/dist/data/git/git.md.html; result = 19663 }
00:00:03 i #1374 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/git/git.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\git.hangul.md }
00:00:03 d #1375 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/motorcycle/motorcycle.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/motorcycle/motorcycle.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:03 d #1376 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gvk_en-us.hangul.md; new_path = c:/home/git/vault/dist/data/spirituality/gvk_en-us.hangul.md; result = 1201409 }
00:00:03 v #1377 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:03 d #1378 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\git.hangul.md; new_path = c:/home/git/vault/dist/data/git/git.hangul.md; result = 7654 }
00:00:03 d #1379 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/spirituality/gvk_pt-br.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/spirituality/gvk_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:03 d #1380 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/github/github.fc1943s.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/github/github.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:03 d #1381 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/apple/apple.i574n.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/apple/apple.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:03 v #1382 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:03 v #1383 > 431296e1ef3d698ddfa8eb4e42afadb8b9705626
00:00:03 d #1384 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/typing/typing.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/typing/typing.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:03 v #1385 > 851a864bfefadeefdcb491f5c0dc83cd24bafccc
00:00:03 v #1386 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:03 i #1387 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fashion/fashion.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fashion.hangul.md.epub }
00:00:03 d #1388 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fashion.hangul.md.epub; new_path = c:/home/git/vault/dist/data/fashion/fashion.hangul.md.epub; result = 9862 }
00:00:03 i #1389 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fashion/fashion.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fashion.hangul.md.pdf }
00:00:03 d #1390 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fashion.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/fashion/fashion.hangul.md.pdf; result = 9110 }
00:00:03 i #1391 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fashion/fashion.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fashion.hangul.md.html }
00:00:03 v #1392 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:03 d #1393 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fashion.hangul.md.html; new_path = c:/home/git/vault/dist/data/fashion/fashion.hangul.md.html; result = 31947 }
00:00:03 i #1394 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fashion/fashion.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fashion.md.epub }
00:00:03 d #1395 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fashion.md.epub; new_path = c:/home/git/vault/dist/data/fashion/fashion.md.epub; result = 9081 }
00:00:03 i #1396 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fashion/fashion.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fashion.md.pdf }
00:00:03 i #1397 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/mfc.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mfc.html.hangul.md.epub }
00:00:03 d #1398 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mfc.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/mfc.html.hangul.md.epub; result = 5614 }
00:00:03 d #1398 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fashion.md.pdf; new_path = c:/home/git/vault/dist/data/fashion/fashion.md.pdf; result = 25410 }
00:00:03 i #1400 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fashion/fashion.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fashion.md.html }
00:00:03 i #1401 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/mfc.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mfc.html.hangul.md.pdf }
00:00:03 d #1402 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fashion.md.html; new_path = c:/home/git/vault/dist/data/fashion/fashion.md.html; result = 25677 }
00:00:03 d #1403 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mfc.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/mfc.html.hangul.md.pdf; result = 4805 }
00:00:03 i #1404 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fashion/fashion.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fashion.hangul.md }
00:00:03 i #1405 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/mfc.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mfc.html.hangul.md.html }
00:00:03 d #1406 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fashion.hangul.md; new_path = c:/home/git/vault/dist/data/fashion/fashion.hangul.md; result = 16366 }
00:00:03 d #1407 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mfc.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/mfc.html.hangul.md.html; result = 12575 }
00:00:03 v #1408 > '4a4ea71442cf5cddadf09561d5d90f8793a3d59b'
00:00:03 i #1409 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/mfc.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mfc.html.md.epub }
00:00:03 d #1410 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mfc.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/mfc.html.md.epub; result = 5535 }
00:00:03 i #1411 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/mfc.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mfc.html.md.pdf }
00:00:03 d #1412 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/fiction/acting.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/fiction/acting.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:03 d #1413 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mfc.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/mfc.html.md.pdf; result = 5546 }
00:00:03 i #1414 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/mfc.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mfc.html.md.html }
00:00:03 d #1415 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mfc.html.md.html; new_path = c:/home/git/vault/dist/data/chat/mfc.html.md.html; result = 12399 }
00:00:03 i #1416 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/mfc.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mfc.html.hangul.md }
00:00:03 d #1417 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mfc.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/mfc.html.hangul.md; result = 1452 }
00:00:03 d #1418 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Missbaby8.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Missbaby8.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:03 v #1419 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:03 v #1420 > '24ca6b8bb4703b72584fc04f018322ca2fbb243a'
00:00:03 d #1421 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/kakao/kakao.i574n.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/kakao/kakao.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:03 v #1422 > 'aa9b632fd28a65b90889fceeaac081b022d42341'
00:00:03 v #1423 > 774e2194fe72bc417e8c0e1df440587de46ba008
00:00:03 v #1424 > cb0232045c36a04a06163a007ad562c73b568cbf
00:00:03 v #1425 > 'd31795b1f438dc6014c26e770c0731d65ff3aac2'
00:00:03 v #1426 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:03 v #1427 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:03 d #1428 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/motorcycle/motorcycle.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/motorcycle/motorcycle.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:03 d #1429 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/github/github.fc1943s.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/github/github.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:03 v #1430 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:03 v #1431 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:03 i #1432 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.html.hangul.md.epub }
00:00:03 i #1433 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/apple/apple.i574n.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\apple.i574n.hangul.md.epub }
00:00:03 d #1434 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\apple.i574n.hangul.md.epub; new_path = c:/home/git/vault/dist/data/apple/apple.i574n.hangul.md.epub; result = 5510 }
00:00:03 d #1435 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/typing/typing.html.hangul.md.epub; result = 5914 }
00:00:03 i #1436 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/apple/apple.i574n.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\apple.i574n.hangul.md.pdf }
00:00:03 i #1437 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.html.hangul.md.pdf }
00:00:03 d #1438 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\apple.i574n.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/apple/apple.i574n.hangul.md.pdf; result = 4375 }
00:00:03 i #1439 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/apple/apple.i574n.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\apple.i574n.hangul.md.html }
00:00:03 d #1440 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/typing/typing.html.hangul.md.pdf; result = 4977 }
00:00:03 i #1441 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.html.hangul.md.html }
00:00:03 d #1442 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\apple.i574n.hangul.md.html; new_path = c:/home/git/vault/dist/data/apple/apple.i574n.hangul.md.html; result = 10079 }
00:00:03 v #1443 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:03 i #1444 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/apple/apple.i574n.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\apple.i574n.md.epub }
00:00:03 d #1445 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/typing/typing.html.hangul.md.html; result = 11391 }
00:00:03 i #1446 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.html.md.epub }
00:00:03 d #1447 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\apple.i574n.md.epub; new_path = c:/home/git/vault/dist/data/apple/apple.i574n.md.epub; result = 5448 }
00:00:03 i #1448 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/apple/apple.i574n.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\apple.i574n.md.pdf }
00:00:03 d #1449 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.html.md.epub; new_path = c:/home/git/vault/dist/data/typing/typing.html.md.epub; result = 5866 }
00:00:03 i #1450 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.html.md.pdf }
00:00:03 d #1451 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\apple.i574n.md.pdf; new_path = c:/home/git/vault/dist/data/apple/apple.i574n.md.pdf; result = 5913 }
00:00:03 i #1452 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/apple/apple.i574n.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\apple.i574n.md.html }
00:00:03 d #1453 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/spirituality/gvk_pt-br.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/spirituality/gvk_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:03 d #1454 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.html.md.pdf; new_path = c:/home/git/vault/dist/data/typing/typing.html.md.pdf; result = 7480 }
00:00:03 i #1455 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.html.md.html }
00:00:03 d #1456 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\apple.i574n.md.html; new_path = c:/home/git/vault/dist/data/apple/apple.i574n.md.html; result = 10053 }
00:00:03 i #1457 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/apple/apple.i574n.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\apple.i574n.hangul.md }
00:00:03 d #1458 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\apple.i574n.hangul.md; new_path = c:/home/git/vault/dist/data/apple/apple.i574n.hangul.md; result = 98 }
00:00:03 d #1459 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.html.md.html; new_path = c:/home/git/vault/dist/data/typing/typing.html.md.html; result = 11233 }
00:00:03 i #1460 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.html.hangul.md }
00:00:03 d #1461 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.html.hangul.md; new_path = c:/home/git/vault/dist/data/typing/typing.html.hangul.md; result = 1149 }
00:00:03 d #1462 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/art/art.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/art/art.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:03 d #1463 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/typing/typing.i574n.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/typing/typing.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:03 v #1464 > 'c91cdebfb596107523a7aaa85d93130ea828231b'
00:00:03 v #1465 > '87fa470e327b8b916b9ee66974d7484564cde79c'
00:00:03 v #1466 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:03 d #1467 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/fiction/acting.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/fiction/acting.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:03 v #1468 > 4a4ea71442cf5cddadf09561d5d90f8793a3d59b
00:00:03 v #1469 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:03 d #1470 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Missbaby8.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Missbaby8.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:03 v #1471 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:03 i #1472 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/kakao/kakao.i574n.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kakao.i574n.hangul.md.epub }
00:00:03 d #1473 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kakao.i574n.hangul.md.epub; new_path = c:/home/git/vault/dist/data/kakao/kakao.i574n.hangul.md.epub; result = 5507 }
00:00:03 i #1474 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/kakao/kakao.i574n.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kakao.i574n.hangul.md.pdf }
00:00:03 d #1475 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kakao.i574n.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/kakao/kakao.i574n.hangul.md.pdf; result = 4375 }
00:00:03 i #1476 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/kakao/kakao.i574n.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kakao.i574n.hangul.md.html }
00:00:03 d #1477 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kakao.i574n.hangul.md.html; new_path = c:/home/git/vault/dist/data/kakao/kakao.i574n.hangul.md.html; result = 10079 }
00:00:03 i #1478 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/kakao/kakao.i574n.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kakao.i574n.md.epub }
00:00:03 d #1479 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kakao.i574n.md.epub; new_path = c:/home/git/vault/dist/data/kakao/kakao.i574n.md.epub; result = 5446 }
00:00:03 i #1480 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/kakao/kakao.i574n.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kakao.i574n.md.pdf }
00:00:03 d #1481 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kakao.i574n.md.pdf; new_path = c:/home/git/vault/dist/data/kakao/kakao.i574n.md.pdf; result = 5997 }
00:00:03 i #1482 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/kakao/kakao.i574n.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kakao.i574n.md.html }
00:00:03 d #1483 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kakao.i574n.md.html; new_path = c:/home/git/vault/dist/data/kakao/kakao.i574n.md.html; result = 10053 }
00:00:03 v #1484 > aa9b632fd28a65b90889fceeaac081b022d42341
00:00:03 i #1485 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/kakao/kakao.i574n.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kakao.i574n.hangul.md }
00:00:03 d #1486 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kakao.i574n.hangul.md; new_path = c:/home/git/vault/dist/data/kakao/kakao.i574n.hangul.md; result = 99 }
00:00:03 v #1487 > 24ca6b8bb4703b72584fc04f018322ca2fbb243a
00:00:03 d #1488 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/lastfm/lastfm.fc1943s.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/lastfm/lastfm.fc1943s.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:03 v #1489 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:03 i #1490 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.fc1943s.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.fc1943s.hangul.md.epub }
00:00:03 d #1491 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.fc1943s.hangul.md.epub; new_path = c:/home/git/vault/dist/data/github/github.fc1943s.hangul.md.epub; result = 5509 }
00:00:03 i #1492 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.fc1943s.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.fc1943s.hangul.md.pdf }
00:00:03 d #1493 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.fc1943s.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/github/github.fc1943s.hangul.md.pdf; result = 4530 }
00:00:03 i #1494 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.fc1943s.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.fc1943s.hangul.md.html }
00:00:03 v #1495 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:03 v #1496 > '02380a4f67cd6e997b3a6908ff083f06fd787dc3'
00:00:03 d #1497 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.fc1943s.hangul.md.html; new_path = c:/home/git/vault/dist/data/github/github.fc1943s.hangul.md.html; result = 10083 }
00:00:03 i #1498 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.fc1943s.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.fc1943s.md.epub }
00:00:03 i #1499 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/motorcycle/motorcycle.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\motorcycle.hangul.md.epub }
00:00:03 d #1500 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.fc1943s.md.epub; new_path = c:/home/git/vault/dist/data/github/github.fc1943s.md.epub; result = 5448 }
00:00:03 d #1501 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\motorcycle.hangul.md.epub; new_path = c:/home/git/vault/dist/data/motorcycle/motorcycle.hangul.md.epub; result = 27699 }
00:00:03 i #1502 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.fc1943s.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.fc1943s.md.pdf }
00:00:03 i #1503 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/motorcycle/motorcycle.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\motorcycle.hangul.md.pdf }
00:00:03 d #1504 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.fc1943s.md.pdf; new_path = c:/home/git/vault/dist/data/github/github.fc1943s.md.pdf; result = 6403 }
00:00:03 i #1505 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.fc1943s.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.fc1943s.md.html }
00:00:03 v #1506 > d31795b1f438dc6014c26e770c0731d65ff3aac2
00:00:03 v #1507 > '817107c0597fbf70a405d513f5860e2a10c82620'
00:00:03 d #1508 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.fc1943s.md.html; new_path = c:/home/git/vault/dist/data/github/github.fc1943s.md.html; result = 10056 }
00:00:03 i #1509 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.fc1943s.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.fc1943s.hangul.md }
00:00:03 d #1510 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.fc1943s.hangul.md; new_path = c:/home/git/vault/dist/data/github/github.fc1943s.hangul.md; result = 102 }
00:00:03 d #1510 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\motorcycle.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/motorcycle/motorcycle.hangul.md.pdf; result = 32901 }
00:00:03 i #1512 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/motorcycle/motorcycle.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\motorcycle.hangul.md.html }
00:00:03 d #1513 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\motorcycle.hangul.md.html; new_path = c:/home/git/vault/dist/data/motorcycle/motorcycle.hangul.md.html; result = 121331 }
00:00:03 i #1514 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/motorcycle/motorcycle.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\motorcycle.md.epub }
00:00:03 d #1515 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\motorcycle.md.epub; new_path = c:/home/git/vault/dist/data/motorcycle/motorcycle.md.epub; result = 24962 }
00:00:03 d #1516 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/github/github.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/github/github.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:03 i #1517 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/motorcycle/motorcycle.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\motorcycle.md.pdf }
00:00:03 d #1518 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\motorcycle.md.pdf; new_path = c:/home/git/vault/dist/data/motorcycle/motorcycle.md.pdf; result = 89645 }
00:00:03 i #1519 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/motorcycle/motorcycle.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\motorcycle.md.html }
00:00:03 d #1520 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\motorcycle.md.html; new_path = c:/home/git/vault/dist/data/motorcycle/motorcycle.md.html; result = 85924 }
00:00:03 i #1521 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/motorcycle/motorcycle.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\motorcycle.hangul.md }
00:00:03 d #1522 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\motorcycle.hangul.md; new_path = c:/home/git/vault/dist/data/motorcycle/motorcycle.hangul.md; result = 94916 }
00:00:03 v #1523 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:03 d #1524 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/music/mecha-haze.7z.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/music/mecha-haze.7z.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:03 d #1525 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/art/art.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/art/art.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:03 v #1526 > c91cdebfb596107523a7aaa85d93130ea828231b
00:00:03 v #1527 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:03 d #1528 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/typing/typing.i574n.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/typing/typing.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:03 v #1529 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:03 i #1530 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/gvk_pt-br.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gvk_pt-br.hangul.md.epub }
00:00:03 v #1531 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:03 v #1532 > 87fa470e327b8b916b9ee66974d7484564cde79c
00:00:03 d #1533 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gvk_pt-br.hangul.md.epub; new_path = c:/home/git/vault/dist/data/spirituality/gvk_pt-br.hangul.md.epub; result = 329465 }
00:00:03 i #1534 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/gvk_pt-br.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gvk_pt-br.hangul.md.pdf }
00:00:03 i #1535 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/acting.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\acting.hangul.md.epub }
00:00:03 d #1536 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gvk_pt-br.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/spirituality/gvk_pt-br.hangul.md.pdf; result = 414344 }
00:00:03 d #1537 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\acting.hangul.md.epub; new_path = c:/home/git/vault/dist/data/fiction/acting.hangul.md.epub; result = 12679 }
00:00:03 i #1538 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/gvk_pt-br.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gvk_pt-br.hangul.md.html }
00:00:03 i #1539 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/acting.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\acting.hangul.md.pdf }
00:00:03 d #1540 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gvk_pt-br.hangul.md.html; new_path = c:/home/git/vault/dist/data/spirituality/gvk_pt-br.hangul.md.html; result = 1391899 }
00:00:03 i #1541 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/gvk_pt-br.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gvk_pt-br.md.epub }
00:00:03 d #1542 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\acting.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/fiction/acting.hangul.md.pdf; result = 16893 }
00:00:03 i #1543 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/acting.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\acting.hangul.md.html }
00:00:03 d #1544 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\acting.hangul.md.html; new_path = c:/home/git/vault/dist/data/fiction/acting.hangul.md.html; result = 39218 }
00:00:03 i #1545 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/acting.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\acting.md.epub }
00:00:03 d #1546 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\acting.md.epub; new_path = c:/home/git/vault/dist/data/fiction/acting.md.epub; result = 11662 }
00:00:03 i #1547 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/acting.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\acting.md.pdf }
00:00:03 d #1548 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\acting.md.pdf; new_path = c:/home/git/vault/dist/data/fiction/acting.md.pdf; result = 42707 }
00:00:03 d #1549 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gvk_pt-br.md.epub; new_path = c:/home/git/vault/dist/data/spirituality/gvk_pt-br.md.epub; result = 292945 }
00:00:03 i #1550 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/acting.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\acting.md.html }
00:00:03 i #1551 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/gvk_pt-br.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gvk_pt-br.md.pdf }
00:00:03 d #1552 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gvk_pt-br.md.pdf; new_path = c:/home/git/vault/dist/data/spirituality/gvk_pt-br.md.pdf; result = 1102930 }
00:00:03 v #1553 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:03 i #1554 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/gvk_pt-br.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gvk_pt-br.md.html }
00:00:03 d #1555 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\acting.md.html; new_path = c:/home/git/vault/dist/data/fiction/acting.md.html; result = 31463 }
00:00:03 i #1556 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/acting.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\acting.hangul.md }
00:00:03 d #1557 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\acting.hangul.md; new_path = c:/home/git/vault/dist/data/fiction/acting.hangul.md; result = 22076 }
00:00:03 d #1558 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gvk_pt-br.md.html; new_path = c:/home/git/vault/dist/data/spirituality/gvk_pt-br.md.html; result = 991541 }
00:00:03 i #1559 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Missbaby8.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Missbaby8.html.hangul.md.epub }
00:00:03 i #1560 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/gvk_pt-br.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gvk_pt-br.hangul.md }
00:00:03 d #1561 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/fiction/animation.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/fiction/animation.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:03 d #1561 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Missbaby8.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Missbaby8.html.hangul.md.epub; result = 5561 }
00:00:03 i #1563 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Missbaby8.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Missbaby8.html.hangul.md.pdf }
00:00:03 d #1564 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gvk_pt-br.hangul.md; new_path = c:/home/git/vault/dist/data/spirituality/gvk_pt-br.hangul.md; result = 1263050 }
00:00:03 d #1565 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Missbaby8.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Missbaby8.html.hangul.md.pdf; result = 4776 }
00:00:03 i #1566 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Missbaby8.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Missbaby8.html.hangul.md.html }
00:00:03 d #1567 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Missbaby8.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Missbaby8.html.hangul.md.html; result = 11675 }
00:00:03 i #1568 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Missbaby8.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Missbaby8.html.md.epub }
00:00:03 d #1569 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/spirituality/ressurection_pt-br.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/spirituality/ressurection_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:03 v #1570 > '6a22d89b7993d2991e660a9ce858268e16c906fe'
00:00:03 d #1571 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Missbaby8.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Missbaby8.html.md.epub; result = 5494 }
00:00:03 i #1572 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Missbaby8.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Missbaby8.html.md.pdf }
00:00:03 d #1573 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Missbaby8.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Missbaby8.html.md.pdf; result = 5044 }
00:00:03 i #1574 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Missbaby8.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Missbaby8.html.md.html }
00:00:03 d #1575 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Missbaby8.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Missbaby8.html.md.html; result = 11640 }
00:00:03 i #1576 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Missbaby8.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Missbaby8.html.hangul.md }
00:00:03 d #1577 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Missbaby8.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Missbaby8.html.hangul.md; result = 144 }
00:00:03 d #1578 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/MissLullu.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/MissLullu.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:03 v #1579 > '59cafeb2eab9137533d826d1f22e9b6de89480de'
00:00:03 v #1580 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:03 d #1581 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:03 v #1582 > '3aefa48e6c711a297a64c548bd78a747c26bc2ff'
00:00:03 v #1583 > 817107c0597fbf70a405d513f5860e2a10c82620
00:00:03 v #1584 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:03 v #1585 > 02380a4f67cd6e997b3a6908ff083f06fd787dc3
00:00:03 v #1586 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:03 d #1587 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/github/github.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/github/github.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:03 d #1588 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/music/mecha-haze.7z.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/music/mecha-haze.7z.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:03 v #1589 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:03 i #1590 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.i574n.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.i574n.hangul.md.epub }
00:00:03 d #1591 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.i574n.hangul.md.epub; new_path = c:/home/git/vault/dist/data/typing/typing.i574n.hangul.md.epub; result = 5512 }
00:00:03 i #1592 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.i574n.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.i574n.hangul.md.pdf }
00:00:03 d #1593 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.i574n.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/typing/typing.i574n.hangul.md.pdf; result = 4136 }
00:00:03 i #1594 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.i574n.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.i574n.hangul.md.html }
00:00:03 d #1595 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.i574n.hangul.md.html; new_path = c:/home/git/vault/dist/data/typing/typing.i574n.hangul.md.html; result = 10084 }
00:00:03 i #1596 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.i574n.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.i574n.md.epub }
00:00:03 d #1597 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.i574n.md.epub; new_path = c:/home/git/vault/dist/data/typing/typing.i574n.md.epub; result = 5446 }
00:00:03 i #1598 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.i574n.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.i574n.md.pdf }
00:00:03 d #1599 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.i574n.md.pdf; new_path = c:/home/git/vault/dist/data/typing/typing.i574n.md.pdf; result = 6289 }
00:00:03 i #1600 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.i574n.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.i574n.md.html }
00:00:03 d #1601 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.i574n.md.html; new_path = c:/home/git/vault/dist/data/typing/typing.i574n.md.html; result = 10052 }
00:00:03 i #1602 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.i574n.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.i574n.hangul.md }
00:00:03 d #1603 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.i574n.hangul.md; new_path = c:/home/git/vault/dist/data/typing/typing.i574n.hangul.md; result = 104 }
00:00:03 v #1604 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:03 d #1605 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/typing/typing.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/typing/typing.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:03 i #1606 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/art/art.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\art.hangul.md.epub }
00:00:03 d #1607 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\art.hangul.md.epub; new_path = c:/home/git/vault/dist/data/art/art.hangul.md.epub; result = 16105 }
00:00:03 i #1608 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/art/art.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\art.hangul.md.pdf }
00:00:03 d #1609 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\art.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/art/art.hangul.md.pdf; result = 17380 }
00:00:03 i #1610 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/art/art.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\art.hangul.md.html }
00:00:03 d #1611 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\art.hangul.md.html; new_path = c:/home/git/vault/dist/data/art/art.hangul.md.html; result = 65279 }
00:00:03 i #1612 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/art/art.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\art.md.epub }
00:00:03 d #1613 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\art.md.epub; new_path = c:/home/git/vault/dist/data/art/art.md.epub; result = 14777 }
00:00:03 i #1614 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/art/art.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\art.md.pdf }
00:00:03 v #1615 > 'cfdc145226339017389a66169f0e19bba4ca6d65'
00:00:03 d #1616 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\art.md.pdf; new_path = c:/home/git/vault/dist/data/art/art.md.pdf; result = 52219 }
00:00:03 v #1617 > '72ef8b5bb3dcf0197de50ef5778d97b8cb9a03ac'
00:00:03 i #1618 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/art/art.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\art.md.html }
00:00:03 v #1619 > '141f277c8dfa9ad52a25295c5e3a11a62ee6e3ef'
00:00:03 d #1620 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\art.md.html; new_path = c:/home/git/vault/dist/data/art/art.md.html; result = 47098 }
00:00:03 i #1621 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/art/art.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\art.hangul.md }
00:00:03 d #1622 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\art.hangul.md; new_path = c:/home/git/vault/dist/data/art/art.hangul.md; result = 47256 }
00:00:03 d #1623 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/astrology/astrology.fc1943s.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/astrology/astrology.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:03 v #1624 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:03 v #1625 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:03 d #1626 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:03 d #1627 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/MissLullu.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/MissLullu.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:03 v #1628 > 6a22d89b7993d2991e660a9ce858268e16c906fe
00:00:03 v #1629 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:03 d #1630 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/fiction/animation.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/fiction/animation.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:03 v #1631 > 59cafeb2eab9137533d826d1f22e9b6de89480de
00:00:03 v #1632 > 3aefa48e6c711a297a64c548bd78a747c26bc2ff
00:00:03 v #1633 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:03 i #1634 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.html.hangul.md.epub }
00:00:03 d #1635 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.hangul.md.epub; result = 5672 }
00:00:03 v #1636 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:03 i #1637 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.html.hangul.md.pdf }
00:00:03 d #1638 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.hangul.md.pdf; result = 4886 }
00:00:03 i #1639 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.html.hangul.md.epub }
00:00:03 i #1640 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.html.hangul.md.html }
00:00:03 d #1641 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/github/github.html.hangul.md.epub; result = 5650 }
00:00:03 d #1642 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.hangul.md.html; result = 10521 }
00:00:03 i #1643 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.html.hangul.md.pdf }
00:00:03 i #1644 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.html.md.epub }
00:00:03 d #1645 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/github/github.html.hangul.md.pdf; result = 4755 }
00:00:03 v #1646 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:03 i #1647 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.html.hangul.md.html }
00:00:03 d #1648 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.html.md.epub; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.md.epub; result = 5547 }
00:00:03 i #1649 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.html.md.pdf }
00:00:03 d #1650 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/github/github.html.hangul.md.html; result = 10503 }
00:00:03 i #1651 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.html.md.epub }
00:00:03 d #1652 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.html.md.pdf; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.md.pdf; result = 7722 }
00:00:03 i #1653 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.7z.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.7z.hangul.md.epub }
00:00:03 i #1654 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.html.md.html }
00:00:03 d #1655 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.html.md.epub; new_path = c:/home/git/vault/dist/data/github/github.html.md.epub; result = 5534 }
00:00:03 i #1656 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.html.md.pdf }
00:00:03 d #1657 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.7z.hangul.md.epub; new_path = c:/home/git/vault/dist/data/music/mecha-haze.7z.hangul.md.epub; result = 5933 }
00:00:03 d #1658 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.html.md.html; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.md.html; result = 10351 }
00:00:03 i #1659 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.7z.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.7z.hangul.md.pdf }
00:00:03 i #1660 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.html.hangul.md }
00:00:03 d #1660 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.html.md.pdf; new_path = c:/home/git/vault/dist/data/github/github.html.md.pdf; result = 7624 }
00:00:03 i #1662 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.html.md.html }
00:00:03 d #1663 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.7z.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/music/mecha-haze.7z.hangul.md.pdf; result = 8529 }
00:00:03 i #1664 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.7z.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.7z.hangul.md.html }
00:00:03 d #1665 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.html.hangul.md; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.hangul.md; result = 465 }
00:00:03 d #1666 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.html.md.html; new_path = c:/home/git/vault/dist/data/github/github.html.md.html; result = 10367 }
00:00:03 d #1667 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.7z.hangul.md.html; new_path = c:/home/git/vault/dist/data/music/mecha-haze.7z.hangul.md.html; result = 11189 }
00:00:03 i #1668 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.html.hangul.md }
00:00:03 i #1669 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.7z.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.7z.md.epub }
00:00:03 d #1670 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/lastfm/lastfm.fc1943s.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/lastfm/lastfm.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:03 d #1671 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.html.hangul.md; new_path = c:/home/git/vault/dist/data/github/github.html.hangul.md; result = 423 }
00:00:03 d #1672 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.7z.md.epub; new_path = c:/home/git/vault/dist/data/music/mecha-haze.7z.md.epub; result = 5796 }
00:00:03 i #1673 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.7z.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.7z.md.pdf }
00:00:03 d #1674 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.7z.md.pdf; new_path = c:/home/git/vault/dist/data/music/mecha-haze.7z.md.pdf; result = 12072 }
00:00:03 i #1675 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.7z.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.7z.md.html }
00:00:03 d #1676 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.7z.md.html; new_path = c:/home/git/vault/dist/data/music/mecha-haze.7z.md.html; result = 11184 }
00:00:03 i #1677 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.7z.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.7z.hangul.md }
00:00:03 d #1678 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.7z.hangul.md; new_path = c:/home/git/vault/dist/data/music/mecha-haze.7z.hangul.md; result = 1014 }
00:00:03 d #1679 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/github/github.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/github/github.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:03 v #1680 > '2eaad8018400c59788eb9fdfb158408967c2a680'
00:00:03 d #1681 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/music/mecha-haze.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/music/mecha-haze.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:03 v #1682 > '41cae76c6cc16843a084f0ce3da67875305b0e79'
00:00:03 v #1683 > 141f277c8dfa9ad52a25295c5e3a11a62ee6e3ef
00:00:03 v #1684 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:03 d #1685 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/typing/typing.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/typing/typing.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:03 v #1686 > cfdc145226339017389a66169f0e19bba4ca6d65
00:00:03 v #1687 > 72ef8b5bb3dcf0197de50ef5778d97b8cb9a03ac
00:00:03 v #1688 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:03 d #1689 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/astrology/astrology.fc1943s.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/astrology/astrology.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:03 v #1690 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:03 v #1691 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:03 i #1692 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ressurection_pt-br.hangul.md.epub }
00:00:03 i #1693 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/MissLullu.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\MissLullu.html.hangul.md.epub }
00:00:03 v #1694 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:03 d #1695 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\MissLullu.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/MissLullu.html.hangul.md.epub; result = 5561 }
00:00:03 d #1695 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ressurection_pt-br.hangul.md.epub; new_path = c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.hangul.md.epub; result = 206420 }
00:00:03 i #1697 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/MissLullu.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\MissLullu.html.hangul.md.pdf }
00:00:03 i #1698 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ressurection_pt-br.hangul.md.pdf }
00:00:03 i #1699 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/animation.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\animation.hangul.md.epub }
00:00:03 d #1700 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\MissLullu.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/MissLullu.html.hangul.md.pdf; result = 4625 }
00:00:03 i #1701 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/MissLullu.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\MissLullu.html.hangul.md.html }
00:00:03 d #1702 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ressurection_pt-br.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.hangul.md.pdf; result = 208459 }
00:00:03 d #1703 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\animation.hangul.md.epub; new_path = c:/home/git/vault/dist/data/fiction/animation.hangul.md.epub; result = 30134 }
00:00:03 i #1704 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ressurection_pt-br.hangul.md.html }
00:00:03 i #1705 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/animation.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\animation.hangul.md.pdf }
00:00:03 d #1706 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\MissLullu.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/MissLullu.html.hangul.md.html; result = 11674 }
00:00:03 i #1707 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/MissLullu.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\MissLullu.html.md.epub }
00:00:03 d #1708 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\MissLullu.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/MissLullu.html.md.epub; result = 5495 }
00:00:03 d #1709 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\animation.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/fiction/animation.hangul.md.pdf; result = 43350 }
00:00:03 d #1710 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ressurection_pt-br.hangul.md.html; new_path = c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.hangul.md.html; result = 855278 }
00:00:03 i #1711 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/animation.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\animation.hangul.md.html }
00:00:03 i #1712 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/MissLullu.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\MissLullu.html.md.pdf }
00:00:03 i #1713 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ressurection_pt-br.md.epub }
00:00:03 d #1714 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\MissLullu.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/MissLullu.html.md.pdf; result = 4937 }
00:00:03 d #1714 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\animation.hangul.md.html; new_path = c:/home/git/vault/dist/data/fiction/animation.hangul.md.html; result = 123121 }
00:00:03 i #1716 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/MissLullu.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\MissLullu.html.md.html }
00:00:03 i #1717 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/animation.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\animation.md.epub }
00:00:03 d #1718 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ressurection_pt-br.md.epub; new_path = c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.md.epub; result = 181148 }
00:00:03 i #1719 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ressurection_pt-br.md.pdf }
00:00:03 d #1720 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\MissLullu.html.md.html; new_path = c:/home/git/vault/dist/data/chat/MissLullu.html.md.html; result = 11640 }
00:00:03 d #1721 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\animation.md.epub; new_path = c:/home/git/vault/dist/data/fiction/animation.md.epub; result = 27052 }
00:00:03 i #1722 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/MissLullu.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\MissLullu.html.hangul.md }
00:00:03 i #1723 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/animation.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\animation.md.pdf }
00:00:03 d #1724 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\MissLullu.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/MissLullu.html.hangul.md; result = 146 }
00:00:03 d #1725 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/NicolePowell.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/NicolePowell.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:03 d #1726 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\animation.md.pdf; new_path = c:/home/git/vault/dist/data/fiction/animation.md.pdf; result = 106440 }
00:00:03 i #1727 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/animation.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\animation.md.html }
00:00:03 d #1728 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ressurection_pt-br.md.pdf; new_path = c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.md.pdf; result = 646237 }
00:00:03 i #1729 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ressurection_pt-br.md.html }
00:00:03 d #1730 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\animation.md.html; new_path = c:/home/git/vault/dist/data/fiction/animation.md.html; result = 90081 }
00:00:03 i #1731 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/animation.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\animation.hangul.md }
00:00:03 d #1732 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\animation.hangul.md; new_path = c:/home/git/vault/dist/data/fiction/animation.hangul.md; result = 95379 }
00:00:03 d #1733 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ressurection_pt-br.md.html; new_path = c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.md.html; result = 592691 }
00:00:03 i #1734 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ressurection_pt-br.hangul.md }
00:00:03 d #1735 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/fiction/comics.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/fiction/comics.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:03 d #1736 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ressurection_pt-br.hangul.md; new_path = c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.hangul.md; result = 822094 }
00:00:03 d #1737 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/spirituality/spirituality.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/spirituality/spirituality.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:03 v #1738 > '543b669227c1dd7bd85791edff81e3ceabaca885'
00:00:03 v #1739 > '958832121d0f20dc5c6868c06bb576d70790c141'
00:00:03 v #1740 > '27afa1d088c59f862a66f286a298bdb2682ff16d'
00:00:03 v #1741 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:03 d #1742 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:03 v #1743 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:03 d #1744 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/music/mecha-haze.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/music/mecha-haze.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:03 v #1745 > 2eaad8018400c59788eb9fdfb158408967c2a680
00:00:03 v #1746 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:03 d #1747 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/github/github.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/github/github.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:03 v #1748 > 41cae76c6cc16843a084f0ce3da67875305b0e79
00:00:03 v #1749 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:03 v #1750 > '668f5e089fc908abc6eb2a47b2ff61beb7cb633f'
00:00:03 v #1751 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:03 i #1752 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.fc1943s.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.fc1943s.hangul.md.epub }
00:00:03 i #1753 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.hangul.md.epub }
00:00:03 d #1754 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.fc1943s.hangul.md.epub; new_path = c:/home/git/vault/dist/data/astrology/astrology.fc1943s.hangul.md.epub; result = 43114 }
00:00:03 i #1755 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.fc1943s.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.fc1943s.hangul.md.pdf }
00:00:03 d #1756 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.hangul.md.epub; new_path = c:/home/git/vault/dist/data/typing/typing.hangul.md.epub; result = 6711 }
00:00:03 i #1757 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.hangul.md.pdf }
00:00:03 d #1758 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.fc1943s.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/astrology/astrology.fc1943s.hangul.md.pdf; result = 116003 }
00:00:03 i #1759 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.fc1943s.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.fc1943s.hangul.md.html }
00:00:03 d #1760 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/typing/typing.hangul.md.pdf; result = 6124 }
00:00:03 i #1761 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.hangul.md.html }
00:00:03 d #1762 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.fc1943s.hangul.md.html; new_path = c:/home/git/vault/dist/data/astrology/astrology.fc1943s.hangul.md.html; result = 217718 }
00:00:03 i #1763 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.fc1943s.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.fc1943s.md.epub }
00:00:03 d #1764 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.hangul.md.html; new_path = c:/home/git/vault/dist/data/typing/typing.hangul.md.html; result = 13344 }
00:00:03 i #1765 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.md.epub }
00:00:03 v #1766 > '5bd8f037f38c36f4f81dbf9c7ba66e9a0d8594e8'
00:00:03 d #1767 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.md.epub; new_path = c:/home/git/vault/dist/data/typing/typing.md.epub; result = 6377 }
00:00:03 d #1768 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.fc1943s.md.epub; new_path = c:/home/git/vault/dist/data/astrology/astrology.fc1943s.md.epub; result = 39894 }
00:00:03 i #1769 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.fc1943s.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.fc1943s.md.pdf }
00:00:03 i #1769 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.md.pdf }
00:00:03 d #1771 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.md.pdf; new_path = c:/home/git/vault/dist/data/typing/typing.md.pdf; result = 14671 }
00:00:03 i #1772 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.md.html }
00:00:03 d #1773 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.fc1943s.md.pdf; new_path = c:/home/git/vault/dist/data/astrology/astrology.fc1943s.md.pdf; result = 186037 }
00:00:03 i #1774 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.fc1943s.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.fc1943s.md.html }
00:00:03 d #1775 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.md.html; new_path = c:/home/git/vault/dist/data/typing/typing.md.html; result = 12254 }
00:00:03 i #1776 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.hangul.md }
00:00:03 d #1777 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.hangul.md; new_path = c:/home/git/vault/dist/data/typing/typing.hangul.md; result = 3116 }
00:00:03 d #1778 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.fc1943s.md.html; new_path = c:/home/git/vault/dist/data/astrology/astrology.fc1943s.md.html; result = 173538 }
00:00:03 v #1779 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:03 i #1780 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.fc1943s.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.fc1943s.hangul.md }
00:00:03 d #1781 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.fc1943s.hangul.md; new_path = c:/home/git/vault/dist/data/astrology/astrology.fc1943s.hangul.md; result = 153511 }
00:00:03 d #1782 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/NicolePowell.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/NicolePowell.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:03 d #1783 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/vim/vimrc.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/vim/vimrc.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:03 d #1784 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/astrology/astrology.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/astrology/astrology.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:03 v #1785 > 'da686aa9d0ac03f64ff44dbebfcaf3fa7dacdf6a'
00:00:03 v #1786 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:03 d #1787 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/fiction/comics.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/fiction/comics.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:03 v #1788 > 543b669227c1dd7bd85791edff81e3ceabaca885
00:00:03 v #1789 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:03 v #1790 > 958832121d0f20dc5c6868c06bb576d70790c141
00:00:03 d #1791 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/spirituality/spirituality.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/spirituality/spirituality.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:03 v #1792 > 27afa1d088c59f862a66f286a298bdb2682ff16d
00:00:03 v #1793 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:03 v #1794 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:03 i #1795 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.html.hangul.md.epub }
00:00:03 d #1796 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/music/mecha-haze.html.hangul.md.epub; result = 5578 }
00:00:03 i #1797 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.hangul.md.epub }
00:00:03 i #1798 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.html.hangul.md.pdf }
00:00:03 d #1799 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/music/mecha-haze.html.hangul.md.pdf; result = 4748 }
00:00:03 d #1800 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.hangul.md.epub; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.hangul.md.epub; result = 5502 }
00:00:03 i #1801 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.html.hangul.md.html }
00:00:03 i #1802 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.hangul.md.pdf }
00:00:03 d #1803 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/music/mecha-haze.html.hangul.md.html; result = 10179 }
00:00:03 d #1803 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.hangul.md.pdf; result = 4283 }
00:00:03 i #1805 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.html.md.epub }
00:00:03 i #1806 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.hangul.md.html }
00:00:03 d #1807 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.html.md.epub; new_path = c:/home/git/vault/dist/data/music/mecha-haze.html.md.epub; result = 5488 }
00:00:03 d #1808 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.hangul.md.html; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.hangul.md.html; result = 10079 }
00:00:03 i #1809 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.html.md.pdf }
00:00:03 i #1810 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.md.epub }
00:00:03 d #1811 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.md.epub; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.md.epub; result = 5441 }
00:00:03 i #1812 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.md.pdf }
00:00:03 d #1813 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.html.md.pdf; new_path = c:/home/git/vault/dist/data/music/mecha-haze.html.md.pdf; result = 7490 }
00:00:03 v #1814 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:03 i #1815 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.html.md.html }
00:00:03 d #1816 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.md.pdf; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.md.pdf; result = 5892 }
00:00:03 d #1817 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.html.md.html; new_path = c:/home/git/vault/dist/data/music/mecha-haze.html.md.html; result = 10116 }
00:00:03 i #1818 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.md.html }
00:00:03 i #1819 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.html.hangul.md }
00:00:03 d #1820 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.html.hangul.md; new_path = c:/home/git/vault/dist/data/music/mecha-haze.html.hangul.md; result = 208 }
00:00:03 i #1821 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.hangul.md.epub }
00:00:03 d #1822 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.md.html; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.md.html; result = 10049 }
00:00:03 d #1823 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.hangul.md.epub; new_path = c:/home/git/vault/dist/data/github/github.hangul.md.epub; result = 5535 }
00:00:03 i #1824 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.hangul.md }
00:00:03 i #1825 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.hangul.md.pdf }
00:00:03 d #1826 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/music/mecha-haze.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/music/mecha-haze.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:03 d #1827 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/github/github.hangul.md.pdf; result = 4127 }
00:00:03 i #1828 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.hangul.md.html }
00:00:03 d #1829 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.hangul.md; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.hangul.md; result = 99 }
00:00:03 d #1830 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.hangul.md.html; new_path = c:/home/git/vault/dist/data/github/github.hangul.md.html; result = 10048 }
00:00:03 i #1831 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.md.epub }
00:00:03 d #1832 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.md.epub; new_path = c:/home/git/vault/dist/data/github/github.md.epub; result = 5492 }
00:00:03 i #1833 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.md.pdf }
00:00:03 d #1834 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/lastfm/lastfm.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/lastfm/lastfm.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:03 d #1835 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.md.pdf; new_path = c:/home/git/vault/dist/data/github/github.md.pdf; result = 6161 }
00:00:03 i #1836 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.md.html }
00:00:03 d #1837 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.md.html; new_path = c:/home/git/vault/dist/data/github/github.md.html; result = 10235 }
00:00:03 i #1838 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.hangul.md }
00:00:03 d #1839 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.hangul.md; new_path = c:/home/git/vault/dist/data/github/github.hangul.md; result = 118 }
00:00:03 v #1840 > 668f5e089fc908abc6eb2a47b2ff61beb7cb633f
00:00:03 d #1841 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/google/google.fc1943s.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/google/google.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:03 v #1842 > '4007a55af935129be5481c0874a4c074bd62ad70'
00:00:03 v #1842 > '3366dc77515fb705fc648bdabb7f4020a39d5abb'
00:00:03 v #1844 > 5bd8f037f38c36f4f81dbf9c7ba66e9a0d8594e8
00:00:03 v #1845 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:03 i #1846 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/NicolePowell.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\NicolePowell.html.hangul.md.epub }
00:00:03 v #1847 > da686aa9d0ac03f64ff44dbebfcaf3fa7dacdf6a
00:00:03 d #1848 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\NicolePowell.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/NicolePowell.html.hangul.md.epub; result = 5567 }
00:00:03 i #1849 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/NicolePowell.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\NicolePowell.html.hangul.md.pdf }
00:00:03 d #1850 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\NicolePowell.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/NicolePowell.html.hangul.md.pdf; result = 4623 }
00:00:03 i #1851 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/NicolePowell.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\NicolePowell.html.hangul.md.html }
00:00:03 d #1852 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\NicolePowell.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/NicolePowell.html.hangul.md.html; result = 11680 }
00:00:03 i #1853 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/NicolePowell.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\NicolePowell.html.md.epub }
00:00:03 d #1854 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\NicolePowell.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/NicolePowell.html.md.epub; result = 5495 }
00:00:03 i #1855 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/NicolePowell.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\NicolePowell.html.md.pdf }
00:00:03 d #1856 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\NicolePowell.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/NicolePowell.html.md.pdf; result = 5026 }
00:00:03 i #1857 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/NicolePowell.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\NicolePowell.html.md.html }
00:00:03 v #1858 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:03 d #1859 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\NicolePowell.html.md.html; new_path = c:/home/git/vault/dist/data/chat/NicolePowell.html.md.html; result = 11643 }
00:00:03 i #1860 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/NicolePowell.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\NicolePowell.html.hangul.md }
00:00:03 d #1861 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\NicolePowell.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/NicolePowell.html.hangul.md; result = 149 }
00:00:03 v #1862 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:03 d #1863 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/astrology/astrology.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/astrology/astrology.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:03 d #1864 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/vim/vimrc.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/vim/vimrc.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:03 d #1865 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Olivia.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Olivia.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:03 v #1866 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:03 v #1867 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:03 i #1868 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.hangul.md.epub }
00:00:03 d #1869 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.hangul.md.epub; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.hangul.md.epub; result = 26366 }
00:00:03 i #1870 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.hangul.md.pdf }
00:00:03 d #1871 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.hangul.md.pdf; result = 27386 }
00:00:03 i #1872 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/comics.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\comics.hangul.md.epub }
00:00:03 i #1873 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.hangul.md.html }
00:00:03 d #1874 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\comics.hangul.md.epub; new_path = c:/home/git/vault/dist/data/fiction/comics.hangul.md.epub; result = 18256 }
00:00:03 d #1875 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.hangul.md.html; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.hangul.md.html; result = 98846 }
00:00:03 i #1876 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/comics.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\comics.hangul.md.pdf }
00:00:03 i #1877 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.md.epub }
00:00:04 d #1878 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\comics.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/fiction/comics.hangul.md.pdf; result = 21904 }
00:00:04 i #1879 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/comics.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\comics.hangul.md.html }
00:00:04 d #1880 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.md.epub; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.md.epub; result = 24236 }
00:00:04 i #1881 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.md.pdf }
00:00:04 d #1882 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\comics.hangul.md.html; new_path = c:/home/git/vault/dist/data/fiction/comics.hangul.md.html; result = 65859 }
00:00:04 i #1883 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/comics.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\comics.md.epub }
00:00:04 d #1884 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.md.pdf; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.md.pdf; result = 81214 }
00:00:04 i #1885 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.md.html }
00:00:04 d #1886 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\comics.md.epub; new_path = c:/home/git/vault/dist/data/fiction/comics.md.epub; result = 16684 }
00:00:04 i #1887 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/comics.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\comics.md.pdf }
00:00:04 d #1888 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.md.html; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.md.html; result = 72012 }
00:00:04 i #1889 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.hangul.md }
00:00:04 d #1890 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\comics.md.pdf; new_path = c:/home/git/vault/dist/data/fiction/comics.md.pdf; result = 56705 }
00:00:04 i #1891 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/comics.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\comics.md.html }
00:00:04 d #1892 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.hangul.md; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.hangul.md; result = 76071 }
00:00:04 d #1893 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\comics.md.html; new_path = c:/home/git/vault/dist/data/fiction/comics.md.html; result = 49909 }
00:00:04 i #1894 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/comics.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\comics.hangul.md }
00:00:04 d #1895 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/spirituality/spirituality.mp4.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/spirituality/spirituality.mp4.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:04 d #1896 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\comics.hangul.md; new_path = c:/home/git/vault/dist/data/fiction/comics.hangul.md; result = 45838 }
00:00:04 d #1897 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/fiction/fiction.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/fiction/fiction.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:04 v #1898 > '30411c646f14862f669ca43b0cc4df49622b801f'
00:00:04 v #1898 > '39a4aa5522c29d1e4a6cc2af335e668046fd4cf2'
00:00:04 v #1900 > 'df90480d7167c6c24119ee562da030d08f4ff6cf'
00:00:04 v #1901 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:04 d #1902 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/lastfm/lastfm.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/lastfm/lastfm.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:04 v #1903 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:04 d #1904 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/google/google.fc1943s.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/google/google.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:04 v #1905 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:04 d #1906 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/music/mecha-haze.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/music/mecha-haze.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:04 v #1907 > 4007a55af935129be5481c0874a4c074bd62ad70
00:00:04 v #1908 > 3366dc77515fb705fc648bdabb7f4020a39d5abb
00:00:04 v #1909 > '1a2393e1a9c94d35872b7e923027423963dbef31'
00:00:04 v #1910 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:04 i #1911 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.html.hangul.md.epub }
00:00:04 d #1912 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/astrology/astrology.html.hangul.md.epub; result = 5519 }
00:00:04 i #1913 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.html.hangul.md.pdf }
00:00:04 d #1914 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/astrology/astrology.html.hangul.md.pdf; result = 2611 }
00:00:04 i #1915 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.html.hangul.md.html }
00:00:04 d #1916 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/astrology/astrology.html.hangul.md.html; result = 10075 }
00:00:04 i #1917 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.html.md.epub }
00:00:04 d #1918 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.html.md.epub; new_path = c:/home/git/vault/dist/data/astrology/astrology.html.md.epub; result = 5450 }
00:00:04 i #1919 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.html.md.pdf }
00:00:04 v #1920 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:04 d #1921 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.html.md.pdf; new_path = c:/home/git/vault/dist/data/astrology/astrology.html.md.pdf; result = 5870 }
00:00:04 i #1922 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.html.md.html }
00:00:04 d #1923 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.html.md.html; new_path = c:/home/git/vault/dist/data/astrology/astrology.html.md.html; result = 10134 }
00:00:04 i #1924 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.html.hangul.md }
00:00:04 d #1925 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Olivia.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Olivia.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:04 v #1926 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:04 d #1927 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.html.hangul.md; new_path = c:/home/git/vault/dist/data/astrology/astrology.html.hangul.md; result = 144 }
00:00:04 i #1928 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/vim/vimrc.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vimrc.hangul.md.epub }
00:00:04 d #1929 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vimrc.hangul.md.epub; new_path = c:/home/git/vault/dist/data/vim/vimrc.hangul.md.epub; result = 6821 }
00:00:04 i #1930 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/vim/vimrc.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vimrc.hangul.md.pdf }
00:00:04 d #1931 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vimrc.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/vim/vimrc.hangul.md.pdf; result = 7869 }
00:00:04 i #1932 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/vim/vimrc.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vimrc.hangul.md.html }
00:00:04 d #1933 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/astrology/astrology.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/astrology/astrology.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:04 d #1934 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vimrc.hangul.md.html; new_path = c:/home/git/vault/dist/data/vim/vimrc.hangul.md.html; result = 20818 }
00:00:04 i #1935 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/vim/vimrc.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vimrc.md.epub }
00:00:04 d #1936 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vimrc.md.epub; new_path = c:/home/git/vault/dist/data/vim/vimrc.md.epub; result = 6589 }
00:00:04 i #1937 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/vim/vimrc.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vimrc.md.pdf }
00:00:04 v #1938 > 'c4624204251d68c706be6da67cea892f5bfeead7'
00:00:04 d #1939 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vimrc.md.pdf; new_path = c:/home/git/vault/dist/data/vim/vimrc.md.pdf; result = 13552 }
00:00:04 i #1940 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/vim/vimrc.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vimrc.md.html }
00:00:04 d #1941 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vimrc.md.html; new_path = c:/home/git/vault/dist/data/vim/vimrc.md.html; result = 18853 }
00:00:04 i #1942 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/vim/vimrc.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vimrc.hangul.md }
00:00:04 d #1943 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vimrc.hangul.md; new_path = c:/home/git/vault/dist/data/vim/vimrc.hangul.md; result = 5518 }
00:00:04 d #1944 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/warez/warez.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/warez/warez.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:04 v #1945 > '35863a5ce4d23b6a72ec739442c0fd940b0a5328'
00:00:04 v #1946 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:04 d #1947 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/spirituality/spirituality.mp4.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/spirituality/spirituality.mp4.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:04 v #1948 > 39a4aa5522c29d1e4a6cc2af335e668046fd4cf2
00:00:04 v #1949 > df90480d7167c6c24119ee562da030d08f4ff6cf
00:00:04 v #1950 > 30411c646f14862f669ca43b0cc4df49622b801f
00:00:04 v #1951 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:04 d #1952 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/fiction/fiction.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/fiction/fiction.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:04 v #1953 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:04 v #1954 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:04 i #1955 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.pdf.hangul.md.epub }
00:00:04 i #1956 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/google/google.fc1943s.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\google.fc1943s.hangul.md.epub }
00:00:04 d #1957 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/music/mecha-haze.pdf.hangul.md.epub; result = 5973 }
00:00:04 i #1958 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.pdf.hangul.md.pdf }
00:00:04 d #1959 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/music/mecha-haze.pdf.hangul.md.pdf; result = 5433 }
00:00:04 i #1960 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.pdf.hangul.md.html }
00:00:04 d #1961 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\google.fc1943s.hangul.md.epub; new_path = c:/home/git/vault/dist/data/google/google.fc1943s.hangul.md.epub; result = 5542 }
00:00:04 i #1962 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/google/google.fc1943s.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\google.fc1943s.hangul.md.pdf }
00:00:04 d #1963 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/music/mecha-haze.pdf.hangul.md.html; result = 11802 }
00:00:04 d #1964 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\google.fc1943s.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/google/google.fc1943s.hangul.md.pdf; result = 4582 }
00:00:04 i #1965 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.pdf.md.epub }
00:00:04 i #1966 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/google/google.fc1943s.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\google.fc1943s.hangul.md.html }
00:00:04 v #1967 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:04 d #1968 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.pdf.md.epub; new_path = c:/home/git/vault/dist/data/music/mecha-haze.pdf.md.epub; result = 5777 }
00:00:04 d #1969 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\google.fc1943s.hangul.md.html; new_path = c:/home/git/vault/dist/data/google/google.fc1943s.hangul.md.html; result = 10303 }
00:00:04 i #1970 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.pdf.md.pdf }
00:00:04 i #1971 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/google/google.fc1943s.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\google.fc1943s.md.epub }
00:00:04 d #1972 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/music/mecha-haze.pdf.md.pdf; result = 9929 }
00:00:04 d #1973 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\google.fc1943s.md.epub; new_path = c:/home/git/vault/dist/data/google/google.fc1943s.md.epub; result = 5465 }
00:00:04 i #1974 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/google/google.fc1943s.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\google.fc1943s.md.pdf }
00:00:04 i #1975 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.pdf.md.html }
00:00:04 d #1976 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\google.fc1943s.md.pdf; new_path = c:/home/git/vault/dist/data/google/google.fc1943s.md.pdf; result = 6447 }
00:00:04 d #1977 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.pdf.md.html; new_path = c:/home/git/vault/dist/data/music/mecha-haze.pdf.md.html; result = 11242 }
00:00:04 i #1978 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/google/google.fc1943s.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\google.fc1943s.md.html }
00:00:04 i #1979 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.pdf.hangul.md }
00:00:04 i #1980 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.html.hangul.md.epub }
00:00:04 d #1981 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\google.fc1943s.md.html; new_path = c:/home/git/vault/dist/data/google/google.fc1943s.md.html; result = 10241 }
00:00:04 d #1982 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/music/mecha-haze.pdf.hangul.md; result = 1657 }
00:00:04 i #1983 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/google/google.fc1943s.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\google.fc1943s.hangul.md }
00:00:04 d #1984 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.html.hangul.md.epub; result = 5684 }
00:00:04 i #1985 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.html.hangul.md.pdf }
00:00:04 d #1986 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\google.fc1943s.hangul.md; new_path = c:/home/git/vault/dist/data/google/google.fc1943s.hangul.md; result = 221 }
00:00:04 d #1987 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.html.hangul.md.pdf; result = 4460 }
00:00:04 i #1988 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.html.hangul.md.html }
00:00:04 d #1989 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/music/mixtape-pluto.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/music/mixtape-pluto.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:04 d #1990 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.html.hangul.md.html; result = 12646 }
00:00:04 i #1991 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.html.md.epub }
00:00:04 d #1992 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/google/google.i574n.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/google/google.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:04 d #1993 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.html.md.epub; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.html.md.epub; result = 5561 }
00:00:04 i #1994 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.html.md.pdf }
00:00:04 d #1995 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.html.md.pdf; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.html.md.pdf; result = 7737 }
00:00:04 i #1996 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.html.md.html }
00:00:04 d #1997 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.html.md.html; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.html.md.html; result = 12153 }
00:00:04 i #1998 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.html.hangul.md }
00:00:04 d #1999 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.html.hangul.md; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.html.hangul.md; result = 1700 }
00:00:04 d #2000 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/linux/linux.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/linux/linux.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:04 v #2001 > 1a2393e1a9c94d35872b7e923027423963dbef31
00:00:04 v #2002 > '2c06b013af1d068ad31ba331c43998c1e4bed274'
00:00:04 v #2003 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:04 v #2004 > 'd6e3efa4eceeb79061d0e8a8d516036f770d4691'
00:00:04 i #2005 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Olivia.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Olivia.html.hangul.md.epub }
00:00:04 d #2006 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Olivia.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Olivia.html.hangul.md.epub; result = 5563 }
00:00:04 i #2007 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Olivia.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Olivia.html.hangul.md.pdf }
00:00:04 d #2008 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Olivia.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Olivia.html.hangul.md.pdf; result = 4627 }
00:00:04 i #2009 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Olivia.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Olivia.html.hangul.md.html }
00:00:04 d #2010 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Olivia.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Olivia.html.hangul.md.html; result = 11674 }
00:00:04 i #2011 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Olivia.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Olivia.html.md.epub }
00:00:04 d #2012 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Olivia.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Olivia.html.md.epub; result = 5490 }
00:00:04 i #2013 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Olivia.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Olivia.html.md.pdf }
00:00:04 d #2014 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Olivia.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Olivia.html.md.pdf; result = 4814 }
00:00:04 i #2015 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Olivia.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Olivia.html.md.html }
00:00:04 v #2016 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:04 d #2017 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Olivia.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Olivia.html.md.html; result = 11637 }
00:00:04 i #2018 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Olivia.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Olivia.html.hangul.md }
00:00:04 d #2019 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Olivia.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Olivia.html.hangul.md; result = 143 }
00:00:04 d #2020 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/astrology/astrology.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/astrology/astrology.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:04 d #2021 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Red_Flower203.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Red_Flower203.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:04 v #2022 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:04 d #2023 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/warez/warez.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/warez/warez.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:04 v #2024 > c4624204251d68c706be6da67cea892f5bfeead7
00:00:04 v #2025 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:04 v #2026 > 35863a5ce4d23b6a72ec739442c0fd940b0a5328
00:00:04 i #2027 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.mp4.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.mp4.hangul.md.epub }
00:00:04 d #2028 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.mp4.hangul.md.epub; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.mp4.hangul.md.epub; result = 5778 }
00:00:04 i #2029 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.mp4.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.mp4.hangul.md.pdf }
00:00:04 d #2030 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.mp4.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.mp4.hangul.md.pdf; result = 5975 }
00:00:04 i #2031 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.mp4.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.mp4.hangul.md.html }
00:00:04 d #2032 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.mp4.hangul.md.html; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.mp4.hangul.md.html; result = 11198 }
00:00:04 i #2033 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.mp4.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.mp4.md.epub }
00:00:04 d #2034 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.mp4.md.epub; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.mp4.md.epub; result = 5630 }
00:00:04 i #2035 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.mp4.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.mp4.md.pdf }
00:00:04 d #2036 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.mp4.md.pdf; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.mp4.md.pdf; result = 12974 }
00:00:04 i #2037 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.mp4.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.mp4.md.html }
00:00:04 d #2038 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.mp4.md.html; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.mp4.md.html; result = 10750 }
00:00:04 i #2039 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.mp4.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.mp4.hangul.md }
00:00:04 d #2040 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.mp4.hangul.md; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.mp4.hangul.md; result = 1050 }
00:00:04 d #2041 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/spirituality/spirituality.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/spirituality/spirituality.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:04 v #2042 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:04 i #2043 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/fiction.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fiction.hangul.md.epub }
00:00:04 d #2044 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fiction.hangul.md.epub; new_path = c:/home/git/vault/dist/data/fiction/fiction.hangul.md.epub; result = 26435 }
00:00:04 i #2045 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/fiction.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fiction.hangul.md.pdf }
00:00:04 d #2046 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fiction.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/fiction/fiction.hangul.md.pdf; result = 30751 }
00:00:04 i #2047 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/fiction.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fiction.hangul.md.html }
00:00:04 d #2048 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fiction.hangul.md.html; new_path = c:/home/git/vault/dist/data/fiction/fiction.hangul.md.html; result = 98107 }
00:00:04 i #2049 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/fiction.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fiction.md.epub }
00:00:04 v #2050 > '7856f655f4f8476bfb86169e7afb3d5434957dee'
00:00:04 v #2051 > '1013875caf0a332dc86ee8da724f19e74e796252'
00:00:04 v #2052 > '9dd2ff3e83c994f7a66cf9f856ced92801c3c31f'
00:00:04 d #2053 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fiction.md.epub; new_path = c:/home/git/vault/dist/data/fiction/fiction.md.epub; result = 23746 }
00:00:04 i #2054 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/fiction.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fiction.md.pdf }
00:00:04 d #2055 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fiction.md.pdf; new_path = c:/home/git/vault/dist/data/fiction/fiction.md.pdf; result = 87292 }
00:00:04 i #2056 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/fiction.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fiction.md.html }
00:00:04 d #2057 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fiction.md.html; new_path = c:/home/git/vault/dist/data/fiction/fiction.md.html; result = 71613 }
00:00:04 i #2058 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/fiction.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fiction.hangul.md }
00:00:04 d #2059 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fiction.hangul.md; new_path = c:/home/git/vault/dist/data/fiction/fiction.hangul.md; result = 75899 }
00:00:04 d #2060 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/fiction/fiction.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/fiction/fiction.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:04 v #2061 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:04 v #2062 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:04 d #2063 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/linux/linux.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/linux/linux.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:04 d #2064 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/google/google.i574n.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/google/google.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:04 v #2065 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:04 d #2066 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/music/mixtape-pluto.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/music/mixtape-pluto.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:04 v #2067 > d6e3efa4eceeb79061d0e8a8d516036f770d4691
00:00:04 v #2068 > 2c06b013af1d068ad31ba331c43998c1e4bed274
00:00:04 v #2069 > '04ac04f2d639d9f1128e01a92c74324159d9a8b0'
00:00:04 v #2070 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:04 v #2071 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:04 v #2072 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:04 i #2073 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.hangul.md.epub }
00:00:04 d #2074 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.hangul.md.epub; new_path = c:/home/git/vault/dist/data/astrology/astrology.hangul.md.epub; result = 25892 }
00:00:04 i #2075 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/warez/warez.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\warez.html.hangul.md.epub }
00:00:04 i #2076 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.hangul.md.pdf }
00:00:04 d #2077 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Red_Flower203.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Red_Flower203.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:04 d #2078 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\warez.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/warez/warez.html.hangul.md.epub; result = 9974 }
00:00:04 d #2079 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/astrology/astrology.hangul.md.pdf; result = 34721 }
00:00:04 i #2080 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.hangul.md.html }
00:00:04 i #2081 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/warez/warez.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\warez.html.hangul.md.pdf }
00:00:04 d #2082 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.hangul.md.html; new_path = c:/home/git/vault/dist/data/astrology/astrology.hangul.md.html; result = 141246 }
00:00:04 i #2083 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.md.epub }
00:00:04 d #2084 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\warez.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/warez/warez.html.hangul.md.pdf; result = 14235 }
00:00:04 i #2085 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/warez/warez.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\warez.html.hangul.md.html }
00:00:04 d #2086 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.md.epub; new_path = c:/home/git/vault/dist/data/astrology/astrology.md.epub; result = 23071 }
00:00:04 i #2087 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.md.pdf }
00:00:04 d #2088 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\warez.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/warez/warez.html.hangul.md.html; result = 30230 }
00:00:04 i #2089 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/warez/warez.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\warez.html.md.epub }
00:00:04 d #2090 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\warez.html.md.epub; new_path = c:/home/git/vault/dist/data/warez/warez.html.md.epub; result = 9230 }
00:00:04 d #2090 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.md.pdf; new_path = c:/home/git/vault/dist/data/astrology/astrology.md.pdf; result = 99118 }
00:00:04 i #2092 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.md.html }
00:00:04 i #2093 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/warez/warez.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\warez.html.md.pdf }
00:00:04 d #2094 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\warez.html.md.pdf; new_path = c:/home/git/vault/dist/data/warez/warez.html.md.pdf; result = 28650 }
00:00:04 d #2094 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.md.html; new_path = c:/home/git/vault/dist/data/astrology/astrology.md.html; result = 96432 }
00:00:04 i #2096 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.hangul.md }
00:00:04 i #2097 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/warez/warez.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\warez.html.md.html }
00:00:04 d #2098 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.hangul.md; new_path = c:/home/git/vault/dist/data/astrology/astrology.hangul.md; result = 115556 }
00:00:04 v #2099 > '685814244b3cd01129b7add79b090cdfdd86b989'
00:00:04 d #2100 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\warez.html.md.html; new_path = c:/home/git/vault/dist/data/warez/warez.html.md.html; result = 25159 }
00:00:04 i #2101 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/warez/warez.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\warez.html.hangul.md }
00:00:04 d #2102 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\warez.html.hangul.md; new_path = c:/home/git/vault/dist/data/warez/warez.html.hangul.md; result = 15005 }
00:00:04 d #2103 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/astronomy/astronomy.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/astronomy/astronomy.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:04 d #2104 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/weather/weather.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/weather/weather.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:04 v #2105 > '2270cacb5c0ec855eeb2765a6fad9d32f7a0b6c2'
00:00:04 v #2106 > 9dd2ff3e83c994f7a66cf9f856ced92801c3c31f
00:00:04 v #2107 > 7856f655f4f8476bfb86169e7afb3d5434957dee
00:00:04 v #2108 > 1013875caf0a332dc86ee8da724f19e74e796252
00:00:04 v #2109 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:04 d #2110 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/spirituality/spirituality.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/spirituality/spirituality.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:04 v #2111 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:04 d #2112 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/fiction/fiction.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/fiction/fiction.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:04 v #2113 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:04 i #2114 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/linux/linux.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\linux.hangul.md.epub }
00:00:04 d #2115 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\linux.hangul.md.epub; new_path = c:/home/git/vault/dist/data/linux/linux.hangul.md.epub; result = 5755 }
00:00:04 i #2116 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/linux/linux.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\linux.hangul.md.pdf }
00:00:04 v #2117 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:04 v #2118 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:04 d #2119 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\linux.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/linux/linux.hangul.md.pdf; result = 6107 }
00:00:04 i #2120 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/linux/linux.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\linux.hangul.md.html }
00:00:04 d #2121 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\linux.hangul.md.html; new_path = c:/home/git/vault/dist/data/linux/linux.hangul.md.html; result = 14764 }
00:00:04 i #2122 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mixtape-pluto.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mixtape-pluto.hangul.md.epub }
00:00:04 i #2123 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/google/google.i574n.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\google.i574n.hangul.md.epub }
00:00:04 i #2124 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/linux/linux.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\linux.md.epub }
00:00:04 d #2125 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mixtape-pluto.hangul.md.epub; new_path = c:/home/git/vault/dist/data/music/mixtape-pluto.hangul.md.epub; result = 40498 }
00:00:04 d #2126 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\google.i574n.hangul.md.epub; new_path = c:/home/git/vault/dist/data/google/google.i574n.hangul.md.epub; result = 5513 }
00:00:04 i #2127 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mixtape-pluto.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mixtape-pluto.hangul.md.pdf }
00:00:04 i #2128 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/google/google.i574n.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\google.i574n.hangul.md.pdf }
00:00:04 d #2129 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\linux.md.epub; new_path = c:/home/git/vault/dist/data/linux/linux.md.epub; result = 5619 }
00:00:04 d #2130 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\google.i574n.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/google/google.i574n.hangul.md.pdf; result = 4377 }
00:00:04 i #2131 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/linux/linux.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\linux.md.pdf }
00:00:04 d #2132 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mixtape-pluto.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/music/mixtape-pluto.hangul.md.pdf; result = 206108 }
00:00:04 i #2133 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mixtape-pluto.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mixtape-pluto.hangul.md.html }
00:00:04 i #2134 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/google/google.i574n.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\google.i574n.hangul.md.html }
00:00:04 d #2135 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\linux.md.pdf; new_path = c:/home/git/vault/dist/data/linux/linux.md.pdf; result = 12711 }
00:00:04 i #2136 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/linux/linux.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\linux.md.html }
00:00:04 d #2137 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mixtape-pluto.hangul.md.html; new_path = c:/home/git/vault/dist/data/music/mixtape-pluto.hangul.md.html; result = 139753 }
00:00:04 d #2138 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\google.i574n.hangul.md.html; new_path = c:/home/git/vault/dist/data/google/google.i574n.hangul.md.html; result = 10079 }
00:00:04 i #2139 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/google/google.i574n.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\google.i574n.md.epub }
00:00:04 i #2140 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mixtape-pluto.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mixtape-pluto.md.epub }
00:00:04 d #2141 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\linux.md.html; new_path = c:/home/git/vault/dist/data/linux/linux.md.html; result = 14556 }
00:00:04 i #2142 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/linux/linux.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\linux.hangul.md }
00:00:04 d #2143 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\linux.hangul.md; new_path = c:/home/git/vault/dist/data/linux/linux.hangul.md; result = 577 }
00:00:04 d #2145 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mixtape-pluto.md.epub; new_path = c:/home/git/vault/dist/data/music/mixtape-pluto.md.epub; result = 41640 }
00:00:04 i #2146 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mixtape-pluto.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mixtape-pluto.md.pdf }
00:00:04 d #2143 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\google.i574n.md.epub; new_path = c:/home/git/vault/dist/data/google/google.i574n.md.epub; result = 5449 }
00:00:04 i #2147 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/google/google.i574n.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\google.i574n.md.pdf }
00:00:04 d #2148 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/magic/magic.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/magic/magic.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:04 d #2149 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mixtape-pluto.md.pdf; new_path = c:/home/git/vault/dist/data/music/mixtape-pluto.md.pdf; result = 86665 }
00:00:04 d #2150 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\google.i574n.md.pdf; new_path = c:/home/git/vault/dist/data/google/google.i574n.md.pdf; result = 6155 }
00:00:04 i #2151 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/google/google.i574n.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\google.i574n.md.html }
00:00:04 i #2152 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mixtape-pluto.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mixtape-pluto.md.html }
00:00:04 d #2153 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\google.i574n.md.html; new_path = c:/home/git/vault/dist/data/google/google.i574n.md.html; result = 10054 }
00:00:04 i #2154 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/google/google.i574n.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\google.i574n.hangul.md }
00:00:04 d #2155 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mixtape-pluto.md.html; new_path = c:/home/git/vault/dist/data/music/mixtape-pluto.md.html; result = 128112 }
00:00:04 d #2156 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\google.i574n.hangul.md; new_path = c:/home/git/vault/dist/data/google/google.i574n.hangul.md; result = 99 }
00:00:04 i #2157 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mixtape-pluto.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mixtape-pluto.hangul.md }
00:00:04 d #2158 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mixtape-pluto.hangul.md; new_path = c:/home/git/vault/dist/data/music/mixtape-pluto.hangul.md; result = 121850 }
00:00:04 d #2159 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/hardware/hardware.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/hardware/hardware.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:04 d #2160 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/music/music.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/music/music.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:04 v #2161 > 04ac04f2d639d9f1128e01a92c74324159d9a8b0
00:00:04 v #2162 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:04 i #2163 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Red_Flower203.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Red_Flower203.html.hangul.md.epub }
00:00:04 v #2164 > 'c0dcdb33d63bcaff0a2b877d49653abc333d11ed'
00:00:04 d #2165 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Red_Flower203.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Red_Flower203.html.hangul.md.epub; result = 5573 }
00:00:04 i #2166 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Red_Flower203.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Red_Flower203.html.hangul.md.pdf }
00:00:04 v #2167 > '753041fb0dc0874d9ae140ef8b76be1301e02186'
00:00:04 d #2168 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Red_Flower203.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Red_Flower203.html.hangul.md.pdf; result = 4975 }
00:00:04 i #2169 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Red_Flower203.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Red_Flower203.html.hangul.md.html }
00:00:04 d #2170 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Red_Flower203.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Red_Flower203.html.hangul.md.html; result = 11684 }
00:00:04 i #2171 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Red_Flower203.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Red_Flower203.html.md.epub }
00:00:04 d #2172 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Red_Flower203.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Red_Flower203.html.md.epub; result = 5498 }
00:00:04 i #2173 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Red_Flower203.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Red_Flower203.html.md.pdf }
00:00:04 d #2174 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Red_Flower203.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Red_Flower203.html.md.pdf; result = 5495 }
00:00:04 i #2175 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Red_Flower203.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Red_Flower203.html.md.html }
00:00:04 d #2176 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Red_Flower203.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Red_Flower203.html.md.html; result = 11644 }
00:00:04 i #2177 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Red_Flower203.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Red_Flower203.html.hangul.md }
00:00:04 d #2178 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Red_Flower203.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Red_Flower203.html.hangul.md; result = 153 }
00:00:04 d #2179 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/RocknRose.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/RocknRose.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:04 v #2180 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:04 v #2181 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:04 d #2182 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/weather/weather.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/weather/weather.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:04 d #2183 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/astronomy/astronomy.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/astronomy/astronomy.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:04 v #2184 > 2270cacb5c0ec855eeb2765a6fad9d32f7a0b6c2
00:00:04 v #2185 > 685814244b3cd01129b7add79b090cdfdd86b989
00:00:04 v #2186 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:04 v #2187 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:04 i #2188 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.pdf.hangul.md.epub }
00:00:04 d #2189 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.pdf.hangul.md.epub; result = 6272 }
00:00:04 i #2190 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.pdf.hangul.md.pdf }
00:00:04 i #2191 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/fiction.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fiction.mp3.hangul.md.epub }
00:00:04 d #2192 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.pdf.hangul.md.pdf; result = 5909 }
00:00:04 i #2193 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.pdf.hangul.md.html }
00:00:04 d #2194 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fiction.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/fiction/fiction.mp3.hangul.md.epub; result = 5665 }
00:00:04 i #2195 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/fiction.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fiction.mp3.hangul.md.pdf }
00:00:04 d #2196 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.pdf.hangul.md.html; result = 12326 }
00:00:04 i #2197 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.pdf.md.epub }
00:00:04 d #2198 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fiction.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/fiction/fiction.mp3.hangul.md.pdf; result = 4221 }
00:00:04 i #2199 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/fiction.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fiction.mp3.hangul.md.html }
00:00:04 d #2200 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.pdf.md.epub; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.pdf.md.epub; result = 5992 }
00:00:04 i #2201 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.pdf.md.pdf }
00:00:04 d #2202 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fiction.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/fiction/fiction.mp3.hangul.md.html; result = 10283 }
00:00:04 d #2203 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.pdf.md.pdf; result = 10691 }
00:00:04 i #2204 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.pdf.md.html }
00:00:04 i #2205 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/fiction.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fiction.mp3.md.epub }
00:00:04 v #2206 > '7eb090fec8afaa68bc03fd2f8a154dccfc54ccea'
00:00:04 d #2207 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.pdf.md.html; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.pdf.md.html; result = 11587 }
00:00:04 i #2208 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.pdf.hangul.md }
00:00:04 v #2209 > '92c9bb6b72d94e9bf2f6e28ea3281d059a2f68b7'
00:00:04 d #2210 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fiction.mp3.md.epub; new_path = c:/home/git/vault/dist/data/fiction/fiction.mp3.md.epub; result = 5532 }
00:00:04 i #2211 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/fiction.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fiction.mp3.md.pdf }
00:00:04 d #2212 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.pdf.hangul.md; result = 2091 }
00:00:04 d #2213 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fiction.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/fiction/fiction.mp3.md.pdf; result = 7694 }
00:00:04 i #2214 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/fiction.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fiction.mp3.md.html }
00:00:04 d #2215 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fiction.mp3.md.html; new_path = c:/home/git/vault/dist/data/fiction/fiction.mp3.md.html; result = 10131 }
00:00:04 i #2216 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/fiction.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fiction.mp3.hangul.md }
00:00:04 d #2217 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/spirituality/the-book-of-innocence_pt-br.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/spirituality/the-book-of-innocence_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:04 d #2218 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fiction.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/fiction/fiction.mp3.hangul.md; result = 359 }
00:00:04 d #2219 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/fiction/series.mp4.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/fiction/series.mp4.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:04 v #2220 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:04 v #2221 > 'e65dada639871ba283a4d62ff2d2e9b30aef57ca'
00:00:04 d #2222 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/magic/magic.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/magic/magic.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:04 v #2223 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:04 d #2224 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/hardware/hardware.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/hardware/hardware.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:04 v #2225 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:04 d #2226 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/music/music.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/music/music.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:04 v #2227 > 'd8b21b32a827ce110b72a91d73fc68c37366f984'
00:00:04 v #2228 > 753041fb0dc0874d9ae140ef8b76be1301e02186
00:00:04 v #2229 > c0dcdb33d63bcaff0a2b877d49653abc333d11ed
00:00:04 v #2230 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:04 d #2231 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/RocknRose.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/RocknRose.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:04 v #2232 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:04 i #2233 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astronomy/astronomy.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astronomy.hangul.md.epub }
00:00:04 d #2234 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astronomy.hangul.md.epub; new_path = c:/home/git/vault/dist/data/astronomy/astronomy.hangul.md.epub; result = 8985 }
00:00:04 i #2235 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astronomy/astronomy.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astronomy.hangul.md.pdf }
00:00:04 d #2236 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astronomy.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/astronomy/astronomy.hangul.md.pdf; result = 8573 }
00:00:04 i #2237 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astronomy/astronomy.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astronomy.hangul.md.html }
00:00:04 d #2238 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astronomy.hangul.md.html; new_path = c:/home/git/vault/dist/data/astronomy/astronomy.hangul.md.html; result = 27366 }
00:00:04 i #2239 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astronomy/astronomy.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astronomy.md.epub }
00:00:04 d #2240 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astronomy.md.epub; new_path = c:/home/git/vault/dist/data/astronomy/astronomy.md.epub; result = 8307 }
00:00:04 i #2241 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astronomy/astronomy.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astronomy.md.pdf }
00:00:04 d #2242 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astronomy.md.pdf; new_path = c:/home/git/vault/dist/data/astronomy/astronomy.md.pdf; result = 22461 }
00:00:04 i #2243 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astronomy/astronomy.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astronomy.md.html }
00:00:04 d #2244 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astronomy.md.html; new_path = c:/home/git/vault/dist/data/astronomy/astronomy.md.html; result = 22545 }
00:00:04 i #2245 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astronomy/astronomy.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astronomy.hangul.md }
00:00:04 d #2246 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astronomy.hangul.md; new_path = c:/home/git/vault/dist/data/astronomy/astronomy.hangul.md; result = 12447 }
00:00:04 v #2247 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:04 d #2248 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/biology/biology.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/biology/biology.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:04 v #2249 > 'ec4b8a16420ad46e91e2b296b2d5b9c762efe3f4'
00:00:04 i #2250 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/weather/weather.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\weather.html.hangul.md.epub }
00:00:04 d #2251 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\weather.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/weather/weather.html.hangul.md.epub; result = 6345 }
00:00:04 i #2252 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/weather/weather.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\weather.html.hangul.md.pdf }
00:00:04 d #2253 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\weather.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/weather/weather.html.hangul.md.pdf; result = 7389 }
00:00:04 i #2254 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/weather/weather.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\weather.html.hangul.md.html }
00:00:04 d #2255 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\weather.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/weather/weather.html.hangul.md.html; result = 15692 }
00:00:04 i #2256 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/weather/weather.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\weather.html.md.epub }
00:00:04 d #2257 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\weather.html.md.epub; new_path = c:/home/git/vault/dist/data/weather/weather.html.md.epub; result = 6091 }
00:00:04 i #2258 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/weather/weather.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\weather.html.md.pdf }
00:00:04 v #2259 > '3c88c85e7787363faf664d56d7b40a12843fd18a'
00:00:04 v #2260 > 7eb090fec8afaa68bc03fd2f8a154dccfc54ccea
00:00:04 d #2261 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\weather.html.md.pdf; new_path = c:/home/git/vault/dist/data/weather/weather.html.md.pdf; result = 11345 }
00:00:04 i #2262 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/weather/weather.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\weather.html.md.html }
00:00:04 d #2263 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\weather.html.md.html; new_path = c:/home/git/vault/dist/data/weather/weather.html.md.html; result = 14475 }
00:00:04 i #2264 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/weather/weather.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\weather.html.hangul.md }
00:00:04 d #2265 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\weather.html.hangul.md; new_path = c:/home/git/vault/dist/data/weather/weather.html.hangul.md; result = 4193 }
00:00:04 v #2266 > 92c9bb6b72d94e9bf2f6e28ea3281d059a2f68b7
00:00:04 d #2267 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/weather/weather.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/weather/weather.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:04 v #2268 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:04 d #2269 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/fiction/series.mp4.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/fiction/series.mp4.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:04 v #2270 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:04 v #2271 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:04 v #2272 > e65dada639871ba283a4d62ff2d2e9b30aef57ca
00:00:04 i #2273 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.html.hangul.md.epub }
00:00:04 d #2274 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:04 d #2275 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/magic/magic.html.hangul.md.epub; result = 5519 }
00:00:04 i #2276 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.html.hangul.md.pdf }
00:00:04 d #2277 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/magic/magic.html.hangul.md.pdf; result = 3756 }
00:00:04 i #2278 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.html.hangul.md.html }
00:00:04 d #2279 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/magic/magic.html.hangul.md.html; result = 10098 }
00:00:04 v #2280 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:04 i #2281 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.html.md.epub }
00:00:04 d #2282 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.html.md.epub; new_path = c:/home/git/vault/dist/data/magic/magic.html.md.epub; result = 5445 }
00:00:04 i #2283 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.html.md.pdf }
00:00:04 i #2284 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hardware/hardware.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hardware.html.hangul.md.epub }
00:00:04 d #2285 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.html.md.pdf; new_path = c:/home/git/vault/dist/data/magic/magic.html.md.pdf; result = 5855 }
00:00:04 d #2286 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hardware.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/hardware/hardware.html.hangul.md.epub; result = 5656 }
00:00:04 i #2287 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hardware/hardware.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hardware.html.hangul.md.pdf }
00:00:04 i #2288 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.html.md.html }
00:00:04 d #2289 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.html.md.html; new_path = c:/home/git/vault/dist/data/magic/magic.html.md.html; result = 10064 }
00:00:04 i #2290 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.html.hangul.md }
00:00:04 d #2291 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.html.hangul.md; new_path = c:/home/git/vault/dist/data/magic/magic.html.hangul.md; result = 130 }
00:00:04 d #2292 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hardware.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/hardware/hardware.html.hangul.md.pdf; result = 4853 }
00:00:04 i #2293 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hardware/hardware.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hardware.html.hangul.md.html }
00:00:04 d #2294 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hardware.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/hardware/hardware.html.hangul.md.html; result = 10307 }
00:00:04 v #2295 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:04 i #2296 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hardware/hardware.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hardware.html.md.epub }
00:00:04 d #2297 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hardware.html.md.epub; new_path = c:/home/git/vault/dist/data/hardware/hardware.html.md.epub; result = 5536 }
00:00:04 d #2298 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/magic/magic.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/magic/magic.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:04 i #2299 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hardware/hardware.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hardware.html.md.pdf }
00:00:04 i #2300 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/music.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\music.hangul.md.epub }
00:00:04 d #2301 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hardware.html.md.pdf; new_path = c:/home/git/vault/dist/data/hardware/hardware.html.md.pdf; result = 8059 }
00:00:04 i #2302 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hardware/hardware.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hardware.html.md.html }
00:00:04 d #2303 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hardware.html.md.html; new_path = c:/home/git/vault/dist/data/hardware/hardware.html.md.html; result = 10171 }
00:00:04 d #2303 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\music.hangul.md.epub; new_path = c:/home/git/vault/dist/data/music/music.hangul.md.epub; result = 63431 }
00:00:04 i #2305 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hardware/hardware.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hardware.html.hangul.md }
00:00:04 i #2305 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/music.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\music.hangul.md.pdf }
00:00:04 d #2307 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hardware.html.hangul.md; new_path = c:/home/git/vault/dist/data/hardware/hardware.html.hangul.md; result = 339 }
00:00:04 d #2308 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\music.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/music/music.hangul.md.pdf; result = 110311 }
00:00:04 i #2309 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/music.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\music.hangul.md.html }
00:00:04 d #2310 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\music.hangul.md.html; new_path = c:/home/git/vault/dist/data/music/music.hangul.md.html; result = 328105 }
00:00:04 i #2311 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/music.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\music.md.epub }
00:00:04 d #2312 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/hardware/hardware.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/hardware/hardware.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:04 v #2313 > d8b21b32a827ce110b72a91d73fc68c37366f984
00:00:04 d #2314 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\music.md.epub; new_path = c:/home/git/vault/dist/data/music/music.md.epub; result = 57541 }
00:00:04 i #2315 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/music.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\music.md.pdf }
00:00:04 d #2316 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\music.md.pdf; new_path = c:/home/git/vault/dist/data/music/music.md.pdf; result = 270103 }
00:00:04 i #2317 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/music.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\music.md.html }
00:00:04 d #2318 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\music.md.html; new_path = c:/home/git/vault/dist/data/music/music.md.html; result = 234838 }
00:00:04 i #2319 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/music.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\music.hangul.md }
00:00:04 d #2320 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\music.hangul.md; new_path = c:/home/git/vault/dist/data/music/music.hangul.md; result = 268501 }
00:00:04 d #2321 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/music/music.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/music/music.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:04 v #2322 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:04 i #2323 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/RocknRose.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\RocknRose.html.hangul.md.epub }
00:00:04 d #2324 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\RocknRose.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/RocknRose.html.hangul.md.epub; result = 5564 }
00:00:04 i #2325 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/RocknRose.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\RocknRose.html.hangul.md.pdf }
00:00:04 d #2326 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\RocknRose.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/RocknRose.html.hangul.md.pdf; result = 4630 }
00:00:04 i #2327 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/RocknRose.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\RocknRose.html.hangul.md.html }
00:00:04 d #2328 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\RocknRose.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/RocknRose.html.hangul.md.html; result = 11674 }
00:00:04 i #2329 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/RocknRose.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\RocknRose.html.md.epub }
00:00:04 v #2330 > '26120b2e92375b6d6f8185081d4c976c28f37a56'
00:00:04 d #2331 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\RocknRose.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/RocknRose.html.md.epub; result = 5493 }
00:00:04 i #2332 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/RocknRose.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\RocknRose.html.md.pdf }
00:00:04 d #2333 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\RocknRose.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/RocknRose.html.md.pdf; result = 4985 }
00:00:04 i #2334 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/RocknRose.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\RocknRose.html.md.html }
00:00:04 d #2335 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\RocknRose.html.md.html; new_path = c:/home/git/vault/dist/data/chat/RocknRose.html.md.html; result = 11640 }
00:00:04 i #2336 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/RocknRose.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\RocknRose.html.hangul.md }
00:00:04 d #2337 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\RocknRose.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/RocknRose.html.hangul.md; result = 143 }
00:00:04 d #2338 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/RorrieGomez.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/RorrieGomez.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:04 v #2339 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:04 d #2340 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/biology/biology.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/biology/biology.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:04 v #2341 > ec4b8a16420ad46e91e2b296b2d5b9c762efe3f4
00:00:04 v #2342 > '6147bb686841492df1590912b0792a2e9ba8c22c'
00:00:04 v #2343 > 3c88c85e7787363faf664d56d7b40a12843fd18a
00:00:04 v #2344 > 'b9770d8435b744c4b233a8b2b18412137e2d24ce'
00:00:04 v #2345 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:04 i #2346 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/series.mp4.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\series.mp4.hangul.md.epub }
00:00:04 v #2347 > '455601e4dd7acd186e2b720c67ec48013537f743'
00:00:04 d #2348 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\series.mp4.hangul.md.epub; new_path = c:/home/git/vault/dist/data/fiction/series.mp4.hangul.md.epub; result = 6442 }
00:00:04 v #2349 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:04 i #2350 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/series.mp4.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\series.mp4.hangul.md.pdf }
00:00:04 d #2351 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\series.mp4.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/fiction/series.mp4.hangul.md.pdf; result = 5647 }
00:00:04 i #2352 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/series.mp4.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\series.mp4.hangul.md.html }
00:00:04 d #2353 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\series.mp4.hangul.md.html; new_path = c:/home/git/vault/dist/data/fiction/series.mp4.hangul.md.html; result = 14310 }
00:00:04 i #2354 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/series.mp4.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\series.mp4.md.epub }
00:00:04 d #2355 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\series.mp4.md.epub; new_path = c:/home/git/vault/dist/data/fiction/series.mp4.md.epub; result = 6060 }
00:00:04 d #2356 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/weather/weather.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/weather/weather.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:04 i #2357 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/series.mp4.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\series.mp4.md.pdf }
00:00:04 d #2358 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\series.mp4.md.pdf; new_path = c:/home/git/vault/dist/data/fiction/series.mp4.md.pdf; result = 10667 }
00:00:04 i #2359 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/series.mp4.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\series.mp4.md.html }
00:00:04 d #2360 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\series.mp4.md.html; new_path = c:/home/git/vault/dist/data/fiction/series.mp4.md.html; result = 12478 }
00:00:04 i #2361 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/series.mp4.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\series.mp4.hangul.md }
00:00:04 d #2362 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\series.mp4.hangul.md; new_path = c:/home/git/vault/dist/data/fiction/series.mp4.hangul.md; result = 3810 }
00:00:04 v #2363 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:04 v #2364 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:04 d #2365 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/books/books.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/books/books.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:04 d #2366 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/magic/magic.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/magic/magic.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:04 i #2367 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-innocence_pt-br.md.epub }
00:00:04 d #2368 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-innocence_pt-br.md.epub; new_path = c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.md.epub; result = 195380 }
00:00:04 i #2369 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-innocence_pt-br.md.pdf }
00:00:04 d #2370 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-innocence_pt-br.md.pdf; new_path = c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.md.pdf; result = 711235 }
00:00:04 i #2371 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-innocence_pt-br.md.html }
00:00:04 v #2372 > 'f7379c8f42c2af5f5e2459a6fc92cff0ac9bf1c4'
00:00:04 v #2373 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:04 d #2374 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-innocence_pt-br.md.html; new_path = c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.md.html; result = 659840 }
00:00:04 i #2375 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-innocence_pt-br.hangul.md }
00:00:04 d #2376 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/hardware/hardware.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/hardware/hardware.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:04 d #2377 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-innocence_pt-br.hangul.md; new_path = c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md; result = 905456 }
00:00:04 d #2378 runtime.execute_with_options / { file_name = crowbook; arguments = ["--verbose", "--to", "html", "--single", "c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md", "--output", "c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md.html", "--set", "html.css.add", "' body { color: #e8e6e3; background-color: #202324; } a { color: #989693; } pre { background-color: #1b1b1b; padding: 10px; } '"]; options = { command = crowbook --verbose --to html --single "c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md" --output "c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md.html" --set html.css.add \"' body { color: #e8e6e3; background-color: #202324; } a { color: #989693; } pre { background-color: #1b1b1b; padding: 10px; } '\" rendering.num_depth 6 rendering.highlight.theme \"Solarized (dark)\"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:04 v #2379 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:04 d #2380 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/music/music.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/music/music.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:04 v #2381 > '1e05ad239e45446563aad233d9f0cba964a7fa66'
00:00:05 v #2382 > 26120b2e92375b6d6f8185081d4c976c28f37a56
00:00:05 v #2383 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:05 v #2384 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:05 v #2385 ! CROWBOOK 0.17.0
00:00:05 d #2386 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/RorrieGomez.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/RorrieGomez.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:05 i #2387 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/biology/biology.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\biology.mp3.hangul.md.epub }
00:00:05 d #2388 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\biology.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/biology/biology.mp3.hangul.md.epub; result = 5941 }
00:00:05 i #2389 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/biology/biology.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\biology.mp3.hangul.md.pdf }
00:00:05 d #2390 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\biology.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/biology/biology.mp3.hangul.md.pdf; result = 4082 }
00:00:05 i #2391 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/biology/biology.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\biology.mp3.hangul.md.html }
00:00:05 d #2392 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\biology.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/biology/biology.mp3.hangul.md.html; result = 11371 }
00:00:05 i #2393 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/biology/biology.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\biology.mp3.md.epub }
00:00:05 v #2394 > 6147bb686841492df1590912b0792a2e9ba8c22c
00:00:05 d #2395 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\biology.mp3.md.epub; new_path = c:/home/git/vault/dist/data/biology/biology.mp3.md.epub; result = 5715 }
00:00:05 i #2396 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/biology/biology.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\biology.mp3.md.pdf }
00:00:05 d #2397 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\biology.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/biology/biology.mp3.md.pdf; result = 8627 }
00:00:05 i #2398 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/biology/biology.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\biology.mp3.md.html }
00:00:05 d #2399 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\biology.mp3.md.html; new_path = c:/home/git/vault/dist/data/biology/biology.mp3.md.html; result = 10742 }
00:00:05 i #2400 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/biology/biology.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\biology.mp3.hangul.md }
00:00:05 d #2401 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\biology.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/biology/biology.mp3.hangul.md; result = 1308 }
00:00:05 d #2402 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/tidal/tidal.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/tidal/tidal.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:05 v #2403 > '5fabbc5009e36457c673ab281ad24ae700224001'
00:00:05 v #2404 > b9770d8435b744c4b233a8b2b18412137e2d24ce
00:00:05 v #2405 > 455601e4dd7acd186e2b720c67ec48013537f743
00:00:05 v #2406 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:05 v #2407 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:05 i #2407 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/weather/weather.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\weather.hangul.md.epub }
00:00:05 v #2409 ! 12:14:40 [ERROR] crowbook::book: Inline YAML block could not set String("치틀리") to String("우 리브루 다 이노센시아"): Error converting BookOption: unrecognized key '치틀리'
00:00:05 i #2410 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.hangul.md.epub }
00:00:05 v #2411 ! 12:14:40 [DEBUG] (1) crowbook::book: Attempting to generate html...
00:00:05 d #2412 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\weather.hangul.md.epub; new_path = c:/home/git/vault/dist/data/weather/weather.hangul.md.epub; result = 9402 }
00:00:05 i #2413 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/weather/weather.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\weather.hangul.md.pdf }
00:00:05 d #2414 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.hangul.md.epub; new_path = c:/home/git/vault/dist/data/magic/magic.hangul.md.epub; result = 37566 }
00:00:05 d #2415 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\weather.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/weather/weather.hangul.md.pdf; result = 11855 }
00:00:05 i #2416 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.hangul.md.pdf }
00:00:05 i #2417 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/weather/weather.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\weather.hangul.md.html }
00:00:05 d #2418 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\weather.hangul.md.html; new_path = c:/home/git/vault/dist/data/weather/weather.hangul.md.html; result = 33105 }
00:00:05 v #2419 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:05 d #2420 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/magic/magic.hangul.md.pdf; result = 41493 }
00:00:05 i #2421 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/weather/weather.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\weather.md.epub }
00:00:05 i #2422 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.hangul.md.html }
00:00:05 d #2423 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\weather.md.epub; new_path = c:/home/git/vault/dist/data/weather/weather.md.epub; result = 8779 }
00:00:05 i #2424 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/weather/weather.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\weather.md.pdf }
00:00:05 d #2425 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.hangul.md.html; new_path = c:/home/git/vault/dist/data/magic/magic.hangul.md.html; result = 167307 }
00:00:05 i #2426 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.md.epub }
00:00:05 d #2427 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\weather.md.pdf; new_path = c:/home/git/vault/dist/data/weather/weather.md.pdf; result = 28272 }
00:00:05 i #2428 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/weather/weather.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\weather.md.html }
00:00:05 d #2429 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.md.epub; new_path = c:/home/git/vault/dist/data/magic/magic.md.epub; result = 33524 }
00:00:05 i #2430 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.md.pdf }
00:00:05 d #2431 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\weather.md.html; new_path = c:/home/git/vault/dist/data/weather/weather.md.html; result = 27108 }
00:00:05 v #2432 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:05 i #2433 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/weather/weather.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\weather.hangul.md }
00:00:05 i #2434 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hardware/hardware.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hardware.hangul.md.epub }
00:00:05 d #2435 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.md.pdf; new_path = c:/home/git/vault/dist/data/magic/magic.md.pdf; result = 121215 }
00:00:05 i #2436 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.md.html }
00:00:05 d #2437 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\weather.hangul.md; new_path = c:/home/git/vault/dist/data/weather/weather.hangul.md; result = 17225 }
00:00:05 d #2438 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/books/books.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/books/books.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:05 d #2439 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hardware.hangul.md.epub; new_path = c:/home/git/vault/dist/data/hardware/hardware.hangul.md.epub; result = 12639 }
00:00:05 i #2440 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hardware/hardware.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hardware.hangul.md.pdf }
00:00:05 d #2441 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.md.html; new_path = c:/home/git/vault/dist/data/magic/magic.md.html; result = 115157 }
00:00:05 i #2442 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.hangul.md }
00:00:05 d #2443 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hardware.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/hardware/hardware.hangul.md.pdf; result = 17450 }
00:00:05 i #2444 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hardware/hardware.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hardware.hangul.md.html }
00:00:05 v #2445 > f7379c8f42c2af5f5e2459a6fc92cff0ac9bf1c4
00:00:05 d #2446 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/web3/near.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/web3/near.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:05 d #2447 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.hangul.md; new_path = c:/home/git/vault/dist/data/magic/magic.hangul.md; result = 138648 }
00:00:05 d #2448 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hardware.hangul.md.html; new_path = c:/home/git/vault/dist/data/hardware/hardware.hangul.md.html; result = 52886 }
00:00:05 i #2449 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hardware/hardware.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hardware.md.epub }
00:00:05 d #2450 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hardware.md.epub; new_path = c:/home/git/vault/dist/data/hardware/hardware.md.epub; result = 11682 }
00:00:05 i #2451 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hardware/hardware.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hardware.md.pdf }
00:00:05 d #2452 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/travel/travel.i574n.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/travel/travel.i574n.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:05 d #2453 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hardware.md.pdf; new_path = c:/home/git/vault/dist/data/hardware/hardware.md.pdf; result = 48468 }
00:00:05 i #2454 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hardware/hardware.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hardware.md.html }
00:00:05 d #2455 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hardware.md.html; new_path = c:/home/git/vault/dist/data/hardware/hardware.md.html; result = 41164 }
00:00:05 i #2456 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hardware/hardware.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hardware.hangul.md }
00:00:05 d #2457 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hardware.hangul.md; new_path = c:/home/git/vault/dist/data/hardware/hardware.hangul.md; result = 33758 }
00:00:05 v #2458 > 1e05ad239e45446563aad233d9f0cba964a7fa66
00:00:05 d #2459 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/windows/windows.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/windows/windows.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:05 v #2460 ! 12:14:40 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #콘테우두 or #콘테우두.md
00:00:05 v #2461 ! 12:14:40 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #인트로두상-프레젠사-이-세르 or #인트로두상-프레젠사-이-세르.md
00:00:05 v #2462 ! 12:14:40 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #파르치-이-이덴치다지 or #파르치-이-이덴치다지.md
00:00:05 v #2463 ! 12:14:40 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #1-이우-소-코녜시두 or #1-이우-소-코녜시두.md
00:00:05 v #2464 ! 12:14:40 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #2-메모리아 or #2-메모리아.md
00:00:05 v #2465 ! 12:14:40 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #3-아-베르다지-두-세르 or #3-아-베르다지-두-세르.md
00:00:05 v #2466 ! 12:14:40 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #4-헤콘실리아상 or #4-헤콘실리아상.md
00:00:05 v #2467 ! 12:14:40 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #파르치-이-이노센시아 or #파르치-이-이노센시아.md
00:00:05 v #2468 ! 12:14:40 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #5-알렝-두-페카두 or #5-알렝-두-페카두.md
00:00:05 v #2469 ! 12:14:40 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #6-웅-문두-헤노바두 or #6-웅-문두-헤노바두.md
00:00:05 v #2470 ! 12:14:40 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #7-멘치-베르다데이라 or #7-멘치-베르다데이라.md
00:00:05 v #2471 ! 12:14:40 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #이필로구 or #이필로구.md
00:00:05 v #2472 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:05 i #2473 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/music.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\music.mp3.hangul.md.epub }
00:00:05 d #2474 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\music.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/music/music.mp3.hangul.md.epub; result = 5919 }
00:00:05 i #2475 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/music.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\music.mp3.hangul.md.pdf }
00:00:05 d #2476 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\music.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/music/music.mp3.hangul.md.pdf; result = 4580 }
00:00:05 i #2477 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/music.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\music.mp3.hangul.md.html }
00:00:05 d #2478 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\music.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/music/music.mp3.hangul.md.html; result = 11560 }
00:00:05 i #2479 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/music.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\music.mp3.md.epub }
00:00:05 d #2480 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\music.mp3.md.epub; new_path = c:/home/git/vault/dist/data/music/music.mp3.md.epub; result = 5732 }
00:00:05 i #2481 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/music.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\music.mp3.md.pdf }
00:00:05 d #2482 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\music.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/music/music.mp3.md.pdf; result = 9338 }
00:00:05 i #2483 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/music.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\music.mp3.md.html }
00:00:05 d #2484 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\music.mp3.md.html; new_path = c:/home/git/vault/dist/data/music/music.mp3.md.html; result = 10841 }
00:00:05 i #2485 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/music.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\music.mp3.hangul.md }
00:00:05 d #2486 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\music.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/music/music.mp3.hangul.md; result = 1497 }
00:00:05 v #2487 ! 12:14:40 [INFO] crowbook::book: Succesfully generated HTML (standalone page): data\spirituality\the-book-of-innocence_pt-br.hangul.md.html
00:00:05 d #2488 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/navigation/navigation.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/navigation/navigation.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:05 v #2489 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 2238 }
00:00:05 w #2490 documents.crowbook / result contains ERROR / { exit_code = 0; output_path = c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md.html; result = CROWBOOK 0.17.0
12:14:40 [ERROR] crowbook::book: Inline YAML block could not set String("치틀리") to String("우 리브루 다 이노센시아"): Error converting BookOption: unrecognized key '치틀리'
12:14:40 [DEBUG] (1) crowbook::book: Attempting to generate html...
12:14:40 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #콘테우두 or #콘테우두.md
12:14:40 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #인트로두상-프레젠사-이-세르 or #인트로두상-프레젠사-이-세르.md
12:14:40 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #파르치-이-이덴치다지 or #파르치-이-이덴치다지.md
12:14:40 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #1-이우-소-코녜시두 or #1-이우-소-코녜시두.md
12:14:40 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #2-메모리아 or #2-메모리아.md
12:14:40 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #3-아-베르다지-두-세르 or #3-아-베르다지-두-세르.md
12:14:40 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #4-헤콘실리아상 or #4-헤콘실리아상.md
12:14:40 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #파르치-이-이노센시아 or #파르치-이-이노센시아.md
12:14:40 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #5-알렝-두-페카두 or #5-알렝-두-페카두.md
12:14:40 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #6-웅-문두-헤노바두 or #6-웅-문두-헤노바두.md
12:14:40 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #7-멘치-베르다데이라 or #7-멘치-베르다데이라.md
12:14:40 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #이필로구 or #이필로구.md
12:14:40 [INFO] crowbook::book: Succesfully generated HTML (standalone page): data\spirituality\the-book-of-innocence_pt-br.hangul.md.html }
00:00:05 v #2491 > 'aa2d0c55ac0ada3ffecd82f754d1a73ececcdede'
00:00:05 v #2492 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:05 d #2493 runtime.execute_with_options / { file_name = crowbook; arguments = ["--verbose", "--to", "pdf", "--single", "c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md", "--output", "c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md.pdf", "--set", "tex.paper.size", "a4paper", "tex.template.add", "\\pagenumbering{gobble}", "tex.template.add", "\\usepackage{polyglossia}", "tex.template.add", "\\setmainlanguage{korean}", "tex.template.add", "\\setmainfont{NanumGothicCoding}", "tex.font.size", "13", "rendering.num_depth", "6", "rendering.highlight.theme", "Solarized (dark)"]; options = { command = crowbook --verbose --to pdf --single "c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md" --output "c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md.pdf" --set tex.paper.size a4paper tex.template.add "\pagenumbering{gobble}" tex.template.add "\usepackage{polyglossia}" tex.template.add "\setmainlanguage{korean}" tex.template.add "\setmainfont{NanumGothicCoding}" tex.font.size 13 rendering.num_depth 6 rendering.highlight.theme \"Solarized (dark)\"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:05 i #2494 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/RorrieGomez.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\RorrieGomez.html.hangul.md.epub }
00:00:05 d #2495 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\RorrieGomez.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/RorrieGomez.html.hangul.md.epub; result = 5568 }
00:00:05 i #2496 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/RorrieGomez.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\RorrieGomez.html.hangul.md.pdf }
00:00:05 d #2497 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\RorrieGomez.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/RorrieGomez.html.hangul.md.pdf; result = 4624 }
00:00:05 i #2498 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/RorrieGomez.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\RorrieGomez.html.hangul.md.html }
00:00:05 d #2499 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\RorrieGomez.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/RorrieGomez.html.hangul.md.html; result = 11680 }
00:00:05 i #2500 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/RorrieGomez.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\RorrieGomez.html.md.epub }
00:00:05 d #2501 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\RorrieGomez.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/RorrieGomez.html.md.epub; result = 5495 }
00:00:05 i #2502 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/RorrieGomez.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\RorrieGomez.html.md.pdf }
00:00:05 d #2503 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\RorrieGomez.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/RorrieGomez.html.md.pdf; result = 5063 }
00:00:05 i #2504 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/RorrieGomez.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\RorrieGomez.html.md.html }
00:00:05 v #2505 ! CROWBOOK 0.17.0
00:00:05 d #2506 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\RorrieGomez.html.md.html; new_path = c:/home/git/vault/dist/data/chat/RorrieGomez.html.md.html; result = 11642 }
00:00:05 i #2507 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/RorrieGomez.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\RorrieGomez.html.hangul.md }
00:00:05 d #2508 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\RorrieGomez.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/RorrieGomez.html.hangul.md; result = 149 }
00:00:05 d #2509 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Stacy_x3.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Stacy_x3.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:05 v #2510 > 5fabbc5009e36457c673ab281ad24ae700224001
00:00:05 v #2511 ! 12:14:40 [ERROR] crowbook::book: Inline YAML block could not set String("치틀리") to String("우 리브루 다 이노센시아"): Error converting BookOption: unrecognized key '치틀리'
00:00:05 v #2512 > 'e650f9e626339147c1809ea9782558c2717dfc3d'
00:00:05 v #2513 ! 12:14:40 [DEBUG] (1) crowbook::book: Attempting to generate pdf...
00:00:05 v #2514 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:05 v #2515 > 'f62a266ecd504e3ac125c4bce1699e040ea49c9f'
00:00:05 d #2516 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/tidal/tidal.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/tidal/tidal.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:05 v #2517 > '49ff14103fb24b78a712c68eda596e167ee58322'
00:00:05 v #2518 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:05 v #2519 ! 12:14:40 [DEBUG] (1) crowbook::latex: Attempting to run LaTeX on generated file
00:00:05 v #2520 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:05 i #2521 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/books/books.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\books.hangul.md.epub }
00:00:05 d #2522 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/web3/near.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/web3/near.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:05 d #2523 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\books.hangul.md.epub; new_path = c:/home/git/vault/dist/data/books/books.hangul.md.epub; result = 10806 }
00:00:05 v #2524 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:05 i #2525 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/books/books.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\books.hangul.md.pdf }
00:00:05 d #2526 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\books.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/books/books.hangul.md.pdf; result = 11037 }
00:00:05 i #2527 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/books/books.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\books.hangul.md.html }
00:00:05 d #2528 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\books.hangul.md.html; new_path = c:/home/git/vault/dist/data/books/books.hangul.md.html; result = 32966 }
00:00:05 i #2529 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/books/books.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\books.md.epub }
00:00:05 d #2530 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/travel/travel.i574n.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/travel/travel.i574n.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:05 d #2531 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\books.md.epub; new_path = c:/home/git/vault/dist/data/books/books.md.epub; result = 9917 }
00:00:05 i #2532 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/books/books.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\books.md.pdf }
00:00:05 d #2533 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\books.md.pdf; new_path = c:/home/git/vault/dist/data/books/books.md.pdf; result = 28934 }
00:00:05 i #2534 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/books/books.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\books.md.html }
00:00:05 d #2535 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\books.md.html; new_path = c:/home/git/vault/dist/data/books/books.md.html; result = 27228 }
00:00:05 i #2536 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/books/books.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\books.hangul.md }
00:00:05 d #2537 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\books.hangul.md; new_path = c:/home/git/vault/dist/data/books/books.hangul.md; result = 16083 }
00:00:05 d #2538 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/business/business.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/business/business.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:05 v #2539 > '574ee3a652500f3406dab750e9154ce6b4dbc09b'
00:00:05 v #2540 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:05 d #2541 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/windows/windows.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/windows/windows.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:05 v #2542 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:05 d #2543 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/navigation/navigation.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/navigation/navigation.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:05 v #2544 > '58ba8dcbf16a6c08e6db4a9db3619c119f00757d'
00:00:05 v #2545 > aa2d0c55ac0ada3ffecd82f754d1a73ececcdede
00:00:05 v #2546 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:05 d #2547 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Stacy_x3.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Stacy_x3.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:05 v #2548 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:05 v #2549 > e650f9e626339147c1809ea9782558c2717dfc3d
00:00:05 v #2550 > 'd093d5959b1aa80e6844338cdf0a2e38d9846fe6'
00:00:05 i #2551 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tidal/tidal.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tidal.html.hangul.md.epub }
00:00:05 d #2552 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tidal.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/tidal/tidal.html.hangul.md.epub; result = 5529 }
00:00:05 v #2553 > f62a266ecd504e3ac125c4bce1699e040ea49c9f
00:00:05 v #2554 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:05 i #2555 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tidal/tidal.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tidal.html.hangul.md.pdf }
00:00:05 v #2556 > 49ff14103fb24b78a712c68eda596e167ee58322
00:00:05 v #2557 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:05 v #2558 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:05 d #2559 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/business/business.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/business/business.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:05 v #2560 > 574ee3a652500f3406dab750e9154ce6b4dbc09b
00:00:05 i #2561 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/near.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\near.html.hangul.md.epub }
00:00:05 i #2561 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.i574n.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.html.hangul.md.epub }
00:00:05 d #2563 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tidal.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/tidal/tidal.html.hangul.md.pdf; result = 3796 }
00:00:05 d #2564 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/travel/travel.i574n.html.hangul.md.epub; result = 5362 }
00:00:05 d #2565 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\near.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/web3/near.html.hangul.md.epub; result = 5579 }
00:00:05 i #2566 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.i574n.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.html.hangul.md.pdf }
00:00:05 i #2567 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tidal/tidal.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tidal.html.hangul.md.html }
00:00:05 i #2568 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/near.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\near.html.hangul.md.pdf }
00:00:05 v #2569 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:05 d #2570 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tidal.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/tidal/tidal.html.hangul.md.html; result = 10308 }
00:00:05 d #2571 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/travel/travel.i574n.html.hangul.md.pdf; result = 2203 }
00:00:05 i #2572 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tidal/tidal.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tidal.html.md.epub }
00:00:05 i #2573 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.i574n.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.html.hangul.md.html }
00:00:05 d #2574 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\near.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/web3/near.html.hangul.md.pdf; result = 4244 }
00:00:05 i #2575 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/near.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\near.html.hangul.md.html }
00:00:05 d #2576 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tidal.html.md.epub; new_path = c:/home/git/vault/dist/data/tidal/tidal.html.md.epub; result = 5460 }
00:00:05 i #2577 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tidal/tidal.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tidal.html.md.pdf }
00:00:05 i #2578 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/windows/windows.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\windows.html.hangul.md.epub }
00:00:05 d #2579 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/travel/travel.i574n.html.hangul.md.html; result = 9878 }
00:00:05 d #2580 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\near.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/web3/near.html.hangul.md.html; result = 10779 }
00:00:05 i #2581 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.i574n.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.html.md.epub }
00:00:05 d #2582 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tidal.html.md.pdf; new_path = c:/home/git/vault/dist/data/tidal/tidal.html.md.pdf; result = 6040 }
00:00:05 i #2583 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tidal/tidal.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tidal.html.md.html }
00:00:05 d #2584 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\windows.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/windows/windows.html.hangul.md.epub; result = 5584 }
00:00:05 i #2585 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/near.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\near.html.md.epub }
00:00:05 i #2586 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/windows/windows.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\windows.html.hangul.md.pdf }
00:00:05 d #2587 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.html.md.epub; new_path = c:/home/git/vault/dist/data/travel/travel.i574n.html.md.epub; result = 5363 }
00:00:05 i #2588 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.i574n.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.html.md.pdf }
00:00:05 d #2589 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\windows.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/windows/windows.html.hangul.md.pdf; result = 3996 }
00:00:05 d #2590 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tidal.html.md.html; new_path = c:/home/git/vault/dist/data/tidal/tidal.html.md.html; result = 10245 }
00:00:05 i #2591 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tidal/tidal.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tidal.html.hangul.md }
00:00:05 i #2592 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/windows/windows.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\windows.html.hangul.md.html }
00:00:05 d #2592 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.html.md.pdf; new_path = c:/home/git/vault/dist/data/travel/travel.i574n.html.md.pdf; result = 2204 }
00:00:05 d #2594 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\near.html.md.epub; new_path = c:/home/git/vault/dist/data/web3/near.html.md.epub; result = 5497 }
00:00:05 i #2595 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.i574n.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.html.md.html }
00:00:05 d #2594 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tidal.html.hangul.md; new_path = c:/home/git/vault/dist/data/tidal/tidal.html.hangul.md; result = 252 }
00:00:05 i #2597 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/near.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\near.html.md.pdf }
00:00:05 d #2598 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\windows.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/windows/windows.html.hangul.md.html; result = 10192 }
00:00:05 d #2599 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\near.html.md.pdf; new_path = c:/home/git/vault/dist/data/web3/near.html.md.pdf; result = 6571 }
00:00:05 i #2600 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/windows/windows.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\windows.html.md.epub }
00:00:05 i #2601 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/near.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\near.html.md.html }
00:00:05 d #2602 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/trakt/trakt.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/trakt/trakt.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:05 d #2603 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\windows.html.md.epub; new_path = c:/home/git/vault/dist/data/windows/windows.html.md.epub; result = 5492 }
00:00:05 d #2604 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.html.md.html; new_path = c:/home/git/vault/dist/data/travel/travel.i574n.html.md.html; result = 9878 }
00:00:05 d #2605 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\near.html.md.html; new_path = c:/home/git/vault/dist/data/web3/near.html.md.html; result = 10627 }
00:00:05 i #2606 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.i574n.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.html.hangul.md }
00:00:05 i #2607 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/near.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\near.html.hangul.md }
00:00:05 i #2608 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/windows/windows.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\windows.html.md.pdf }
00:00:05 d #2609 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.html.hangul.md; new_path = c:/home/git/vault/dist/data/travel/travel.i574n.html.hangul.md; result = 15 }
00:00:05 d #2609 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\near.html.hangul.md; new_path = c:/home/git/vault/dist/data/web3/near.html.hangul.md; result = 545 }
00:00:05 d #2611 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\windows.html.md.pdf; new_path = c:/home/git/vault/dist/data/windows/windows.html.md.pdf; result = 6517 }
00:00:05 i #2612 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/windows/windows.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\windows.html.md.html }
00:00:05 d #2613 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/travel/travel.i574n.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/travel/travel.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:05 d #2614 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/web3/storage.fc1943s.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/web3/storage.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:05 d #2615 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\windows.html.md.html; new_path = c:/home/git/vault/dist/data/windows/windows.html.md.html; result = 10128 }
00:00:05 i #2616 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/windows/windows.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\windows.html.hangul.md }
00:00:05 d #2617 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\windows.html.hangul.md; new_path = c:/home/git/vault/dist/data/windows/windows.html.hangul.md; result = 204 }
00:00:05 v #2618 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:05 d #2619 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/windows/windows.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/windows/windows.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:05 i #2620 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/navigation/navigation.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\navigation.html.hangul.md.epub }
00:00:05 d #2621 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\navigation.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/navigation/navigation.html.hangul.md.epub; result = 5832 }
00:00:05 i #2622 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/navigation/navigation.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\navigation.html.hangul.md.pdf }
00:00:05 d #2623 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\navigation.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/navigation/navigation.html.hangul.md.pdf; result = 5507 }
00:00:05 i #2624 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/navigation/navigation.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\navigation.html.hangul.md.html }
00:00:05 d #2625 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\navigation.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/navigation/navigation.html.hangul.md.html; result = 11755 }
00:00:05 i #2626 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/navigation/navigation.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\navigation.html.md.epub }
00:00:05 d #2627 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\navigation.html.md.epub; new_path = c:/home/git/vault/dist/data/navigation/navigation.html.md.epub; result = 5683 }
00:00:05 i #2628 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/navigation/navigation.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\navigation.html.md.pdf }
00:00:05 d #2629 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\navigation.html.md.pdf; new_path = c:/home/git/vault/dist/data/navigation/navigation.html.md.pdf; result = 9335 }
00:00:05 i #2630 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/navigation/navigation.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\navigation.html.md.html }
00:00:05 d #2631 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\navigation.html.md.html; new_path = c:/home/git/vault/dist/data/navigation/navigation.html.md.html; result = 11414 }
00:00:05 v #2632 > 58ba8dcbf16a6c08e6db4a9db3619c119f00757d
00:00:05 i #2633 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/navigation/navigation.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\navigation.html.hangul.md }
00:00:05 d #2634 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\navigation.html.hangul.md; new_path = c:/home/git/vault/dist/data/navigation/navigation.html.hangul.md; result = 1226 }
00:00:05 d #2635 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/navigation/navigation.png.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/navigation/navigation.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:05 v #2636 > d093d5959b1aa80e6844338cdf0a2e38d9846fe6
00:00:05 v #2637 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:05 i #2638 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Stacy_x3.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Stacy_x3.html.hangul.md.epub }
00:00:05 d #2639 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Stacy_x3.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Stacy_x3.html.hangul.md.epub; result = 5564 }
00:00:05 i #2640 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Stacy_x3.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Stacy_x3.html.hangul.md.pdf }
00:00:05 d #2641 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Stacy_x3.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Stacy_x3.html.hangul.md.pdf; result = 4843 }
00:00:05 i #2642 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Stacy_x3.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Stacy_x3.html.hangul.md.html }
00:00:05 d #2643 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Stacy_x3.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Stacy_x3.html.hangul.md.html; result = 11676 }
00:00:05 i #2644 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Stacy_x3.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Stacy_x3.html.md.epub }
00:00:05 d #2645 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Stacy_x3.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Stacy_x3.html.md.epub; result = 5492 }
00:00:05 i #2646 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Stacy_x3.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Stacy_x3.html.md.pdf }
00:00:05 d #2647 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Stacy_x3.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Stacy_x3.html.md.pdf; result = 4906 }
00:00:05 i #2648 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Stacy_x3.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Stacy_x3.html.md.html }
00:00:05 v #2649 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:05 d #2650 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Stacy_x3.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Stacy_x3.html.md.html; result = 11639 }
00:00:05 i #2651 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Stacy_x3.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Stacy_x3.html.hangul.md }
00:00:05 d #2652 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Stacy_x3.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Stacy_x3.html.hangul.md; result = 145 }
00:00:05 i #2653 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/business/business.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\business.hangul.md.epub }
00:00:05 d #2654 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Stephanie.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Stephanie.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:05 d #2655 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\business.hangul.md.epub; new_path = c:/home/git/vault/dist/data/business/business.hangul.md.epub; result = 7785 }
00:00:05 i #2656 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/business/business.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\business.hangul.md.pdf }
00:00:05 d #2657 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\business.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/business/business.hangul.md.pdf; result = 6674 }
00:00:05 i #2658 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/business/business.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\business.hangul.md.html }
00:00:05 d #2659 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\business.hangul.md.html; new_path = c:/home/git/vault/dist/data/business/business.hangul.md.html; result = 22627 }
00:00:05 i #2660 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/business/business.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\business.md.epub }
00:00:05 d #2661 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\business.md.epub; new_path = c:/home/git/vault/dist/data/business/business.md.epub; result = 7315 }
00:00:05 i #2662 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/business/business.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\business.md.pdf }
00:00:05 d #2663 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\business.md.pdf; new_path = c:/home/git/vault/dist/data/business/business.md.pdf; result = 18658 }
00:00:05 i #2664 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/business/business.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\business.md.html }
00:00:05 d #2665 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\business.md.html; new_path = c:/home/git/vault/dist/data/business/business.md.html; result = 19670 }
00:00:05 i #2666 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/business/business.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\business.hangul.md }
00:00:05 d #2667 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\business.hangul.md; new_path = c:/home/git/vault/dist/data/business/business.hangul.md; result = 7972 }
00:00:05 v #2668 > 'c621e83d16716f578ef49a69593ad48d79b8d315'
00:00:05 d #2669 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/AdySweet.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/AdySweet.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:05 v #2670 > 'f5ab0c0ec6a0da97eff29f25566ab657ad94239c'
00:00:05 v #2671 > '03383a9384a0859e4842d78e86808657db8be433'
00:00:05 v #2672 > '7f916cd510d5f0d2a2850689a5b05a12150a038e'
00:00:05 v #2673 > '712d483c2c968e06911669449f9762c05719c90d'
00:00:05 v #2674 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:05 d #2675 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/windows/windows.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/windows/windows.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:05 v #2676 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:05 v #2677 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:05 d #2678 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/web3/storage.fc1943s.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/web3/storage.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:05 d #2679 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/trakt/trakt.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/trakt/trakt.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:05 v #2680 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:05 v #2681 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:05 d #2682 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/navigation/navigation.png.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/navigation/navigation.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:05 d #2683 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/travel/travel.i574n.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/travel/travel.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:05 v #2684 > 'd885db673a3eadbfc7bfed33142a1fa33e87152b'
00:00:05 v #2685 > '4ce4e5578a3377ea45aed9218cb0005a22029bbb'
00:00:05 v #2686 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:05 v #2687 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:05 d #2688 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/AdySweet.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/AdySweet.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:05 d #2689 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Stephanie.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Stephanie.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:05 v #2690 > 03383a9384a0859e4842d78e86808657db8be433
00:00:05 v #2691 > c621e83d16716f578ef49a69593ad48d79b8d315
00:00:05 v #2692 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:05 v #2693 > f5ab0c0ec6a0da97eff29f25566ab657ad94239c
00:00:05 i #2694 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/windows/windows.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\windows.hangul.md.epub }
00:00:05 d #2695 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\windows.hangul.md.epub; new_path = c:/home/git/vault/dist/data/windows/windows.hangul.md.epub; result = 10248 }
00:00:05 i #2696 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/windows/windows.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\windows.hangul.md.pdf }
00:00:05 d #2697 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\windows.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/windows/windows.hangul.md.pdf; result = 15362 }
00:00:05 i #2698 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/windows/windows.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\windows.hangul.md.html }
00:00:05 d #2699 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\windows.hangul.md.html; new_path = c:/home/git/vault/dist/data/windows/windows.hangul.md.html; result = 33121 }
00:00:05 v #2700 > 712d483c2c968e06911669449f9762c05719c90d
00:00:05 i #2701 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/windows/windows.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\windows.md.epub }
00:00:05 d #2702 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\windows.md.epub; new_path = c:/home/git/vault/dist/data/windows/windows.md.epub; result = 9420 }
00:00:05 i #2703 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/windows/windows.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\windows.md.pdf }
00:00:05 v #2704 > 7f916cd510d5f0d2a2850689a5b05a12150a038e
00:00:05 d #2705 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\windows.md.pdf; new_path = c:/home/git/vault/dist/data/windows/windows.md.pdf; result = 38935 }
00:00:05 i #2706 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/windows/windows.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\windows.md.html }
00:00:05 d #2707 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\windows.md.html; new_path = c:/home/git/vault/dist/data/windows/windows.md.html; result = 26664 }
00:00:05 i #2708 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/windows/windows.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\windows.hangul.md }
00:00:05 v #2709 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:05 d #2710 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\windows.hangul.md; new_path = c:/home/git/vault/dist/data/windows/windows.hangul.md; result = 16490 }
00:00:05 i #2711 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/storage.fc1943s.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\storage.fc1943s.hangul.md.epub }
00:00:05 v #2712 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:05 d #2713 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/work/cv.fc1943s.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/work/cv.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:05 d #2714 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\storage.fc1943s.hangul.md.epub; new_path = c:/home/git/vault/dist/data/web3/storage.fc1943s.hangul.md.epub; result = 5513 }
00:00:05 i #2715 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/storage.fc1943s.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\storage.fc1943s.hangul.md.pdf }
00:00:05 d #2716 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\storage.fc1943s.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/web3/storage.fc1943s.hangul.md.pdf; result = 3989 }
00:00:05 i #2717 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/storage.fc1943s.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\storage.fc1943s.hangul.md.html }
00:00:05 i #2718 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/trakt/trakt.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\trakt.html.hangul.md.epub }
00:00:05 d #2719 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\trakt.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/trakt/trakt.html.hangul.md.epub; result = 5630 }
00:00:05 d #2720 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\storage.fc1943s.hangul.md.html; new_path = c:/home/git/vault/dist/data/web3/storage.fc1943s.hangul.md.html; result = 10077 }
00:00:05 i #2721 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/trakt/trakt.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\trakt.html.hangul.md.pdf }
00:00:05 i #2722 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/storage.fc1943s.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\storage.fc1943s.md.epub }
00:00:05 d #2723 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\storage.fc1943s.md.epub; new_path = c:/home/git/vault/dist/data/web3/storage.fc1943s.md.epub; result = 5459 }
00:00:05 d #2724 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\trakt.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/trakt/trakt.html.hangul.md.pdf; result = 4192 }
00:00:05 i #2725 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/trakt/trakt.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\trakt.html.hangul.md.html }
00:00:05 i #2726 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/storage.fc1943s.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\storage.fc1943s.md.pdf }
00:00:05 v #2727 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:05 d #2728 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\storage.fc1943s.md.pdf; new_path = c:/home/git/vault/dist/data/web3/storage.fc1943s.md.pdf; result = 6430 }
00:00:05 d #2728 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\trakt.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/trakt/trakt.html.hangul.md.html; result = 12587 }
00:00:05 i #2730 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/storage.fc1943s.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\storage.fc1943s.md.html }
00:00:05 v #2731 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:05 i #2732 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/trakt/trakt.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\trakt.html.md.epub }
00:00:05 d #2733 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\storage.fc1943s.md.html; new_path = c:/home/git/vault/dist/data/web3/storage.fc1943s.md.html; result = 10153 }
00:00:05 d #2734 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\trakt.html.md.epub; new_path = c:/home/git/vault/dist/data/trakt/trakt.html.md.epub; result = 5528 }
00:00:05 i #2735 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/storage.fc1943s.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\storage.fc1943s.hangul.md }
00:00:05 i #2736 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/trakt/trakt.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\trakt.html.md.pdf }
00:00:05 i #2737 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.i574n.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.hangul.md.epub }
00:00:05 d #2738 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\storage.fc1943s.hangul.md; new_path = c:/home/git/vault/dist/data/web3/storage.fc1943s.hangul.md; result = 173 }
00:00:05 d #2739 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\trakt.html.md.pdf; new_path = c:/home/git/vault/dist/data/trakt/trakt.html.md.pdf; result = 7427 }
00:00:05 d #2740 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.hangul.md.epub; new_path = c:/home/git/vault/dist/data/travel/travel.i574n.hangul.md.epub; result = 10180 }
00:00:05 i #2741 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/trakt/trakt.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\trakt.html.md.html }
00:00:05 i #2742 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.i574n.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.hangul.md.html }
00:00:05 i #2743 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/navigation/navigation.png.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\navigation.png.hangul.md.epub }
00:00:05 d #2744 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\trakt.html.md.html; new_path = c:/home/git/vault/dist/data/trakt/trakt.html.md.html; result = 12122 }
00:00:05 i #2745 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/trakt/trakt.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\trakt.html.hangul.md }
00:00:05 d #2745 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\navigation.png.hangul.md.epub; new_path = c:/home/git/vault/dist/data/navigation/navigation.png.hangul.md.epub; result = 5585 }
00:00:05 d #2747 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.hangul.md.html; new_path = c:/home/git/vault/dist/data/travel/travel.i574n.hangul.md.html; result = 27037 }
00:00:05 i #2748 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/navigation/navigation.png.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\navigation.png.hangul.md.pdf }
00:00:05 i #2749 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.i574n.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.md.epub }
00:00:05 d #2750 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\trakt.html.hangul.md; new_path = c:/home/git/vault/dist/data/trakt/trakt.html.hangul.md; result = 1641 }
00:00:05 d #2751 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\navigation.png.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/navigation/navigation.png.hangul.md.pdf; result = 2204 }
00:00:05 d #2752 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/web3/storage.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/web3/storage.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:05 i #2753 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/navigation/navigation.png.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\navigation.png.hangul.md.html }
00:00:05 d #2754 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.md.epub; new_path = c:/home/git/vault/dist/data/travel/travel.i574n.md.epub; result = 9597 }
00:00:05 i #2755 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.i574n.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.md.html }
00:00:05 d #2756 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\navigation.png.hangul.md.html; new_path = c:/home/git/vault/dist/data/navigation/navigation.png.hangul.md.html; result = 10177 }
00:00:05 d #2757 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.md.html; new_path = c:/home/git/vault/dist/data/travel/travel.i574n.md.html; result = 22977 }
00:00:05 i #2758 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/navigation/navigation.png.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\navigation.png.md.epub }
00:00:05 i #2759 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.i574n.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.hangul.md }
00:00:05 d #2760 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\navigation.png.md.epub; new_path = c:/home/git/vault/dist/data/navigation/navigation.png.md.epub; result = 5494 }
00:00:05 i #2761 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/navigation/navigation.png.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\navigation.png.md.pdf }
00:00:05 d #2762 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.hangul.md; new_path = c:/home/git/vault/dist/data/travel/travel.i574n.hangul.md; result = 13840 }
00:00:05 d #2763 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/trakt/trakt.i574n.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/trakt/trakt.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:05 d #2764 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\navigation.png.md.pdf; new_path = c:/home/git/vault/dist/data/navigation/navigation.png.md.pdf; result = 2203 }
00:00:05 i #2765 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/navigation/navigation.png.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\navigation.png.md.html }
00:00:05 d #2766 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\navigation.png.md.html; new_path = c:/home/git/vault/dist/data/navigation/navigation.png.md.html; result = 10078 }
00:00:05 i #2767 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/navigation/navigation.png.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\navigation.png.hangul.md }
00:00:05 d #2768 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\navigation.png.hangul.md; new_path = c:/home/git/vault/dist/data/navigation/navigation.png.hangul.md; result = 239 }
00:00:05 d #2769 runtime.execute_with_options / { file_name = crowbook; arguments = ["--verbose", "--to", "pdf", "--single", "c:/home/git/vault/dist/data/travel/travel.i574n.md", "--output", "c:/home/git/vault/dist/data/travel/travel.i574n.md.pdf", "--set", "tex.paper.size", "a4paper", "tex.template.add", "\\pagenumbering{gobble}", "rendering.num_depth", "6", "rendering.highlight.theme", "Solarized (dark)"]; options = { command = crowbook --verbose --to pdf --single "c:/home/git/vault/dist/data/travel/travel.i574n.md" --output "c:/home/git/vault/dist/data/travel/travel.i574n.md.pdf" --set tex.paper.size a4paper tex.template.add "\pagenumbering{gobble}" rendering.num_depth 6 rendering.highlight.theme \"Solarized (dark)\"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:05 d #2770 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/nix/nix.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/nix/nix.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:05 v #2771 ! CROWBOOK 0.17.0
00:00:05 v #2772 ! 12:14:40 [DEBUG] (1) crowbook::book: Ignoring YAML block:
00:00:05 v #2773 !
00:00:05 v #2774 ! 12:14:40 [DEBUG] (1) crowbook::book: Attempting to generate pdf...
00:00:05 v #2775 ! 12:14:40 [DEBUG] (1) crowbook::latex: Attempting to run LaTeX on generated file
00:00:05 v #2776 > 4ce4e5578a3377ea45aed9218cb0005a22029bbb
00:00:05 v #2777 > d885db673a3eadbfc7bfed33142a1fa33e87152b
00:00:05 v #2778 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:05 i #2779 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AdySweet.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AdySweet.html.hangul.md.epub }
00:00:05 d #2780 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AdySweet.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/AdySweet.html.hangul.md.epub; result = 5566 }
00:00:05 i #2781 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AdySweet.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AdySweet.html.hangul.md.pdf }
00:00:05 d #2782 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AdySweet.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/AdySweet.html.hangul.md.pdf; result = 4627 }
00:00:05 i #2783 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AdySweet.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AdySweet.html.hangul.md.html }
00:00:05 d #2784 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AdySweet.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/AdySweet.html.hangul.md.html; result = 11677 }
00:00:05 i #2785 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AdySweet.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AdySweet.html.md.epub }
00:00:05 d #2786 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AdySweet.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/AdySweet.html.md.epub; result = 5493 }
00:00:05 i #2787 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AdySweet.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AdySweet.html.md.pdf }
00:00:05 d #2788 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AdySweet.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/AdySweet.html.md.pdf; result = 5069 }
00:00:05 i #2789 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AdySweet.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AdySweet.html.md.html }
00:00:05 v #2790 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:05 d #2791 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AdySweet.html.md.html; new_path = c:/home/git/vault/dist/data/chat/AdySweet.html.md.html; result = 11639 }
00:00:05 i #2792 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AdySweet.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AdySweet.html.hangul.md }
00:00:05 d #2793 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AdySweet.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/AdySweet.html.hangul.md; result = 146 }
00:00:05 i #2794 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Stephanie.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Stephanie.html.hangul.md.epub }
00:00:05 d #2795 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Stephanie.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Stephanie.html.hangul.md.epub; result = 5560 }
00:00:05 i #2796 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Stephanie.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Stephanie.html.hangul.md.pdf }
00:00:05 d #2797 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/aliceisonfire.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/aliceisonfire.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:05 d #2798 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Stephanie.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Stephanie.html.hangul.md.pdf; result = 4626 }
00:00:05 i #2799 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Stephanie.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Stephanie.html.hangul.md.html }
00:00:05 d #2800 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Stephanie.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Stephanie.html.hangul.md.html; result = 11674 }
00:00:05 i #2801 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Stephanie.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Stephanie.html.md.epub }
00:00:05 d #2802 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Stephanie.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Stephanie.html.md.epub; result = 5491 }
00:00:05 i #2803 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Stephanie.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Stephanie.html.md.pdf }
00:00:05 d #2804 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Stephanie.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Stephanie.html.md.pdf; result = 4759 }
00:00:06 i #2805 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Stephanie.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Stephanie.html.md.html }
00:00:06 d #2806 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Stephanie.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Stephanie.html.md.html; result = 11640 }
00:00:06 i #2807 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Stephanie.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Stephanie.html.hangul.md }
00:00:06 d #2808 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Stephanie.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Stephanie.html.hangul.md; result = 143 }
00:00:06 v #2809 > '1d0d3682925ba7dd9f8b40c3f0c9a0b2aef9107c'
00:00:06 d #2810 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/TinaHale.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/TinaHale.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:06 v #2811 > '8f0f7e98d0572dee6df62f9ca6e3d59bd4d2a4c3'
00:00:06 v #2812 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:06 d #2813 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/work/cv.fc1943s.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/work/cv.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:06 v #2814 > '433ed8d4b7b7738e64d0c29b97820213654a6125'
00:00:06 v #2815 > '850aeca2369ebf42613d2a00e1c7854f9693c49f'
00:00:06 v #2816 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:06 d #2817 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/web3/storage.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/web3/storage.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:06 v #2818 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:06 d #2819 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/trakt/trakt.i574n.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/trakt/trakt.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:06 v #2820 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:06 d #2821 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/nix/nix.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/nix/nix.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:06 v #2822 > 'f02b7d2b818094bb639b99d4d551937178eedb00'
00:00:06 v #2823 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:06 v #2824 > '284d6ee9cb67d81827e8769e3fe9c1682cb3f2bf'
00:00:06 d #2825 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/aliceisonfire.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/aliceisonfire.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:06 v #2826 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:06 v #2827 > 1d0d3682925ba7dd9f8b40c3f0c9a0b2aef9107c
00:00:06 d #2828 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/TinaHale.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/TinaHale.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:06 v #2829 > 8f0f7e98d0572dee6df62f9ca6e3d59bd4d2a4c3
00:00:06 v #2830 > 850aeca2369ebf42613d2a00e1c7854f9693c49f
00:00:06 v #2830 > 433ed8d4b7b7738e64d0c29b97820213654a6125
00:00:06 v #2832 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:06 i #2833 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv.fc1943s.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.hangul.md.epub }
00:00:06 v #2834 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:06 d #2835 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.hangul.md.epub; new_path = c:/home/git/vault/dist/data/work/cv.fc1943s.hangul.md.epub; result = 12317 }
00:00:06 i #2836 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv.fc1943s.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.hangul.md.pdf }
00:00:06 d #2837 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/work/cv.fc1943s.hangul.md.pdf; result = 12619 }
00:00:06 i #2838 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/storage.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\storage.html.hangul.md.epub }
00:00:06 i #2839 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv.fc1943s.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.hangul.md.html }
00:00:06 d #2840 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\storage.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/web3/storage.html.hangul.md.epub; result = 5516 }
00:00:06 i #2841 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/storage.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\storage.html.hangul.md.pdf }
00:00:06 d #2842 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.hangul.md.html; new_path = c:/home/git/vault/dist/data/work/cv.fc1943s.hangul.md.html; result = 32163 }
00:00:06 v #2843 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:06 d #2844 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\storage.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/web3/storage.html.hangul.md.pdf; result = 3757 }
00:00:06 v #2845 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:06 i #2846 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/storage.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\storage.html.hangul.md.html }
00:00:06 i #2847 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv.fc1943s.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.md.epub }
00:00:06 d #2848 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\storage.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/web3/storage.html.hangul.md.html; result = 10102 }
00:00:06 i #2849 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/storage.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\storage.html.md.epub }
00:00:06 i #2850 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/nix/nix.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\nix.html.hangul.md.epub }
00:00:06 d #2851 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.md.epub; new_path = c:/home/git/vault/dist/data/work/cv.fc1943s.md.epub; result = 11214 }
00:00:06 i #2852 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/trakt/trakt.i574n.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\trakt.i574n.hangul.md.epub }
00:00:06 i #2853 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv.fc1943s.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.md.pdf }
00:00:06 d #2854 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\nix.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/nix/nix.html.hangul.md.epub; result = 5549 }
00:00:06 i #2855 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/nix/nix.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\nix.html.hangul.md.pdf }
00:00:06 d #2856 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\trakt.i574n.hangul.md.epub; new_path = c:/home/git/vault/dist/data/trakt/trakt.i574n.hangul.md.epub; result = 5501 }
00:00:06 d #2857 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.md.pdf; new_path = c:/home/git/vault/dist/data/work/cv.fc1943s.md.pdf; result = 43968 }
00:00:06 d #2857 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\storage.html.md.epub; new_path = c:/home/git/vault/dist/data/web3/storage.html.md.epub; result = 5444 }
00:00:06 i #2859 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/trakt/trakt.i574n.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\trakt.i574n.hangul.md.pdf }
00:00:06 d #2860 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\nix.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/nix/nix.html.hangul.md.pdf; result = 3963 }
00:00:06 i #2861 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv.fc1943s.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.md.html }
00:00:06 i #2862 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/storage.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\storage.html.md.pdf }
00:00:06 i #2863 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/nix/nix.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\nix.html.hangul.md.html }
00:00:06 d #2864 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\trakt.i574n.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/trakt/trakt.i574n.hangul.md.pdf; result = 4136 }
00:00:06 d #2865 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\storage.html.md.pdf; new_path = c:/home/git/vault/dist/data/web3/storage.html.md.pdf; result = 5809 }
00:00:06 d #2866 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.md.html; new_path = c:/home/git/vault/dist/data/work/cv.fc1943s.md.html; result = 25325 }
00:00:06 d #2867 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\nix.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/nix/nix.html.hangul.md.html; result = 10141 }
00:00:06 i #2868 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/storage.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\storage.html.md.html }
00:00:06 i #2871 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/trakt/trakt.i574n.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\trakt.i574n.hangul.md.html }
00:00:06 i #2868 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv.fc1943s.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.hangul.md }
00:00:06 i #2868 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/nix/nix.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\nix.html.md.epub }
00:00:06 d #2872 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\storage.html.md.html; new_path = c:/home/git/vault/dist/data/web3/storage.html.md.html; result = 10062 }
00:00:06 d #2873 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\trakt.i574n.hangul.md.html; new_path = c:/home/git/vault/dist/data/trakt/trakt.i574n.hangul.md.html; result = 10078 }
00:00:06 i #2874 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/storage.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\storage.html.hangul.md }
00:00:06 d #2875 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.hangul.md; new_path = c:/home/git/vault/dist/data/work/cv.fc1943s.hangul.md; result = 19270 }
00:00:06 d #2876 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\nix.html.md.epub; new_path = c:/home/git/vault/dist/data/nix/nix.html.md.epub; result = 5463 }
00:00:06 i #2877 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/trakt/trakt.i574n.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\trakt.i574n.md.epub }
00:00:06 i #2878 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/nix/nix.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\nix.html.md.pdf }
00:00:06 d #2879 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\storage.html.hangul.md; new_path = c:/home/git/vault/dist/data/web3/storage.html.hangul.md; result = 135 }
00:00:06 d #2880 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\nix.html.md.pdf; new_path = c:/home/git/vault/dist/data/nix/nix.html.md.pdf; result = 6226 }
00:00:06 i #2881 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/nix/nix.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\nix.html.md.html }
00:00:06 d #2882 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\trakt.i574n.md.epub; new_path = c:/home/git/vault/dist/data/trakt/trakt.i574n.md.epub; result = 5441 }
00:00:06 d #2883 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\nix.html.md.html; new_path = c:/home/git/vault/dist/data/nix/nix.html.md.html; result = 10087 }
00:00:06 i #2884 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/nix/nix.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\nix.html.hangul.md }
00:00:06 d #2885 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/work/cv.fc1943s.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/work/cv.fc1943s.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:06 i #2886 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/trakt/trakt.i574n.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\trakt.i574n.md.pdf }
00:00:06 d #2887 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\nix.html.hangul.md; new_path = c:/home/git/vault/dist/data/nix/nix.html.hangul.md; result = 174 }
00:00:06 d #2888 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/web3/web3.fc1943s.7z.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/web3/web3.fc1943s.7z.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:06 d #2889 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\trakt.i574n.md.pdf; new_path = c:/home/git/vault/dist/data/trakt/trakt.i574n.md.pdf; result = 5837 }
00:00:06 i #2890 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/trakt/trakt.i574n.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\trakt.i574n.md.html }
00:00:06 d #2891 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\trakt.i574n.md.html; new_path = c:/home/git/vault/dist/data/trakt/trakt.i574n.md.html; result = 10048 }
00:00:06 i #2892 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/trakt/trakt.i574n.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\trakt.i574n.hangul.md }
00:00:06 d #2893 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\trakt.i574n.hangul.md; new_path = c:/home/git/vault/dist/data/trakt/trakt.i574n.hangul.md; result = 98 }
00:00:06 d #2894 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/nix/nix.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/nix/nix.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:06 d #2895 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/travel/maps.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/travel/maps.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:06 v #2896 > f02b7d2b818094bb639b99d4d551937178eedb00
00:00:06 v #2897 > 284d6ee9cb67d81827e8769e3fe9c1682cb3f2bf
00:00:06 v #2898 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:06 i #2899 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/aliceisonfire.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\aliceisonfire.html.hangul.md.epub }
00:00:06 d #2900 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\aliceisonfire.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/aliceisonfire.html.hangul.md.epub; result = 5566 }
00:00:06 i #2901 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/aliceisonfire.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\aliceisonfire.html.hangul.md.pdf }
00:00:06 d #2902 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\aliceisonfire.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/aliceisonfire.html.hangul.md.pdf; result = 4626 }
00:00:06 i #2903 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/aliceisonfire.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\aliceisonfire.html.hangul.md.html }
00:00:06 d #2904 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\aliceisonfire.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/aliceisonfire.html.hangul.md.html; result = 11683 }
00:00:06 i #2905 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/aliceisonfire.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\aliceisonfire.html.md.epub }
00:00:06 d #2906 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\aliceisonfire.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/aliceisonfire.html.md.epub; result = 5494 }
00:00:06 i #2907 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/aliceisonfire.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\aliceisonfire.html.md.pdf }
00:00:06 v #2908 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:06 d #2909 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\aliceisonfire.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/aliceisonfire.html.md.pdf; result = 4766 }
00:00:06 i #2910 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/aliceisonfire.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\aliceisonfire.html.md.html }
00:00:06 d #2911 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\aliceisonfire.html.md.html; new_path = c:/home/git/vault/dist/data/chat/aliceisonfire.html.md.html; result = 11644 }
00:00:06 i #2912 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/aliceisonfire.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\aliceisonfire.html.hangul.md }
00:00:06 d #2913 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\aliceisonfire.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/aliceisonfire.html.hangul.md; result = 152 }
00:00:06 i #2914 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/TinaHale.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\TinaHale.html.hangul.md.epub }
00:00:06 d #2915 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\TinaHale.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/TinaHale.html.hangul.md.epub; result = 5562 }
00:00:06 i #2916 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/TinaHale.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\TinaHale.html.hangul.md.pdf }
00:00:06 d #2917 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Angrykat.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Angrykat.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:06 d #2918 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\TinaHale.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/TinaHale.html.hangul.md.pdf; result = 4627 }
00:00:06 i #2919 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/TinaHale.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\TinaHale.html.hangul.md.html }
00:00:06 d #2920 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\TinaHale.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/TinaHale.html.hangul.md.html; result = 11674 }
00:00:06 i #2921 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/TinaHale.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\TinaHale.html.md.epub }
00:00:06 d #2922 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\TinaHale.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/TinaHale.html.md.epub; result = 5492 }
00:00:06 i #2923 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/TinaHale.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\TinaHale.html.md.pdf }
00:00:06 d #2924 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\TinaHale.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/TinaHale.html.md.pdf; result = 4886 }
00:00:06 i #2925 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/TinaHale.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\TinaHale.html.md.html }
00:00:06 d #2926 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\TinaHale.html.md.html; new_path = c:/home/git/vault/dist/data/chat/TinaHale.html.md.html; result = 11639 }
00:00:06 i #2927 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/TinaHale.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\TinaHale.html.hangul.md }
00:00:06 d #2928 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\TinaHale.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/TinaHale.html.hangul.md; result = 143 }
00:00:06 d #2929 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/WhitneyR.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/WhitneyR.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:06 v #2930 > '26dcc4e83c56ad8b2a105ae037c8d26685ce75cb'
00:00:06 v #2931 > '55a0a78a273271af1907f429f6ba3e2f9a521847'
00:00:06 v #2932 > 'daf8c13f5f3fef473a3e956b4af9cadf20318223'
00:00:06 v #2933 > '794396ca6498adbc3ebe3cce207803372f34e562'
00:00:06 v #2934 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:06 d #2935 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:06 v #2936 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:06 v #2937 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:06 d #2938 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/travel/maps.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/travel/maps.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:06 d #2939 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/nix/nix.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/nix/nix.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:06 v #2940 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:06 d #2941 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:06 v #2942 > '299c44f77ebc021b85ead370f66e763056c1a5a7'
00:00:06 v #2943 > 'f98fd45751bb507ec323e46218ab9a97065127d7'
00:00:06 v #2944 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:06 d #2945 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Angrykat.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Angrykat.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:06 v #2946 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:06 d #2947 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/WhitneyR.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/WhitneyR.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:06 v #2948 > daf8c13f5f3fef473a3e956b4af9cadf20318223
00:00:06 v #2949 > 794396ca6498adbc3ebe3cce207803372f34e562
00:00:06 v #2950 > 26dcc4e83c56ad8b2a105ae037c8d26685ce75cb
00:00:06 v #2951 > 55a0a78a273271af1907f429f6ba3e2f9a521847
00:00:06 v #2952 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:06 i #2953 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.html.hangul.md.epub }
00:00:06 d #2954 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/travel/maps.html.hangul.md.epub; result = 5993 }
00:00:06 v #2955 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:06 i #2956 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.html.hangul.md.pdf }
00:00:06 d #2957 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/travel/maps.html.hangul.md.pdf; result = 6239 }
00:00:06 i #2958 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.html.hangul.md.html }
00:00:06 i #2959 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/nix/nix.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\nix.hangul.md.epub }
00:00:06 d #2960 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/travel/maps.html.hangul.md.html; result = 12304 }
00:00:06 i #2961 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.html.md.epub }
00:00:06 d #2962 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\nix.hangul.md.epub; new_path = c:/home/git/vault/dist/data/nix/nix.hangul.md.epub; result = 6895 }
00:00:06 v #2963 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:06 i #2964 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/nix/nix.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\nix.hangul.md.pdf }
00:00:06 d #2965 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.html.md.epub; new_path = c:/home/git/vault/dist/data/travel/maps.html.md.epub; result = 5913 }
00:00:06 i #2966 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.html.md.pdf }
00:00:06 d #2967 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\nix.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/nix/nix.hangul.md.pdf; result = 3972 }
00:00:06 i #2968 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/nix/nix.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\nix.hangul.md.html }
00:00:06 v #2969 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:06 d #2970 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.html.md.pdf; new_path = c:/home/git/vault/dist/data/travel/maps.html.md.pdf; result = 10862 }
00:00:06 d #2970 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\nix.hangul.md.html; new_path = c:/home/git/vault/dist/data/nix/nix.hangul.md.html; result = 14287 }
00:00:06 i #2972 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.html.md.html }
00:00:06 i #2972 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.pdf.hangul.md.epub }
00:00:06 i #2974 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/nix/nix.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\nix.md.epub }
00:00:06 d #2975 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.hangul.md.epub; result = 5746 }
00:00:06 d #2975 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.html.md.html; new_path = c:/home/git/vault/dist/data/travel/maps.html.md.html; result = 13133 }
00:00:06 d #2977 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\nix.md.epub; new_path = c:/home/git/vault/dist/data/nix/nix.md.epub; result = 6492 }
00:00:06 i #2978 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/nix/nix.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\nix.md.pdf }
00:00:06 i #2979 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.pdf.hangul.md.pdf }
00:00:06 i #2979 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.7z.hangul.md.epub }
00:00:06 i #2981 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.html.hangul.md }
00:00:06 d #2982 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\nix.md.pdf; new_path = c:/home/git/vault/dist/data/nix/nix.md.pdf; result = 10284 }
00:00:06 d #2983 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.7z.hangul.md.epub; new_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.hangul.md.epub; result = 5654 }
00:00:06 d #2984 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.hangul.md.pdf; result = 4759 }
00:00:06 d #2985 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.html.hangul.md; new_path = c:/home/git/vault/dist/data/travel/maps.html.hangul.md; result = 1439 }
00:00:06 i #2986 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/nix/nix.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\nix.md.html }
00:00:06 i #2987 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.pdf.hangul.md.html }
00:00:06 i #2987 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.7z.hangul.md.pdf }
00:00:06 d #2989 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\nix.md.html; new_path = c:/home/git/vault/dist/data/nix/nix.md.html; result = 12802 }
00:00:06 d #2990 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.7z.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.hangul.md.pdf; result = 5589 }
00:00:06 i #2991 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/nix/nix.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\nix.hangul.md }
00:00:06 d #2992 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.hangul.md.html; result = 10812 }
00:00:06 i #2993 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.7z.hangul.md.html }
00:00:06 i #2994 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.pdf.md.epub }
00:00:06 d #2995 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\nix.hangul.md; new_path = c:/home/git/vault/dist/data/nix/nix.hangul.md; result = 4096 }
00:00:06 d #2996 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.pdf.md.epub; new_path = c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.md.epub; result = 5598 }
00:00:06 d #2997 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.7z.hangul.md.html; new_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.hangul.md.html; result = 10319 }
00:00:06 i #2998 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.7z.md.epub }
00:00:06 i #2999 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.pdf.md.pdf }
00:00:06 d #3000 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/travel/maps.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/travel/maps.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:06 d #3001 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.7z.md.epub; new_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.md.epub; result = 5541 }
00:00:06 d #3001 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.md.pdf; result = 7620 }
00:00:06 i #3003 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.pdf.md.html }
00:00:06 i #3004 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.7z.md.pdf }
00:00:06 d #3005 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.7z.md.pdf; new_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.md.pdf; result = 8065 }
00:00:06 d #3006 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/numbers/numbers.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/numbers/numbers.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:06 d #3007 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.pdf.md.html; new_path = c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.md.html; result = 10522 }
00:00:06 i #3007 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.7z.md.html }
00:00:06 i #3009 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.pdf.hangul.md }
00:00:06 d #3010 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.hangul.md; result = 755 }
00:00:06 d #3011 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.7z.md.html; new_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.md.html; result = 10314 }
00:00:06 i #3012 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.7z.hangul.md }
00:00:06 d #3013 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.7z.hangul.md; new_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.hangul.md; result = 312 }
00:00:06 d #3014 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/work/cv_pt-br.fc1943s.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/work/cv_pt-br.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:06 d #3015 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/web3/web3.fc1943s.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/web3/web3.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:06 v #3016 > 299c44f77ebc021b85ead370f66e763056c1a5a7
00:00:06 v #3017 > f98fd45751bb507ec323e46218ab9a97065127d7
00:00:06 v #3018 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:06 v #3019 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:06 i #3020 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/WhitneyR.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\WhitneyR.html.hangul.md.epub }
00:00:06 i #3021 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Angrykat.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Angrykat.html.hangul.md.epub }
00:00:06 d #3022 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\WhitneyR.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/WhitneyR.html.hangul.md.epub; result = 5562 }
00:00:06 d #3023 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Angrykat.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Angrykat.html.hangul.md.epub; result = 5563 }
00:00:06 i #3024 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/WhitneyR.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\WhitneyR.html.hangul.md.pdf }
00:00:06 i #3025 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Angrykat.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Angrykat.html.hangul.md.pdf }
00:00:06 d #3026 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\WhitneyR.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/WhitneyR.html.hangul.md.pdf; result = 4624 }
00:00:06 d #3027 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Angrykat.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Angrykat.html.hangul.md.pdf; result = 4626 }
00:00:06 i #3028 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/WhitneyR.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\WhitneyR.html.hangul.md.html }
00:00:06 i #3029 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Angrykat.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Angrykat.html.hangul.md.html }
00:00:06 d #3030 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\WhitneyR.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/WhitneyR.html.hangul.md.html; result = 11677 }
00:00:06 i #3031 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/WhitneyR.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\WhitneyR.html.md.epub }
00:00:06 d #3032 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Angrykat.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Angrykat.html.hangul.md.html; result = 11677 }
00:00:06 i #3033 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Angrykat.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Angrykat.html.md.epub }
00:00:06 d #3034 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\WhitneyR.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/WhitneyR.html.md.epub; result = 5492 }
00:00:06 i #3035 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/WhitneyR.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\WhitneyR.html.md.pdf }
00:00:06 d #3036 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Angrykat.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Angrykat.html.md.epub; result = 5492 }
00:00:06 i #3037 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Angrykat.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Angrykat.html.md.pdf }
00:00:06 d #3038 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\WhitneyR.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/WhitneyR.html.md.pdf; result = 5055 }
00:00:06 i #3039 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/WhitneyR.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\WhitneyR.html.md.html }
00:00:06 d #3040 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Angrykat.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Angrykat.html.md.pdf; result = 4963 }
00:00:06 i #3041 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Angrykat.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Angrykat.html.md.html }
00:00:06 d #3042 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\WhitneyR.html.md.html; new_path = c:/home/git/vault/dist/data/chat/WhitneyR.html.md.html; result = 11639 }
00:00:06 i #3043 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/WhitneyR.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\WhitneyR.html.hangul.md }
00:00:06 d #3044 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Angrykat.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Angrykat.html.md.html; result = 11639 }
00:00:06 i #3045 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Angrykat.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Angrykat.html.hangul.md }
00:00:06 d #3046 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\WhitneyR.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/WhitneyR.html.hangul.md; result = 147 }
00:00:06 d #3047 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Angrykat.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Angrykat.html.hangul.md; result = 147 }
00:00:06 d #3048 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Yarrow.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Yarrow.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:06 d #3049 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/AubriToffee.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/AubriToffee.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:06 v #3050 > 'a1a5b3322c5350a719f7986e9d4ae98c35eee5b4'
00:00:06 v #3051 > 'ffab8f376d7f53d106f540c2ac421f5555f14780'
00:00:06 v #3052 > 'd3de83b9d0a0577cf26f194c7adad8192d14da8b'
00:00:06 v #3053 > 'a723feaae6f8e91d29bb55f9687d6cc9ab00c214'
00:00:06 v #3054 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:06 d #3055 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/numbers/numbers.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/numbers/numbers.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:06 v #3056 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:06 v #3057 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:06 d #3058 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/travel/maps.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/travel/maps.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:06 v #3059 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:06 d #3060 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:06 d #3061 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/web3/web3.fc1943s.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/web3/web3.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:06 v #3062 > 'f8e5972d7a116efc09e6f689052a2c00ef110f18'
00:00:06 v #3063 > 'd52eee26d16ca6ea0d4f412a90aed750bab95042'
00:00:06 v #3064 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:06 d #3065 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/AubriToffee.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/AubriToffee.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:06 v #3066 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:06 d #3067 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Yarrow.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Yarrow.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:06 v #3068 > a1a5b3322c5350a719f7986e9d4ae98c35eee5b4
00:00:06 v #3069 > d3de83b9d0a0577cf26f194c7adad8192d14da8b
00:00:06 v #3070 > ffab8f376d7f53d106f540c2ac421f5555f14780
00:00:06 v #3071 > a723feaae6f8e91d29bb55f9687d6cc9ab00c214
00:00:06 v #3072 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:06 i #3073 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/numbers/numbers.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\numbers.hangul.md.epub }
00:00:06 v #3074 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:06 v #3075 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:06 d #3076 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\numbers.hangul.md.epub; new_path = c:/home/git/vault/dist/data/numbers/numbers.hangul.md.epub; result = 6316 }
00:00:06 i #3077 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/numbers/numbers.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\numbers.hangul.md.pdf }
00:00:06 d #3078 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\numbers.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/numbers/numbers.hangul.md.pdf; result = 8509 }
00:00:06 i #3079 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/numbers/numbers.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\numbers.hangul.md.html }
00:00:06 i #3080 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv_pt-br.fc1943s.hangul.md.epub }
00:00:06 i #3081 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.hangul.md.epub }
00:00:06 d #3082 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\numbers.hangul.md.html; new_path = c:/home/git/vault/dist/data/numbers/numbers.hangul.md.html; result = 13256 }
00:00:06 i #3083 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/numbers/numbers.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\numbers.md.epub }
00:00:06 d #3084 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv_pt-br.fc1943s.hangul.md.epub; new_path = c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.hangul.md.epub; result = 12693 }
00:00:06 i #3085 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv_pt-br.fc1943s.hangul.md.pdf }
00:00:06 d #3086 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.hangul.md.epub; new_path = c:/home/git/vault/dist/data/travel/maps.hangul.md.epub; result = 8554 }
00:00:06 d #3087 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\numbers.md.epub; new_path = c:/home/git/vault/dist/data/numbers/numbers.md.epub; result = 6368 }
00:00:06 i #3088 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.hangul.md.pdf }
00:00:06 i #3089 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/numbers/numbers.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\numbers.md.pdf }
00:00:06 d #3090 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv_pt-br.fc1943s.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.hangul.md.pdf; result = 13093 }
00:00:06 i #3091 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv_pt-br.fc1943s.hangul.md.html }
00:00:06 d #3092 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/travel/maps.hangul.md.pdf; result = 11793 }
00:00:06 d #3093 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\numbers.md.pdf; new_path = c:/home/git/vault/dist/data/numbers/numbers.md.pdf; result = 20721 }
00:00:06 i #3094 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/numbers/numbers.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\numbers.md.html }
00:00:06 i #3094 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.hangul.md.html }
00:00:06 d #3096 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv_pt-br.fc1943s.hangul.md.html; new_path = c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.hangul.md.html; result = 33732 }
00:00:06 i #3097 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv_pt-br.fc1943s.md.epub }
00:00:06 d #3098 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\numbers.md.html; new_path = c:/home/git/vault/dist/data/numbers/numbers.md.html; result = 19554 }
00:00:06 d #3099 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.hangul.md.html; new_path = c:/home/git/vault/dist/data/travel/maps.hangul.md.html; result = 27046 }
00:00:06 i #3100 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/numbers/numbers.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\numbers.hangul.md }
00:00:06 i #3101 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.md.epub }
00:00:06 d #3102 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv_pt-br.fc1943s.md.epub; new_path = c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.md.epub; result = 11606 }
00:00:06 d #3103 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\numbers.hangul.md; new_path = c:/home/git/vault/dist/data/numbers/numbers.hangul.md; result = 2058 }
00:00:06 i #3104 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv_pt-br.fc1943s.md.pdf }
00:00:06 d #3105 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.md.epub; new_path = c:/home/git/vault/dist/data/travel/maps.md.epub; result = 8072 }
00:00:06 v #3106 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:06 i #3107 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.md.pdf }
00:00:06 d #3108 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv_pt-br.fc1943s.md.pdf; new_path = c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.md.pdf; result = 45640 }
00:00:06 i #3109 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv_pt-br.fc1943s.md.html }
00:00:06 d #3110 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.md.pdf; new_path = c:/home/git/vault/dist/data/travel/maps.md.pdf; result = 26462 }
00:00:06 i #3111 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.hangul.md.epub }
00:00:06 i #3112 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.md.html }
00:00:06 d #3113 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv_pt-br.fc1943s.md.html; new_path = c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.md.html; result = 26660 }
00:00:06 d #3113 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/personality/personality.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/personality/personality.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:06 i #3115 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv_pt-br.fc1943s.hangul.md }
00:00:06 d #3116 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.md.html; new_path = c:/home/git/vault/dist/data/travel/maps.md.html; result = 23119 }
00:00:06 d #3117 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.hangul.md.epub; new_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.hangul.md.epub; result = 5745 }
00:00:06 i #3118 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.hangul.md }
00:00:06 i #3119 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.hangul.md.pdf }
00:00:06 d #3120 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv_pt-br.fc1943s.hangul.md; new_path = c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.hangul.md; result = 20859 }
00:00:06 d #3121 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.hangul.md; new_path = c:/home/git/vault/dist/data/travel/maps.hangul.md; result = 10495 }
00:00:06 d #3122 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.hangul.md.pdf; result = 6705 }
00:00:06 i #3123 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.hangul.md.html }
00:00:06 d #3124 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.hangul.md.html; new_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.hangul.md.html; result = 10517 }
00:00:06 i #3125 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.md.epub }
00:00:06 d #3126 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.md.epub; new_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.md.epub; result = 5693 }
00:00:06 i #3127 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.md.pdf }
00:00:06 d #3128 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/work/work.fc1943s.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/work/work.fc1943s.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:06 d #3129 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/travel/maps.png.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/travel/maps.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:06 d #3130 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.md.pdf; new_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.md.pdf; result = 13933 }
00:00:06 i #3131 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.md.html }
00:00:06 d #3132 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.md.html; new_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.md.html; result = 10876 }
00:00:06 i #3133 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.hangul.md }
00:00:06 d #3134 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.hangul.md; new_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.hangul.md; result = 472 }
00:00:06 d #3135 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/web3/web3.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/web3/web3.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:06 v #3136 > f8e5972d7a116efc09e6f689052a2c00ef110f18
00:00:06 v #3137 > d52eee26d16ca6ea0d4f412a90aed750bab95042
00:00:06 v #3138 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:06 i #3139 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AubriToffee.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AubriToffee.html.hangul.md.epub }
00:00:06 d #3140 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AubriToffee.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/AubriToffee.html.hangul.md.epub; result = 5566 }
00:00:06 i #3141 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AubriToffee.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AubriToffee.html.hangul.md.pdf }
00:00:06 v #3142 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:06 d #3143 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AubriToffee.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/AubriToffee.html.hangul.md.pdf; result = 4625 }
00:00:06 i #3144 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AubriToffee.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AubriToffee.html.hangul.md.html }
00:00:06 d #3145 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AubriToffee.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/AubriToffee.html.hangul.md.html; result = 11683 }
00:00:06 i #3146 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AubriToffee.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AubriToffee.html.md.epub }
00:00:06 i #3147 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Yarrow.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Yarrow.html.hangul.md.epub }
00:00:06 d #3148 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AubriToffee.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/AubriToffee.html.md.epub; result = 5494 }
00:00:06 i #3149 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AubriToffee.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AubriToffee.html.md.pdf }
00:00:06 d #3150 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Yarrow.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Yarrow.html.hangul.md.epub; result = 5557 }
00:00:06 i #3151 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Yarrow.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Yarrow.html.hangul.md.pdf }
00:00:06 d #3152 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AubriToffee.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/AubriToffee.html.md.pdf; result = 4950 }
00:00:06 i #3153 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AubriToffee.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AubriToffee.html.md.html }
00:00:06 d #3154 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Yarrow.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Yarrow.html.hangul.md.pdf; result = 4624 }
00:00:06 i #3155 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Yarrow.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Yarrow.html.hangul.md.html }
00:00:06 d #3156 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AubriToffee.html.md.html; new_path = c:/home/git/vault/dist/data/chat/AubriToffee.html.md.html; result = 11642 }
00:00:06 i #3157 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AubriToffee.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AubriToffee.html.hangul.md }
00:00:06 d #3158 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Yarrow.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Yarrow.html.hangul.md.html; result = 11668 }
00:00:06 d #3159 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AubriToffee.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/AubriToffee.html.hangul.md; result = 152 }
00:00:06 i #3160 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Yarrow.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Yarrow.html.md.epub }
00:00:06 d #3161 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Yarrow.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Yarrow.html.md.epub; result = 5488 }
00:00:06 i #3162 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Yarrow.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Yarrow.html.md.pdf }
00:00:06 d #3163 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Yarrow.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Yarrow.html.md.pdf; result = 4931 }
00:00:06 i #3164 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Yarrow.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Yarrow.html.md.html }
00:00:06 d #3165 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Yarrow.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Yarrow.html.md.html; result = 11637 }
00:00:06 i #3166 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Yarrow.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Yarrow.html.hangul.md }
00:00:06 d #3167 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/AwesomeEly.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/AwesomeEly.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:06 d #3168 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Yarrow.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Yarrow.html.hangul.md; result = 137 }
00:00:06 d #3169 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Yukenzi.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Yukenzi.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:06 v #3170 > 'a1d96e6335c70898790582735eb8154509a5c803'
00:00:06 v #3171 > '23887617bd91a3849e5506af095bf349436acb0e'
00:00:06 v #3172 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:06 v #3173 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:06 d #3174 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/personality/personality.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/personality/personality.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:06 d #3175 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/work/work.fc1943s.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/work/work.fc1943s.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:06 v #3176 > '92f543f4856cde35cccf2d2d21bd6a78ad15dd3b'
00:00:06 v #3177 > 'f3b56b85c461b6c7b4621c4867b4a3d000577ca1'
00:00:06 v #3178 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:06 v #3179 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:06 d #3180 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/web3/web3.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/web3/web3.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:06 d #3181 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/travel/maps.png.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/travel/maps.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:07 v #3182 > '11c740033ce73b721e730b70049b51f65f1f3163'
00:00:07 v #3183 > '0c2e8945d1037cf0f10232f091d83d282a3ad155'
00:00:07 v #3184 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:07 d #3185 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/AwesomeEly.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/AwesomeEly.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:07 v #3186 > a1d96e6335c70898790582735eb8154509a5c803
00:00:07 v #3187 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:07 d #3188 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Yukenzi.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Yukenzi.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:07 v #3189 > 23887617bd91a3849e5506af095bf349436acb0e
00:00:07 v #3190 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:07 i #3191 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.html.hangul.md.epub }
00:00:07 v #3192 > f3b56b85c461b6c7b4621c4867b4a3d000577ca1
00:00:07 d #3193 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/personality/personality.html.hangul.md.epub; result = 5619 }
00:00:07 i #3194 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.html.hangul.md.pdf }
00:00:07 d #3195 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/personality/personality.html.hangul.md.pdf; result = 4322 }
00:00:07 i #3196 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.html.hangul.md.html }
00:00:07 d #3197 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/personality/personality.html.hangul.md.html; result = 10812 }
00:00:07 i #3198 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.html.md.epub }
00:00:07 d #3199 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.html.md.epub; new_path = c:/home/git/vault/dist/data/personality/personality.html.md.epub; result = 5513 }
00:00:07 i #3200 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.html.md.pdf }
00:00:07 d #3201 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.html.md.pdf; new_path = c:/home/git/vault/dist/data/personality/personality.html.md.pdf; result = 6656 }
00:00:07 i #3202 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.html.md.html }
00:00:07 d #3203 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.html.md.html; new_path = c:/home/git/vault/dist/data/personality/personality.html.md.html; result = 10655 }
00:00:07 i #3204 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.html.hangul.md }
00:00:07 d #3205 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.html.hangul.md; new_path = c:/home/git/vault/dist/data/personality/personality.html.hangul.md; result = 578 }
00:00:07 d #3206 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/personality/personality.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/personality/personality.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:07 v #3207 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:07 v #3208 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:07 v #3209 > 92f543f4856cde35cccf2d2d21bd6a78ad15dd3b
00:00:07 i #3210 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.png.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.png.hangul.md.epub }
00:00:07 i #3211 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/work.fc1943s.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\work.fc1943s.pdf.hangul.md.epub }
00:00:07 d #3212 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.png.hangul.md.epub; new_path = c:/home/git/vault/dist/data/travel/maps.png.hangul.md.epub; result = 9406 }
00:00:07 i #3213 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.png.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.png.hangul.md.pdf }
00:00:07 d #3214 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\work.fc1943s.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/work/work.fc1943s.pdf.hangul.md.epub; result = 5704 }
00:00:07 i #3215 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/work.fc1943s.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\work.fc1943s.pdf.hangul.md.pdf }
00:00:07 d #3216 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.png.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/travel/maps.png.hangul.md.pdf; result = 2204 }
00:00:07 i #3217 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.png.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.png.hangul.md.html }
00:00:07 d #3218 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\work.fc1943s.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/work/work.fc1943s.pdf.hangul.md.pdf; result = 4821 }
00:00:07 i #3219 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/work.fc1943s.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\work.fc1943s.pdf.hangul.md.html }
00:00:07 d #3220 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.png.hangul.md.html; new_path = c:/home/git/vault/dist/data/travel/maps.png.hangul.md.html; result = 77796 }
00:00:07 d #3221 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\work.fc1943s.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/work/work.fc1943s.pdf.hangul.md.html; result = 10407 }
00:00:07 i #3222 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/work.fc1943s.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\work.fc1943s.pdf.md.epub }
00:00:07 i #3223 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.png.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.png.md.epub }
00:00:07 d #3224 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\work.fc1943s.pdf.md.epub; new_path = c:/home/git/vault/dist/data/work/work.fc1943s.pdf.md.epub; result = 5569 }
00:00:07 d #3225 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.png.md.epub; new_path = c:/home/git/vault/dist/data/travel/maps.png.md.epub; result = 8596 }
00:00:07 i #3226 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.png.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.png.md.pdf }
00:00:07 i #3227 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/work.fc1943s.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\work.fc1943s.pdf.md.pdf }
00:00:07 d #3228 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.png.md.pdf; new_path = c:/home/git/vault/dist/data/travel/maps.png.md.pdf; result = 2202 }
00:00:07 i #3229 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.png.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.png.md.html }
00:00:07 d #3230 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\work.fc1943s.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/work/work.fc1943s.pdf.md.pdf; result = 7732 }
00:00:07 i #3231 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/work.fc1943s.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\work.fc1943s.pdf.md.html }
00:00:07 d #3232 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\work.fc1943s.pdf.md.html; new_path = c:/home/git/vault/dist/data/work/work.fc1943s.pdf.md.html; result = 10236 }
00:00:07 d #3232 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.png.md.html; new_path = c:/home/git/vault/dist/data/travel/maps.png.md.html; result = 56185 }
00:00:07 i #3234 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/work.fc1943s.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\work.fc1943s.pdf.hangul.md }
00:00:07 i #3235 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.png.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.png.hangul.md }
00:00:07 d #3236 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\work.fc1943s.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/work/work.fc1943s.pdf.hangul.md; result = 440 }
00:00:07 d #3237 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.png.hangul.md; new_path = c:/home/git/vault/dist/data/travel/maps.png.hangul.md; result = 59559 }
00:00:07 d #3238 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/workflow/tasks.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/workflow/tasks.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:07 d #3239 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/travel/north korea.png.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/travel/north korea.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:07 v #3240 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:07 i #3241 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.html.hangul.md.epub }
00:00:07 d #3242 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/web3/web3.html.hangul.md.epub; result = 5557 }
00:00:07 i #3243 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.html.hangul.md.pdf }
00:00:07 d #3244 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/web3/web3.html.hangul.md.pdf; result = 3791 }
00:00:07 i #3245 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.html.hangul.md.html }
00:00:07 d #3246 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/web3/web3.html.hangul.md.html; result = 10329 }
00:00:07 i #3247 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.html.md.epub }
00:00:07 d #3248 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.html.md.epub; new_path = c:/home/git/vault/dist/data/web3/web3.html.md.epub; result = 5472 }
00:00:07 i #3249 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.html.md.pdf }
00:00:07 d #3250 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.html.md.pdf; new_path = c:/home/git/vault/dist/data/web3/web3.html.md.pdf; result = 6103 }
00:00:07 i #3251 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.html.md.html }
00:00:07 d #3252 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.html.md.html; new_path = c:/home/git/vault/dist/data/web3/web3.html.md.html; result = 10254 }
00:00:07 i #3253 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.html.hangul.md }
00:00:07 d #3254 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.html.hangul.md; new_path = c:/home/git/vault/dist/data/web3/web3.html.hangul.md; result = 273 }
00:00:07 d #3255 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/web3/web3.i574n.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/web3/web3.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:07 v #3256 > 11c740033ce73b721e730b70049b51f65f1f3163
00:00:07 v #3257 > 0c2e8945d1037cf0f10232f091d83d282a3ad155
00:00:07 v #3258 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:07 v #3258 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:07 i #3260 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AwesomeEly.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AwesomeEly.html.hangul.md.epub }
00:00:07 i #3261 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Yukenzi.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Yukenzi.html.hangul.md.epub }
00:00:07 d #3262 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AwesomeEly.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/AwesomeEly.html.hangul.md.epub; result = 5561 }
00:00:07 i #3263 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AwesomeEly.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AwesomeEly.html.hangul.md.pdf }
00:00:07 d #3264 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Yukenzi.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Yukenzi.html.hangul.md.epub; result = 5562 }
00:00:07 i #3265 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Yukenzi.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Yukenzi.html.hangul.md.pdf }
00:00:07 d #3266 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AwesomeEly.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/AwesomeEly.html.hangul.md.pdf; result = 4625 }
00:00:07 i #3267 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AwesomeEly.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AwesomeEly.html.hangul.md.html }
00:00:07 d #3268 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Yukenzi.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Yukenzi.html.hangul.md.pdf; result = 4625 }
00:00:07 i #3269 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Yukenzi.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Yukenzi.html.hangul.md.html }
00:00:07 d #3270 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AwesomeEly.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/AwesomeEly.html.hangul.md.html; result = 11677 }
00:00:07 i #3271 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AwesomeEly.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AwesomeEly.html.md.epub }
00:00:07 d #3271 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Yukenzi.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Yukenzi.html.hangul.md.html; result = 11671 }
00:00:07 i #3273 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Yukenzi.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Yukenzi.html.md.epub }
00:00:07 d #3274 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AwesomeEly.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/AwesomeEly.html.md.epub; result = 5494 }
00:00:07 d #3275 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Yukenzi.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Yukenzi.html.md.epub; result = 5492 }
00:00:07 i #3276 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AwesomeEly.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AwesomeEly.html.md.pdf }
00:00:07 i #3277 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Yukenzi.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Yukenzi.html.md.pdf }
00:00:07 d #3278 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AwesomeEly.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/AwesomeEly.html.md.pdf; result = 5080 }
00:00:07 d #3279 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Yukenzi.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Yukenzi.html.md.pdf; result = 4991 }
00:00:07 i #3280 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AwesomeEly.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AwesomeEly.html.md.html }
00:00:07 i #3281 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Yukenzi.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Yukenzi.html.md.html }
00:00:07 d #3282 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AwesomeEly.html.md.html; new_path = c:/home/git/vault/dist/data/chat/AwesomeEly.html.md.html; result = 11641 }
00:00:07 d #3283 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Yukenzi.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Yukenzi.html.md.html; result = 11638 }
00:00:07 i #3284 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AwesomeEly.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AwesomeEly.html.hangul.md }
00:00:07 i #3285 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Yukenzi.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Yukenzi.html.hangul.md }
00:00:07 d #3286 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AwesomeEly.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/AwesomeEly.html.hangul.md; result = 146 }
00:00:07 d #3287 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Yukenzi.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Yukenzi.html.hangul.md; result = 140 }
00:00:07 d #3288 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chores/chores.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chores/chores.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:07 v #3289 > '9f027fb632360364fdede8801655256872d810e4'
00:00:07 d #3290 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/BirthdayLexxx.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/BirthdayLexxx.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:07 v #3291 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:07 d #3292 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/personality/personality.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/personality/personality.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:07 v #3293 > '22cc2919cdbd8e95094bb594f901a066bcc97026'
00:00:07 v #3294 > 'e3ef54d891d63ebc833646a1fd1659d77b054964'
00:00:07 v #3295 > 'd328e42faa6744c53ddc51cce73e99babf354294'
00:00:07 v #3296 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:07 v #3297 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:07 d #3298 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/workflow/tasks.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/workflow/tasks.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:07 d #3299 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/travel/north korea.png.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/travel/north korea.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:07 v #3300 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:07 d #3301 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/web3/web3.i574n.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/web3/web3.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:07 v #3302 > 'e182749a69de369b41601d59b66d66fda8c320b8'
00:00:07 v #3303 > '6aa5fd3d6fa6bb7f06dc56dc3545d7d1f7a5f269'
00:00:07 v #3304 > 9f027fb632360364fdede8801655256872d810e4
00:00:07 v #3305 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:07 d #3306 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chores/chores.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chores/chores.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:07 v #3307 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:07 d #3308 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:07 v #3309 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:07 i #3310 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.hangul.md.epub }
00:00:07 v #3311 > e3ef54d891d63ebc833646a1fd1659d77b054964
00:00:07 d #3312 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.hangul.md.epub; new_path = c:/home/git/vault/dist/data/personality/personality.hangul.md.epub; result = 60937 }
00:00:07 i #3313 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.hangul.md.pdf }
00:00:07 d #3314 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/personality/personality.hangul.md.pdf; result = 78346 }
00:00:07 i #3315 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.hangul.md.html }
00:00:07 v #3316 > 22cc2919cdbd8e95094bb594f901a066bcc97026
00:00:07 d #3317 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.hangul.md.html; new_path = c:/home/git/vault/dist/data/personality/personality.hangul.md.html; result = 318093 }
00:00:07 i #3318 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.md.epub }
00:00:07 d #3319 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.md.epub; new_path = c:/home/git/vault/dist/data/personality/personality.md.epub; result = 54082 }
00:00:07 i #3320 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.md.pdf }
00:00:07 v #3321 > d328e42faa6744c53ddc51cce73e99babf354294
00:00:07 d #3322 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.md.pdf; new_path = c:/home/git/vault/dist/data/personality/personality.md.pdf; result = 230231 }
00:00:07 i #3323 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.md.html }
00:00:07 d #3324 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.md.html; new_path = c:/home/git/vault/dist/data/personality/personality.md.html; result = 218431 }
00:00:07 i #3325 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.hangul.md }
00:00:07 d #3326 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.hangul.md; new_path = c:/home/git/vault/dist/data/personality/personality.hangul.md; result = 271008 }
00:00:07 v #3327 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:07 i #3328 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/north korea.png.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\north korea.png.hangul.md.epub }
00:00:07 d #3329 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/personality/personality.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/personality/personality.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:07 d #3330 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\north korea.png.hangul.md.epub; new_path = c:/home/git/vault/dist/data/travel/north korea.png.hangul.md.epub; result = 6121 }
00:00:07 v #3331 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:07 v #3332 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:07 i #3333 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/north korea.png.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\north korea.png.hangul.md.pdf }
00:00:07 d #3334 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\north korea.png.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/travel/north korea.png.hangul.md.pdf; result = 3913 }
00:00:07 i #3335 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/north korea.png.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\north korea.png.hangul.md.html }
00:00:07 i #3336 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/tasks.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tasks.hangul.md.epub }
00:00:07 i #3337 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.i574n.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.i574n.hangul.md.epub }
00:00:07 d #3338 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\north korea.png.hangul.md.html; new_path = c:/home/git/vault/dist/data/travel/north korea.png.hangul.md.html; result = 13391 }
00:00:07 d #3339 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tasks.hangul.md.epub; new_path = c:/home/git/vault/dist/data/workflow/tasks.hangul.md.epub; result = 6545 }
00:00:07 d #3340 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.i574n.hangul.md.epub; new_path = c:/home/git/vault/dist/data/web3/web3.i574n.hangul.md.epub; result = 5496 }
00:00:07 i #3341 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/north korea.png.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\north korea.png.md.epub }
00:00:07 i #3342 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.i574n.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.i574n.hangul.md.pdf }
00:00:07 i #3343 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/tasks.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tasks.hangul.md.pdf }
00:00:07 d #3344 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\north korea.png.md.epub; new_path = c:/home/git/vault/dist/data/travel/north korea.png.md.epub; result = 5893 }
00:00:07 d #3345 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tasks.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/workflow/tasks.hangul.md.pdf; result = 7490 }
00:00:07 d #3346 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.i574n.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/web3/web3.i574n.hangul.md.pdf; result = 4134 }
00:00:07 i #3346 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/north korea.png.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\north korea.png.md.pdf }
00:00:07 i #3348 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/tasks.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tasks.hangul.md.html }
00:00:07 i #3349 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.i574n.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.i574n.hangul.md.html }
00:00:07 d #3350 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tasks.hangul.md.html; new_path = c:/home/git/vault/dist/data/workflow/tasks.hangul.md.html; result = 14784 }
00:00:07 d #3351 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\north korea.png.md.pdf; new_path = c:/home/git/vault/dist/data/travel/north korea.png.md.pdf; result = 4740 }
00:00:07 d #3352 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.i574n.hangul.md.html; new_path = c:/home/git/vault/dist/data/web3/web3.i574n.hangul.md.html; result = 10068 }
00:00:07 i #3353 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/north korea.png.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\north korea.png.md.html }
00:00:07 i #3354 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/tasks.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tasks.md.epub }
00:00:07 i #3355 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.i574n.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.i574n.md.epub }
00:00:07 d #3356 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\north korea.png.md.html; new_path = c:/home/git/vault/dist/data/travel/north korea.png.md.html; result = 12168 }
00:00:07 d #3357 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tasks.md.epub; new_path = c:/home/git/vault/dist/data/workflow/tasks.md.epub; result = 6301 }
00:00:07 i #3358 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/north korea.png.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\north korea.png.hangul.md }
00:00:07 i #3359 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/tasks.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tasks.md.pdf }
00:00:07 d #3360 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.i574n.md.epub; new_path = c:/home/git/vault/dist/data/web3/web3.i574n.md.epub; result = 5439 }
00:00:07 i #3361 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.i574n.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.i574n.md.pdf }
00:00:07 d #3362 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\north korea.png.hangul.md; new_path = c:/home/git/vault/dist/data/travel/north korea.png.hangul.md; result = 2978 }
00:00:07 d #3363 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tasks.md.pdf; new_path = c:/home/git/vault/dist/data/workflow/tasks.md.pdf; result = 15525 }
00:00:07 i #3364 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/tasks.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tasks.md.html }
00:00:07 d #3365 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.i574n.md.pdf; new_path = c:/home/git/vault/dist/data/web3/web3.i574n.md.pdf; result = 5669 }
00:00:07 d #3366 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tasks.md.html; new_path = c:/home/git/vault/dist/data/workflow/tasks.md.html; result = 13715 }
00:00:07 i #3367 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.i574n.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.i574n.md.html }
00:00:07 i #3368 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/tasks.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tasks.hangul.md }
00:00:07 d #3369 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.i574n.md.html; new_path = c:/home/git/vault/dist/data/web3/web3.i574n.md.html; result = 10042 }
00:00:07 d #3370 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tasks.hangul.md; new_path = c:/home/git/vault/dist/data/workflow/tasks.hangul.md; result = 3399 }
00:00:07 i #3371 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.i574n.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.i574n.hangul.md }
00:00:07 d #3372 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/travel/travel.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/travel/travel.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:07 d #3373 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.i574n.hangul.md; new_path = c:/home/git/vault/dist/data/web3/web3.i574n.hangul.md; result = 88 }
00:00:07 d #3374 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/workflow/test.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/workflow/test.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:07 d #3375 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/web3/web3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/web3/web3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:07 v #3376 > 6aa5fd3d6fa6bb7f06dc56dc3545d7d1f7a5f269
00:00:07 v #3377 > e182749a69de369b41601d59b66d66fda8c320b8
00:00:07 v #3378 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:07 v #3379 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:07 i #3380 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chores/chores.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chores.hangul.md.epub }
00:00:07 i #3381 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\BirthdayLexxx.html.hangul.md.epub }
00:00:07 d #3382 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chores.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chores/chores.hangul.md.epub; result = 5381 }
00:00:07 d #3383 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\BirthdayLexxx.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.hangul.md.epub; result = 5569 }
00:00:07 i #3384 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chores/chores.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chores.hangul.md.pdf }
00:00:07 i #3385 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\BirthdayLexxx.html.hangul.md.pdf }
00:00:07 d #3386 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chores.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chores/chores.hangul.md.pdf; result = 2385 }
00:00:07 i #3387 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chores/chores.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chores.hangul.md.html }
00:00:07 d #3388 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\BirthdayLexxx.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.hangul.md.pdf; result = 4625 }
00:00:07 i #3389 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\BirthdayLexxx.html.hangul.md.html }
00:00:07 d #3390 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chores.hangul.md.html; new_path = c:/home/git/vault/dist/data/chores/chores.hangul.md.html; result = 9904 }
00:00:07 d #3390 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\BirthdayLexxx.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.hangul.md.html; result = 11686 }
00:00:07 i #3391 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\BirthdayLexxx.html.md.epub }
00:00:07 i #3392 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chores/chores.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chores.md.epub }
00:00:07 d #3393 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\BirthdayLexxx.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.md.epub; result = 5497 }
00:00:07 d #3394 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chores.md.epub; new_path = c:/home/git/vault/dist/data/chores/chores.md.epub; result = 5382 }
00:00:07 i #3395 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\BirthdayLexxx.html.md.pdf }
00:00:07 i #3396 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chores/chores.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chores.md.pdf }
00:00:07 d #3397 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chores.md.pdf; new_path = c:/home/git/vault/dist/data/chores/chores.md.pdf; result = 2382 }
00:00:07 d #3397 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\BirthdayLexxx.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.md.pdf; result = 4980 }
00:00:07 i #3399 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chores/chores.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chores.md.html }
00:00:07 i #3399 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\BirthdayLexxx.html.md.html }
00:00:07 d #3401 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chores.md.html; new_path = c:/home/git/vault/dist/data/chores/chores.md.html; result = 9904 }
00:00:07 d #3401 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\BirthdayLexxx.html.md.html; new_path = c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.md.html; result = 11644 }
00:00:07 i #3403 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\BirthdayLexxx.html.hangul.md }
00:00:07 i #3404 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chores/chores.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chores.hangul.md }
00:00:07 d #3405 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\BirthdayLexxx.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.hangul.md; result = 155 }
00:00:07 d #3406 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chores.hangul.md; new_path = c:/home/git/vault/dist/data/chores/chores.hangul.md; result = 1783 }
00:00:07 v #3407 > '68627cc8449ef4c0341ed29575f29640d4aa156d'
00:00:07 d #3408 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Blond3B.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Blond3B.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:07 d #3409 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/cliparts/avatars.i574n.png.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/cliparts/avatars.i574n.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:07 v #3410 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:07 v #3411 > '6276e35c0a0b5b4a95f352dfca27a1785e05caa6'
00:00:07 d #3412 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/personality/personality.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/personality/personality.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:07 v #3413 > 'e6d9de7c036f23bcb7bdde8d98060b09ed696b52'
00:00:07 v #3414 > 'c260bf13b4742cdacca39c111d4253fb07b1925b'
00:00:07 v #3415 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:07 v #3416 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:07 d #3417 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/workflow/test.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/workflow/test.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:07 d #3418 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/travel/travel.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/travel/travel.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:07 v #3419 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:07 d #3420 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/web3/web3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/web3/web3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:07 v #3421 > '0b2a389931afb82d941ca55444960e145eb5c657'
00:00:07 v #3422 > 'bb1dd6b3d5d3aa822489fb2c78a9004391741d72'
00:00:07 v #3423 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:07 d #3424 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Blond3B.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Blond3B.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:07 v #3425 > 68627cc8449ef4c0341ed29575f29640d4aa156d
00:00:07 v #3426 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:07 v #3427 > e6d9de7c036f23bcb7bdde8d98060b09ed696b52
00:00:07 d #3428 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:07 v #3429 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:07 v #3430 > 6276e35c0a0b5b4a95f352dfca27a1785e05caa6
00:00:07 i #3431 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.pdf.hangul.md.epub }
00:00:07 d #3432 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/personality/personality.pdf.hangul.md.epub; result = 5909 }
00:00:07 i #3433 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.pdf.hangul.md.pdf }
00:00:07 d #3434 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/personality/personality.pdf.hangul.md.pdf; result = 5733 }
00:00:07 i #3435 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.pdf.hangul.md.html }
00:00:07 d #3436 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/personality/personality.pdf.hangul.md.html; result = 11060 }
00:00:07 i #3437 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.pdf.md.epub }
00:00:07 v #3438 > c260bf13b4742cdacca39c111d4253fb07b1925b
00:00:07 d #3439 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.pdf.md.epub; new_path = c:/home/git/vault/dist/data/personality/personality.pdf.md.epub; result = 5712 }
00:00:07 i #3440 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.pdf.md.pdf }
00:00:07 d #3441 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/personality/personality.pdf.md.pdf; result = 12232 }
00:00:07 i #3442 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.pdf.md.html }
00:00:07 d #3443 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.pdf.md.html; new_path = c:/home/git/vault/dist/data/personality/personality.pdf.md.html; result = 10681 }
00:00:07 i #3444 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.pdf.hangul.md }
00:00:07 d #3445 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/personality/personality.pdf.hangul.md; result = 984 }
00:00:07 v #3446 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:07 d #3447 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/personality/personality.png.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/personality/personality.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:07 i #3448 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/test.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\test.hangul.md.epub }
00:00:07 v #3449 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:07 d #3450 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\test.hangul.md.epub; new_path = c:/home/git/vault/dist/data/workflow/test.hangul.md.epub; result = 5936 }
00:00:07 i #3451 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/test.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\test.hangul.md.pdf }
00:00:07 d #3452 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\test.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/workflow/test.hangul.md.pdf; result = 3053 }
00:00:07 i #3453 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/test.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\test.hangul.md.html }
00:00:07 i #3454 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.html.hangul.md.epub }
00:00:07 d #3455 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\test.hangul.md.html; new_path = c:/home/git/vault/dist/data/workflow/test.hangul.md.html; result = 11432 }
00:00:07 i #3456 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/test.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\test.md.epub }
00:00:07 d #3457 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/travel/travel.html.hangul.md.epub; result = 5876 }
00:00:07 i #3458 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.html.hangul.md.pdf }
00:00:07 d #3459 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\test.md.epub; new_path = c:/home/git/vault/dist/data/workflow/test.md.epub; result = 5400 }
00:00:07 d #3460 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/travel/travel.html.hangul.md.pdf; result = 4975 }
00:00:07 i #3461 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/test.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\test.md.pdf }
00:00:07 i #3462 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.html.hangul.md.html }
00:00:07 d #3463 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\test.md.pdf; new_path = c:/home/git/vault/dist/data/workflow/test.md.pdf; result = 856 }
00:00:07 d #3464 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/travel/travel.html.hangul.md.html; result = 11687 }
00:00:07 i #3465 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.html.md.epub }
00:00:07 i #3466 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/test.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\test.md.html }
00:00:07 d #3467 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.html.md.epub; new_path = c:/home/git/vault/dist/data/travel/travel.html.md.epub; result = 5690 }
00:00:07 i #3468 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.html.md.pdf }
00:00:07 d #3469 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\test.md.html; new_path = c:/home/git/vault/dist/data/workflow/test.md.html; result = 11432 }
00:00:07 v #3469 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:07 i #3471 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/test.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\test.hangul.md }
00:00:07 d #3472 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.html.md.pdf; new_path = c:/home/git/vault/dist/data/travel/travel.html.md.pdf; result = 8238 }
00:00:07 i #3473 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.html.md.html }
00:00:07 i #3474 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.hangul.md.epub }
00:00:07 d #3476 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.html.md.html; new_path = c:/home/git/vault/dist/data/travel/travel.html.md.html; result = 11300 }
00:00:07 i #3477 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.html.hangul.md }
00:00:07 d #3475 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\test.hangul.md; new_path = c:/home/git/vault/dist/data/workflow/test.hangul.md; result = 1 }
00:00:07 d #3478 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/web3/web3.hangul.md.epub; result = 29771 }
00:00:07 i #3480 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.hangul.md.pdf }
00:00:07 d #3479 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.html.hangul.md; new_path = c:/home/git/vault/dist/data/travel/travel.html.hangul.md; result = 1231 }
00:00:07 d #3481 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/workflow/vault.fc1943s.7z.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/workflow/vault.fc1943s.7z.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:07 d #3482 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/politics/politics.png.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/politics/politics.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:07 d #3483 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/web3/web3.hangul.md.pdf; result = 38567 }
00:00:07 i #3484 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.hangul.md.html }
00:00:07 d #3485 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.hangul.md.html; new_path = c:/home/git/vault/dist/data/web3/web3.hangul.md.html; result = 134644 }
00:00:07 i #3486 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.md.epub }
00:00:07 d #3487 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.md.epub; new_path = c:/home/git/vault/dist/data/web3/web3.md.epub; result = 26856 }
00:00:07 i #3488 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.md.pdf }
00:00:07 d #3489 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.md.pdf; new_path = c:/home/git/vault/dist/data/web3/web3.md.pdf; result = 116434 }
00:00:07 i #3490 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.md.html }
00:00:07 d #3491 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.md.html; new_path = c:/home/git/vault/dist/data/web3/web3.md.html; result = 108241 }
00:00:07 i #3492 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.hangul.md }
00:00:07 d #3493 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.hangul.md; new_path = c:/home/git/vault/dist/data/web3/web3.hangul.md; result = 104543 }
00:00:07 d #3494 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/web3/web3.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/web3/web3.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:07 v #3495 > 0b2a389931afb82d941ca55444960e145eb5c657
00:00:07 v #3496 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:07 i #3497 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Blond3B.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Blond3B.html.hangul.md.epub }
00:00:07 d #3498 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Blond3B.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Blond3B.html.hangul.md.epub; result = 5564 }
00:00:07 i #3499 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Blond3B.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Blond3B.html.hangul.md.pdf }
00:00:07 d #3500 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Blond3B.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Blond3B.html.hangul.md.pdf; result = 4796 }
00:00:07 i #3501 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Blond3B.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Blond3B.html.hangul.md.html }
00:00:07 d #3502 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Blond3B.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Blond3B.html.hangul.md.html; result = 11675 }
00:00:07 i #3503 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Blond3B.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Blond3B.html.md.epub }
00:00:07 d #3504 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Blond3B.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Blond3B.html.md.epub; result = 5492 }
00:00:07 i #3505 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Blond3B.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Blond3B.html.md.pdf }
00:00:07 d #3506 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Blond3B.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Blond3B.html.md.pdf; result = 5107 }
00:00:07 i #3507 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Blond3B.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Blond3B.html.md.html }
00:00:07 d #3508 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Blond3B.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Blond3B.html.md.html; result = 11638 }
00:00:07 i #3509 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Blond3B.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Blond3B.html.hangul.md }
00:00:07 d #3510 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Blond3B.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Blond3B.html.hangul.md; result = 144 }
00:00:07 v #3511 > bb1dd6b3d5d3aa822489fb2c78a9004391741d72
00:00:07 d #3512 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Brithanybrown.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Brithanybrown.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:07 v #3513 > '4fcc14c389efe6ff802ca7b9c339f651219e2bcb'
00:00:07 v #3514 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:07 i #3515 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\avatars.i574n.png.hangul.md.epub }
00:00:07 d #3516 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\avatars.i574n.png.hangul.md.epub; new_path = c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.hangul.md.epub; result = 5772 }
00:00:07 i #3517 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\avatars.i574n.png.hangul.md.pdf }
00:00:07 d #3518 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\avatars.i574n.png.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.hangul.md.pdf; result = 2201 }
00:00:07 i #3519 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\avatars.i574n.png.hangul.md.html }
00:00:07 d #3520 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\avatars.i574n.png.hangul.md.html; new_path = c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.hangul.md.html; result = 10641 }
00:00:07 i #3521 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\avatars.i574n.png.md.epub }
00:00:07 d #3522 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\avatars.i574n.png.md.epub; new_path = c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.md.epub; result = 5633 }
00:00:07 i #3523 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\avatars.i574n.png.md.pdf }
00:00:07 v #3524 > '099ae9eb8a1733fc1f5da893621fdbb57e5078e0'
00:00:07 d #3525 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\avatars.i574n.png.md.pdf; new_path = c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.md.pdf; result = 2205 }
00:00:07 i #3526 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\avatars.i574n.png.md.html }
00:00:07 d #3527 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\avatars.i574n.png.md.html; new_path = c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.md.html; result = 10367 }
00:00:07 i #3528 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\avatars.i574n.png.hangul.md }
00:00:07 d #3529 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\avatars.i574n.png.hangul.md; new_path = c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.hangul.md; result = 650 }
00:00:07 v #3530 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:07 d #3531 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/personality/personality.png.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/personality/personality.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:07 d #3532 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/cliparts/cliparts.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/cliparts/cliparts.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:07 v #3533 > '8fabe889f569ba3807ef0839f2b579234fb81f91'
00:00:07 v #3534 > 'df377f01f1b9f3670c7a12dc9fdd0acd84916774'
00:00:07 v #3535 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:07 d #3536 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:07 v #3537 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:07 v #3538 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:07 d #3539 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/politics/politics.png.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/politics/politics.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:07 d #3540 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/web3/web3.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/web3/web3.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:07 v #3541 > 'bfe889588e28b8b54bc764337bfaa7907cb8ff0d'
00:00:07 v #3542 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:07 d #3543 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Brithanybrown.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Brithanybrown.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:07 v #3544 > 4fcc14c389efe6ff802ca7b9c339f651219e2bcb
00:00:07 v #3545 > '3641d1976fdcab1098922b3a808a6893d0dae39b'
00:00:07 v #3546 > 099ae9eb8a1733fc1f5da893621fdbb57e5078e0
00:00:07 v #3547 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:07 i #3548 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.png.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.png.hangul.md.epub }
00:00:07 d #3549 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.png.hangul.md.epub; new_path = c:/home/git/vault/dist/data/personality/personality.png.hangul.md.epub; result = 7118 }
00:00:07 i #3550 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.png.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.png.hangul.md.pdf }
00:00:07 d #3551 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.png.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/personality/personality.png.hangul.md.pdf; result = 2202 }
00:00:07 i #3552 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.png.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.png.hangul.md.html }
00:00:07 v #3553 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:07 d #3554 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.png.hangul.md.html; new_path = c:/home/git/vault/dist/data/personality/personality.png.hangul.md.html; result = 15904 }
00:00:07 i #3555 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.png.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.png.md.epub }
00:00:07 d #3556 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.png.md.epub; new_path = c:/home/git/vault/dist/data/personality/personality.png.md.epub; result = 6558 }
00:00:07 i #3557 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.png.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.png.md.pdf }
00:00:07 d #3558 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.png.md.pdf; new_path = c:/home/git/vault/dist/data/personality/personality.png.md.pdf; result = 2204 }
00:00:07 d #3559 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/cliparts/cliparts.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/cliparts/cliparts.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:07 i #3560 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.png.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.png.md.html }
00:00:07 v #3561 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:07 d #3562 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.png.md.html; new_path = c:/home/git/vault/dist/data/personality/personality.png.md.html; result = 13572 }
00:00:07 i #3563 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.png.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.png.hangul.md }
00:00:07 i #3564 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.fc1943s.7z.hangul.md.epub }
00:00:07 d #3565 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.png.hangul.md; new_path = c:/home/git/vault/dist/data/personality/personality.png.hangul.md; result = 5168 }
00:00:07 d #3566 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.fc1943s.7z.hangul.md.epub; new_path = c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.hangul.md.epub; result = 10026 }
00:00:07 i #3567 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.fc1943s.7z.hangul.md.pdf }
00:00:07 d #3568 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.fc1943s.7z.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.hangul.md.pdf; result = 8957 }
00:00:07 i #3569 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.fc1943s.7z.hangul.md.html }
00:00:07 d #3570 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.fc1943s.7z.hangul.md.html; new_path = c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.hangul.md.html; result = 22716 }
00:00:07 d #3571 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/philosophy/philosophy.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/philosophy/philosophy.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:07 i #3572 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.fc1943s.7z.md.epub }
00:00:07 d #3573 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.fc1943s.7z.md.epub; new_path = c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.md.epub; result = 9459 }
00:00:07 v #3574 > 8fabe889f569ba3807ef0839f2b579234fb81f91
00:00:07 i #3575 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.fc1943s.7z.md.pdf }
00:00:07 d #3576 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.fc1943s.7z.md.pdf; new_path = c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.md.pdf; result = 20798 }
00:00:07 i #3577 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.fc1943s.7z.md.html }
00:00:07 d #3578 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.fc1943s.7z.md.html; new_path = c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.md.html; result = 22691 }
00:00:07 i #3579 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.fc1943s.7z.hangul.md }
00:00:07 d #3580 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.fc1943s.7z.hangul.md; new_path = c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.hangul.md; result = 12694 }
00:00:07 v #3581 > df377f01f1b9f3670c7a12dc9fdd0acd84916774
00:00:07 d #3582 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/workflow/vault.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/workflow/vault.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:07 v #3583 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:07 i #3584 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.png.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.png.hangul.md.epub }
00:00:07 d #3585 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.png.hangul.md.epub; new_path = c:/home/git/vault/dist/data/politics/politics.png.hangul.md.epub; result = 6406 }
00:00:07 i #3586 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.png.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.png.hangul.md.pdf }
00:00:07 v #3587 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:07 d #3588 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.png.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/politics/politics.png.hangul.md.pdf; result = 2203 }
00:00:07 i #3589 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.png.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.png.hangul.md.html }
00:00:07 i #3590 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.pdf.hangul.md.epub }
00:00:07 d #3591 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.png.hangul.md.html; new_path = c:/home/git/vault/dist/data/politics/politics.png.hangul.md.html; result = 12565 }
00:00:07 d #3592 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/web3/web3.pdf.hangul.md.epub; result = 7770 }
00:00:07 i #3593 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.png.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.png.md.epub }
00:00:07 i #3594 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.pdf.hangul.md.pdf }
00:00:08 d #3595 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/web3/web3.pdf.hangul.md.pdf; result = 7357 }
00:00:08 d #3596 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.png.md.epub; new_path = c:/home/git/vault/dist/data/politics/politics.png.md.epub; result = 6137 }
00:00:08 i #3597 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.pdf.hangul.md.html }
00:00:08 i #3598 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.png.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.png.md.pdf }
00:00:08 d #3599 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.png.md.pdf; new_path = c:/home/git/vault/dist/data/politics/politics.png.md.pdf; result = 2197 }
00:00:08 d #3600 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/web3/web3.pdf.hangul.md.html; result = 19755 }
00:00:08 i #3601 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.pdf.md.epub }
00:00:08 i #3602 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.png.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.png.md.html }
00:00:08 d #3603 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.pdf.md.epub; new_path = c:/home/git/vault/dist/data/web3/web3.pdf.md.epub; result = 7203 }
00:00:08 i #3604 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.pdf.md.pdf }
00:00:08 d #3605 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.png.md.html; new_path = c:/home/git/vault/dist/data/politics/politics.png.md.html; result = 11697 }
00:00:08 i #3606 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.png.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.png.hangul.md }
00:00:08 d #3607 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.png.hangul.md; new_path = c:/home/git/vault/dist/data/politics/politics.png.hangul.md; result = 2418 }
00:00:08 d #3607 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/web3/web3.pdf.md.pdf; result = 15249 }
00:00:08 i #3609 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.pdf.md.html }
00:00:08 d #3610 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.pdf.md.html; new_path = c:/home/git/vault/dist/data/web3/web3.pdf.md.html; result = 16626 }
00:00:08 i #3611 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.pdf.hangul.md }
00:00:08 d #3612 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/web3/web3.pdf.hangul.md; result = 8631 }
00:00:08 d #3613 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/programming/polyglot.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/programming/polyglot.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:08 d #3614 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/compilers/compilers.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/compilers/compilers.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:08 v #3615 > bfe889588e28b8b54bc764337bfaa7907cb8ff0d
00:00:08 v #3616 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:08 i #3617 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Brithanybrown.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Brithanybrown.html.hangul.md.epub }
00:00:08 d #3618 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Brithanybrown.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Brithanybrown.html.hangul.md.epub; result = 5568 }
00:00:08 i #3619 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Brithanybrown.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Brithanybrown.html.hangul.md.pdf }
00:00:08 d #3620 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Brithanybrown.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Brithanybrown.html.hangul.md.pdf; result = 4622 }
00:00:08 i #3621 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Brithanybrown.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Brithanybrown.html.hangul.md.html }
00:00:08 d #3622 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Brithanybrown.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Brithanybrown.html.hangul.md.html; result = 11680 }
00:00:08 i #3623 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Brithanybrown.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Brithanybrown.html.md.epub }
00:00:08 d #3624 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Brithanybrown.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Brithanybrown.html.md.epub; result = 5494 }
00:00:08 i #3625 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Brithanybrown.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Brithanybrown.html.md.pdf }
00:00:08 d #3626 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Brithanybrown.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Brithanybrown.html.md.pdf; result = 5065 }
00:00:08 i #3627 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Brithanybrown.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Brithanybrown.html.md.html }
00:00:08 d #3628 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Brithanybrown.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Brithanybrown.html.md.html; result = 11644 }
00:00:08 i #3629 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Brithanybrown.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Brithanybrown.html.hangul.md }
00:00:08 d #3630 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Brithanybrown.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Brithanybrown.html.hangul.md; result = 149 }
00:00:08 d #3631 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Cherrycute666.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Cherrycute666.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:08 v #3632 > 3641d1976fdcab1098922b3a808a6893d0dae39b
00:00:08 v #3633 > 'b6dbd0c8e44ee86bac57277c464c2bbfd2eb9533'
00:00:08 v #3634 > 'a50cce7fd0d103cd8c2be18cdf0bd82a74690b3a'
00:00:08 v #3635 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:08 i #3636 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cliparts/cliparts.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cliparts.html.hangul.md.epub }
00:00:08 v #3637 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:08 d #3638 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/philosophy/philosophy.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/philosophy/philosophy.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:08 d #3639 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cliparts.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/cliparts/cliparts.html.hangul.md.epub; result = 5602 }
00:00:08 i #3640 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cliparts/cliparts.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cliparts.html.hangul.md.pdf }
00:00:08 d #3641 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cliparts.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/cliparts/cliparts.html.hangul.md.pdf; result = 4052 }
00:00:08 i #3642 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cliparts/cliparts.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cliparts.html.hangul.md.html }
00:00:08 v #3643 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:08 d #3644 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cliparts.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/cliparts/cliparts.html.hangul.md.html; result = 10765 }
00:00:08 i #3645 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cliparts/cliparts.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cliparts.html.md.epub }
00:00:08 v #3646 > '7f1799bbda143e7281134173a6158c26693bea3b'
00:00:08 d #3647 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/workflow/vault.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/workflow/vault.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:08 d #3648 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cliparts.html.md.epub; new_path = c:/home/git/vault/dist/data/cliparts/cliparts.html.md.epub; result = 5497 }
00:00:08 i #3649 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cliparts/cliparts.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cliparts.html.md.pdf }
00:00:08 d #3650 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cliparts.html.md.pdf; new_path = c:/home/git/vault/dist/data/cliparts/cliparts.html.md.pdf; result = 6628 }
00:00:08 i #3651 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cliparts/cliparts.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cliparts.html.md.html }
00:00:08 d #3652 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cliparts.html.md.html; new_path = c:/home/git/vault/dist/data/cliparts/cliparts.html.md.html; result = 10614 }
00:00:08 i #3653 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cliparts/cliparts.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cliparts.html.hangul.md }
00:00:08 d #3654 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cliparts.html.hangul.md; new_path = c:/home/git/vault/dist/data/cliparts/cliparts.html.hangul.md; result = 531 }
00:00:08 d #3655 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/clojure/clojure.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/clojure/clojure.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:08 v #3656 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:08 d #3657 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/programming/polyglot.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/programming/polyglot.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:08 v #3658 > '17a6d9d0c45d109ff619ec77bcf456f06ba31cc4'
00:00:08 v #3659 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:08 v #3660 > '604f45424a71a705f768723ab6fed300b025f600'
00:00:08 d #3661 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/compilers/compilers.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/compilers/compilers.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:08 v #3662 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:08 d #3663 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Cherrycute666.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Cherrycute666.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:08 v #3664 > b6dbd0c8e44ee86bac57277c464c2bbfd2eb9533
00:00:08 v #3665 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:08 v #3666 > a50cce7fd0d103cd8c2be18cdf0bd82a74690b3a
00:00:08 i #3667 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/philosophy/philosophy.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\philosophy.mp3.hangul.md.epub }
00:00:08 d #3668 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\philosophy.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/philosophy/philosophy.mp3.hangul.md.epub; result = 5694 }
00:00:08 i #3669 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/philosophy/philosophy.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\philosophy.mp3.hangul.md.pdf }
00:00:08 d #3670 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\philosophy.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/philosophy/philosophy.mp3.hangul.md.pdf; result = 4010 }
00:00:08 i #3671 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/philosophy/philosophy.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\philosophy.mp3.hangul.md.html }
00:00:08 d #3672 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\philosophy.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/philosophy/philosophy.mp3.hangul.md.html; result = 10350 }
00:00:08 i #3673 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/philosophy/philosophy.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\philosophy.mp3.md.epub }
00:00:08 d #3674 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\philosophy.mp3.md.epub; new_path = c:/home/git/vault/dist/data/philosophy/philosophy.mp3.md.epub; result = 5560 }
00:00:08 i #3675 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/philosophy/philosophy.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\philosophy.mp3.md.pdf }
00:00:08 d #3676 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\philosophy.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/philosophy/philosophy.mp3.md.pdf; result = 8020 }
00:00:08 i #3677 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/philosophy/philosophy.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\philosophy.mp3.md.html }
00:00:08 d #3678 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\philosophy.mp3.md.html; new_path = c:/home/git/vault/dist/data/philosophy/philosophy.mp3.md.html; result = 10165 }
00:00:08 i #3679 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/philosophy/philosophy.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\philosophy.mp3.hangul.md }
00:00:08 d #3680 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\philosophy.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/philosophy/philosophy.mp3.hangul.md; result = 425 }
00:00:08 d #3681 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/physics/physics.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/physics/physics.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:08 v #3682 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:08 v #3683 > 'caed1cfb27dd8ad27c8e5bc20c0479b30b30b655'
00:00:08 v #3684 > 7f1799bbda143e7281134173a6158c26693bea3b
00:00:08 i #3685 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.html.hangul.md.epub }
00:00:08 d #3686 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/workflow/vault.html.hangul.md.epub; result = 5536 }
00:00:08 i #3687 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.html.hangul.md.pdf }
00:00:08 d #3688 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/workflow/vault.html.hangul.md.pdf; result = 3958 }
00:00:08 i #3689 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.html.hangul.md.html }
00:00:08 d #3690 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/workflow/vault.html.hangul.md.html; result = 10125 }
00:00:08 i #3691 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.html.md.epub }
00:00:08 d #3692 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.html.md.epub; new_path = c:/home/git/vault/dist/data/workflow/vault.html.md.epub; result = 5458 }
00:00:08 i #3693 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.html.md.pdf }
00:00:08 d #3694 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.html.md.pdf; new_path = c:/home/git/vault/dist/data/workflow/vault.html.md.pdf; result = 6122 }
00:00:08 i #3695 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.html.md.html }
00:00:08 d #3696 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.html.md.html; new_path = c:/home/git/vault/dist/data/workflow/vault.html.md.html; result = 10079 }
00:00:08 i #3697 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.html.hangul.md }
00:00:08 d #3698 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.html.hangul.md; new_path = c:/home/git/vault/dist/data/workflow/vault.html.hangul.md; result = 158 }
00:00:08 v #3699 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:08 d #3700 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/workflow/vault.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/workflow/vault.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:08 d #3701 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/clojure/clojure.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/clojure/clojure.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:08 v #3702 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:08 i #3703 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/polyglot.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.html.hangul.md.epub }
00:00:08 d #3704 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/programming/polyglot.html.hangul.md.epub; result = 6839 }
00:00:08 i #3705 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/polyglot.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.html.hangul.md.pdf }
00:00:08 d #3706 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/programming/polyglot.html.hangul.md.pdf; result = 9466 }
00:00:08 i #3707 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/polyglot.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.html.hangul.md.html }
00:00:08 d #3708 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/programming/polyglot.html.hangul.md.html; result = 19814 }
00:00:08 i #3709 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/polyglot.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.html.md.epub }
00:00:08 d #3710 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.html.md.epub; new_path = c:/home/git/vault/dist/data/programming/polyglot.html.md.epub; result = 6444 }
00:00:08 i #3711 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/polyglot.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.html.md.pdf }
00:00:08 d #3712 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.html.md.pdf; new_path = c:/home/git/vault/dist/data/programming/polyglot.html.md.pdf; result = 13751 }
00:00:08 i #3713 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/polyglot.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.html.md.html }
00:00:08 d #3714 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.html.md.html; new_path = c:/home/git/vault/dist/data/programming/polyglot.html.md.html; result = 17575 }
00:00:08 i #3715 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/polyglot.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.html.hangul.md }
00:00:08 d #3716 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.html.hangul.md; new_path = c:/home/git/vault/dist/data/programming/polyglot.html.hangul.md; result = 7076 }
00:00:08 v #3717 > 17a6d9d0c45d109ff619ec77bcf456f06ba31cc4
00:00:08 d #3718 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/programming/polyglot.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/programming/polyglot.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:08 v #3719 > 604f45424a71a705f768723ab6fed300b025f600
00:00:08 v #3720 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:08 i #3721 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/compilers/compilers.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\compilers.hangul.md.epub }
00:00:08 v #3722 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:08 i #3723 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Cherrycute666.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Cherrycute666.html.hangul.md.epub }
00:00:08 d #3724 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Cherrycute666.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Cherrycute666.html.hangul.md.epub; result = 5568 }
00:00:08 i #3725 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Cherrycute666.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Cherrycute666.html.hangul.md.pdf }
00:00:08 d #3726 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\compilers.hangul.md.epub; new_path = c:/home/git/vault/dist/data/compilers/compilers.hangul.md.epub; result = 7609 }
00:00:08 d #3727 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Cherrycute666.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Cherrycute666.html.hangul.md.pdf; result = 4773 }
00:00:08 i #3728 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/compilers/compilers.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\compilers.hangul.md.pdf }
00:00:08 i #3729 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Cherrycute666.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Cherrycute666.html.hangul.md.html }
00:00:08 d #3730 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\compilers.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/compilers/compilers.hangul.md.pdf; result = 7443 }
00:00:08 d #3731 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Cherrycute666.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Cherrycute666.html.hangul.md.html; result = 11677 }
00:00:08 i #3732 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/compilers/compilers.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\compilers.hangul.md.html }
00:00:08 i #3733 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Cherrycute666.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Cherrycute666.html.md.epub }
00:00:08 d #3734 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\compilers.hangul.md.html; new_path = c:/home/git/vault/dist/data/compilers/compilers.hangul.md.html; result = 22975 }
00:00:08 d #3735 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Cherrycute666.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Cherrycute666.html.md.epub; result = 5495 }
00:00:08 i #3736 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/compilers/compilers.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\compilers.md.epub }
00:00:08 i #3737 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Cherrycute666.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Cherrycute666.html.md.pdf }
00:00:08 d #3738 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\compilers.md.epub; new_path = c:/home/git/vault/dist/data/compilers/compilers.md.epub; result = 7148 }
00:00:08 d #3739 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Cherrycute666.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Cherrycute666.html.md.pdf; result = 4954 }
00:00:08 i #3740 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/compilers/compilers.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\compilers.md.pdf }
00:00:08 i #3741 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Cherrycute666.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Cherrycute666.html.md.html }
00:00:08 d #3742 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\compilers.md.pdf; new_path = c:/home/git/vault/dist/data/compilers/compilers.md.pdf; result = 18611 }
00:00:08 d #3743 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Cherrycute666.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Cherrycute666.html.md.html; result = 11644 }
00:00:08 i #3744 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/compilers/compilers.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\compilers.md.html }
00:00:08 i #3745 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Cherrycute666.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Cherrycute666.html.hangul.md }
00:00:08 d #3746 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Cherrycute666.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Cherrycute666.html.hangul.md; result = 146 }
00:00:08 d #3747 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\compilers.md.html; new_path = c:/home/git/vault/dist/data/compilers/compilers.md.html; result = 20050 }
00:00:08 i #3748 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/compilers/compilers.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\compilers.hangul.md }
00:00:08 d #3749 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\compilers.hangul.md; new_path = c:/home/git/vault/dist/data/compilers/compilers.hangul.md; result = 7807 }
00:00:08 d #3750 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/chloewildd.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/chloewildd.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:08 v #3751 > '7b6d0567ef2c3b3065aedba6666cb581431a0f5d'
00:00:08 d #3752 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/compilers/compilers.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/compilers/compilers.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:08 v #3753 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:08 v #3754 > caed1cfb27dd8ad27c8e5bc20c0479b30b30b655
00:00:08 d #3755 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/physics/physics.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/physics/physics.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:08 v #3756 > '67b9900d52ac2dcff335ad67ffd7f56d6b4f9b01'
00:00:08 v #3757 > 'f238a467d3cdbf24b27bc8955e11fc8be38784f5'
00:00:08 v #3758 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:08 i #3759 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/clojure/clojure.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\clojure.hangul.md.epub }
00:00:08 v #3760 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:08 d #3761 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/programming/polyglot.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/programming/polyglot.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:08 d #3762 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\clojure.hangul.md.epub; new_path = c:/home/git/vault/dist/data/clojure/clojure.hangul.md.epub; result = 6690 }
00:00:08 i #3763 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/clojure/clojure.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\clojure.hangul.md.pdf }
00:00:08 d #3764 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\clojure.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/clojure/clojure.hangul.md.pdf; result = 8671 }
00:00:08 i #3765 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/clojure/clojure.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\clojure.hangul.md.html }
00:00:08 d #3766 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\clojure.hangul.md.html; new_path = c:/home/git/vault/dist/data/clojure/clojure.hangul.md.html; result = 14366 }
00:00:08 i #3767 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/clojure/clojure.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\clojure.md.epub }
00:00:08 d #3768 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\clojure.md.epub; new_path = c:/home/git/vault/dist/data/clojure/clojure.md.epub; result = 6846 }
00:00:08 i #3769 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/clojure/clojure.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\clojure.md.pdf }
00:00:08 d #3770 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\clojure.md.pdf; new_path = c:/home/git/vault/dist/data/clojure/clojure.md.pdf; result = 27567 }
00:00:08 i #3771 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/clojure/clojure.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\clojure.md.html }
00:00:08 d #3772 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\clojure.md.html; new_path = c:/home/git/vault/dist/data/clojure/clojure.md.html; result = 25746 }
00:00:08 i #3773 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/clojure/clojure.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\clojure.hangul.md }
00:00:08 d #3774 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\clojure.hangul.md; new_path = c:/home/git/vault/dist/data/clojure/clojure.hangul.md; result = 3603 }
00:00:08 v #3775 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:08 d #3776 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/workflow/vault.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/workflow/vault.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:08 d #3777 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/community/community.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/community/community.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:08 v #3778 > '25c26fa1ad03412a9ab4e2fea6b2f2f86c3cca3a'
00:00:08 v #3779 > '385359231e187441d5e052bfa7c26b3ad5aa645f'
00:00:08 v #3780 > 7b6d0567ef2c3b3065aedba6666cb581431a0f5d
00:00:08 v #3781 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:08 v #3782 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:08 d #3783 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/compilers/compilers.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/compilers/compilers.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:08 d #3784 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/chloewildd.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/chloewildd.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:08 v #3785 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:08 i #3786 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/physics/physics.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\physics.hangul.md.epub }
00:00:08 d #3787 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\physics.hangul.md.epub; new_path = c:/home/git/vault/dist/data/physics/physics.hangul.md.epub; result = 27593 }
00:00:08 i #3788 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/physics/physics.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\physics.hangul.md.pdf }
00:00:08 d #3789 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\physics.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/physics/physics.hangul.md.pdf; result = 38926 }
00:00:08 i #3790 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/physics/physics.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\physics.hangul.md.html }
00:00:08 d #3791 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\physics.hangul.md.html; new_path = c:/home/git/vault/dist/data/physics/physics.hangul.md.html; result = 147258 }
00:00:08 i #3792 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/physics/physics.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\physics.md.epub }
00:00:08 d #3793 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\physics.md.epub; new_path = c:/home/git/vault/dist/data/physics/physics.md.epub; result = 25466 }
00:00:08 i #3794 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/physics/physics.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\physics.md.pdf }
00:00:08 d #3795 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\physics.md.pdf; new_path = c:/home/git/vault/dist/data/physics/physics.md.pdf; result = 122551 }
00:00:08 i #3796 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/physics/physics.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\physics.md.html }
00:00:08 d #3797 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\physics.md.html; new_path = c:/home/git/vault/dist/data/physics/physics.md.html; result = 132638 }
00:00:08 i #3798 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/physics/physics.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\physics.hangul.md }
00:00:08 d #3799 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\physics.hangul.md; new_path = c:/home/git/vault/dist/data/physics/physics.hangul.md; result = 96075 }
00:00:08 d #3800 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/politics/hanauittang.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/politics/hanauittang.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:08 v #3801 > '15350531c1b6540ade3842d1ffa6cbaf1c0b8763'
00:00:08 v #3802 > f238a467d3cdbf24b27bc8955e11fc8be38784f5
00:00:08 v #3803 > 67b9900d52ac2dcff335ad67ffd7f56d6b4f9b01
00:00:08 v #3804 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:08 d #3805 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/community/community.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/community/community.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:08 v #3806 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:08 i #3807 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/polyglot.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.hangul.md.epub }
00:00:08 d #3808 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.hangul.md.epub; new_path = c:/home/git/vault/dist/data/programming/polyglot.hangul.md.epub; result = 6641 }
00:00:08 i #3809 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/polyglot.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.hangul.md.pdf }
00:00:08 v #3810 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:08 d #3811 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/programming/polyglot.hangul.md.pdf; result = 6839 }
00:00:08 i #3812 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/polyglot.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.hangul.md.html }
00:00:08 i #3813 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.hangul.md.epub }
00:00:08 d #3814 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.hangul.md.html; new_path = c:/home/git/vault/dist/data/programming/polyglot.hangul.md.html; result = 16762 }
00:00:08 d #3815 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.hangul.md.epub; new_path = c:/home/git/vault/dist/data/workflow/vault.hangul.md.epub; result = 5433 }
00:00:08 i #3816 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.hangul.md.pdf }
00:00:08 i #3816 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/polyglot.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.md.epub }
00:00:08 d #3818 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/workflow/vault.hangul.md.pdf; result = 3454 }
00:00:08 d #3819 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.md.epub; new_path = c:/home/git/vault/dist/data/programming/polyglot.md.epub; result = 6626 }
00:00:08 i #3820 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.hangul.md.html }
00:00:08 i #3821 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/polyglot.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.md.pdf }
00:00:08 d #3822 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.hangul.md.html; new_path = c:/home/git/vault/dist/data/workflow/vault.hangul.md.html; result = 9950 }
00:00:08 d #3823 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.md.pdf; new_path = c:/home/git/vault/dist/data/programming/polyglot.md.pdf; result = 19144 }
00:00:08 i #3824 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.md.epub }
00:00:08 i #3825 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/polyglot.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.md.html }
00:00:08 d #3826 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.md.epub; new_path = c:/home/git/vault/dist/data/workflow/vault.md.epub; result = 5407 }
00:00:08 d #3826 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.md.html; new_path = c:/home/git/vault/dist/data/programming/polyglot.md.html; result = 22886 }
00:00:08 i #3828 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/polyglot.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.hangul.md }
00:00:08 i #3829 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.md.pdf }
00:00:08 d #3830 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.hangul.md; new_path = c:/home/git/vault/dist/data/programming/polyglot.hangul.md; result = 3844 }
00:00:08 d #3831 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.md.pdf; new_path = c:/home/git/vault/dist/data/workflow/vault.md.pdf; result = 4526 }
00:00:08 i #3832 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.md.html }
00:00:08 d #3833 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.md.html; new_path = c:/home/git/vault/dist/data/workflow/vault.md.html; result = 9943 }
00:00:08 i #3834 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.hangul.md }
00:00:08 d #3835 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.hangul.md; new_path = c:/home/git/vault/dist/data/workflow/vault.hangul.md; result = 39 }
00:00:08 d #3836 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/programming/powershell.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/programming/powershell.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:08 d #3837 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/workflow/workflow.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/workflow/workflow.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:08 v #3838 > 25c26fa1ad03412a9ab4e2fea6b2f2f86c3cca3a
00:00:08 v #3839 > 385359231e187441d5e052bfa7c26b3ad5aa645f
00:00:08 v #3840 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:08 i #3841 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/chloewildd.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chloewildd.html.hangul.md.epub }
00:00:08 d #3842 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chloewildd.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/chloewildd.html.hangul.md.epub; result = 5567 }
00:00:08 i #3843 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/chloewildd.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chloewildd.html.hangul.md.pdf }
00:00:08 d #3844 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chloewildd.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/chloewildd.html.hangul.md.pdf; result = 4626 }
00:00:08 i #3845 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/chloewildd.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chloewildd.html.hangul.md.html }
00:00:08 d #3846 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chloewildd.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/chloewildd.html.hangul.md.html; result = 11676 }
00:00:08 i #3847 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/chloewildd.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chloewildd.html.md.epub }
00:00:08 d #3848 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chloewildd.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/chloewildd.html.md.epub; result = 5488 }
00:00:08 i #3849 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/chloewildd.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chloewildd.html.md.pdf }
00:00:08 d #3850 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chloewildd.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/chloewildd.html.md.pdf; result = 4998 }
00:00:08 i #3851 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/chloewildd.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chloewildd.html.md.html }
00:00:08 d #3852 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chloewildd.html.md.html; new_path = c:/home/git/vault/dist/data/chat/chloewildd.html.md.html; result = 11636 }
00:00:08 v #3853 > 'e07d15b06c6b6fa86ca180ceca8a26064faca8b2'
00:00:08 i #3854 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/chloewildd.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chloewildd.html.hangul.md }
00:00:08 d #3855 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chloewildd.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/chloewildd.html.hangul.md; result = 146 }
00:00:08 d #3856 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Dakota_Blare.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Dakota_Blare.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:08 v #3857 > 15350531c1b6540ade3842d1ffa6cbaf1c0b8763
00:00:08 v #3858 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:08 i #3859 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/compilers/compilers.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\compilers.pdf.hangul.md.epub }
00:00:08 d #3860 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\compilers.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/compilers/compilers.pdf.hangul.md.epub; result = 5748 }
00:00:08 i #3861 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/compilers/compilers.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\compilers.pdf.hangul.md.pdf }
00:00:08 d #3862 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\compilers.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/compilers/compilers.pdf.hangul.md.pdf; result = 5585 }
00:00:08 i #3863 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/compilers/compilers.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\compilers.pdf.hangul.md.html }
00:00:08 d #3864 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\compilers.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/compilers/compilers.pdf.hangul.md.html; result = 10468 }
00:00:08 i #3865 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/compilers/compilers.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\compilers.pdf.md.epub }
00:00:08 d #3866 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\compilers.pdf.md.epub; new_path = c:/home/git/vault/dist/data/compilers/compilers.pdf.md.epub; result = 5606 }
00:00:08 i #3867 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/compilers/compilers.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\compilers.pdf.md.pdf }
00:00:08 d #3868 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\compilers.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/compilers/compilers.pdf.md.pdf; result = 10977 }
00:00:08 i #3869 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/compilers/compilers.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\compilers.pdf.md.html }
00:00:08 d #3870 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\compilers.pdf.md.html; new_path = c:/home/git/vault/dist/data/compilers/compilers.pdf.md.html; result = 10286 }
00:00:08 i #3871 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/compilers/compilers.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\compilers.pdf.hangul.md }
00:00:08 d #3872 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\compilers.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/compilers/compilers.pdf.hangul.md; result = 476 }
00:00:08 d #3873 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/cryptography/cryptography.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/cryptography/cryptography.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:08 v #3874 > '28de73bf2bd7f24a583576578739461918ed105c'
00:00:08 v #3875 > '92c1cc9e4652398e85a563d1e6b80d0c32a875cf'
00:00:08 v #3876 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:08 i #3877 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/community/community.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\community.hangul.md.epub }
00:00:08 d #3878 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\community.hangul.md.epub; new_path = c:/home/git/vault/dist/data/community/community.hangul.md.epub; result = 12867 }
00:00:08 i #3879 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/community/community.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\community.hangul.md.pdf }
00:00:08 d #3880 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\community.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/community/community.hangul.md.pdf; result = 13134 }
00:00:08 i #3881 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/community/community.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\community.hangul.md.html }
00:00:08 d #3882 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\community.hangul.md.html; new_path = c:/home/git/vault/dist/data/community/community.hangul.md.html; result = 44767 }
00:00:08 i #3883 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/community/community.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\community.md.epub }
00:00:08 v #3884 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:08 v #3885 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:08 d #3886 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\community.md.epub; new_path = c:/home/git/vault/dist/data/community/community.md.epub; result = 11864 }
00:00:08 i #3887 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/community/community.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\community.md.pdf }
00:00:08 d #3888 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\community.md.pdf; new_path = c:/home/git/vault/dist/data/community/community.md.pdf; result = 36091 }
00:00:08 i #3889 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/community/community.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\community.md.html }
00:00:08 d #3890 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/politics/hanauittang.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/politics/hanauittang.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:08 d #3891 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\community.md.html; new_path = c:/home/git/vault/dist/data/community/community.md.html; result = 34745 }
00:00:08 i #3892 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/community/community.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\community.hangul.md }
00:00:08 d #3893 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/programming/powershell.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/programming/powershell.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:08 v #3894 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:08 d #3895 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\community.hangul.md; new_path = c:/home/git/vault/dist/data/community/community.hangul.md; result = 28240 }
00:00:08 d #3896 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/workflow/workflow.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/workflow/workflow.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:08 d #3897 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/community/netiquette_pt-br.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/community/netiquette_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:08 v #3898 > '33241bf308571f30a46d2ef4af47882bd6d76c2c'
00:00:08 v #3899 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:08 d #3900 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Dakota_Blare.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Dakota_Blare.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:08 v #3901 > 'cc93beedc8535df5abf8406510f5aec3aa40d343'
00:00:08 v #3902 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:08 d #3903 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/cryptography/cryptography.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/cryptography/cryptography.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:08 v #3904 > 28de73bf2bd7f24a583576578739461918ed105c
00:00:09 v #3905 > '5c6998de94bbf4d6ccad1953040679ff190118cb'
00:00:09 v #3906 > e07d15b06c6b6fa86ca180ceca8a26064faca8b2
00:00:09 v #3907 > 92c1cc9e4652398e85a563d1e6b80d0c32a875cf
00:00:09 v #3908 > 33241bf308571f30a46d2ef4af47882bd6d76c2c
00:00:09 v #3909 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:09 i #3910 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/powershell.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\powershell.hangul.md.epub }
00:00:09 d #3911 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\powershell.hangul.md.epub; new_path = c:/home/git/vault/dist/data/programming/powershell.hangul.md.epub; result = 5635 }
00:00:09 i #3912 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/powershell.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\powershell.hangul.md.pdf }
00:00:09 v #3913 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:09 d #3914 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\powershell.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/programming/powershell.hangul.md.pdf; result = 4498 }
00:00:09 i #3915 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/powershell.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\powershell.hangul.md.html }
00:00:09 v #3916 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:09 d #3917 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\powershell.hangul.md.html; new_path = c:/home/git/vault/dist/data/programming/powershell.hangul.md.html; result = 10338 }
00:00:09 i #3918 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/powershell.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\powershell.md.epub }
00:00:09 i #3919 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/hanauittang.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hanauittang.hangul.md.epub }
00:00:09 d #3920 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\powershell.md.epub; new_path = c:/home/git/vault/dist/data/programming/powershell.md.epub; result = 5544 }
00:00:09 i #3921 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/powershell.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\powershell.md.pdf }
00:00:09 d #3922 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hanauittang.hangul.md.epub; new_path = c:/home/git/vault/dist/data/politics/hanauittang.hangul.md.epub; result = 185879 }
00:00:09 i #3923 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/hanauittang.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hanauittang.hangul.md.pdf }
00:00:09 d #3924 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\powershell.md.pdf; new_path = c:/home/git/vault/dist/data/programming/powershell.md.pdf; result = 7335 }
00:00:09 i #3925 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/powershell.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\powershell.md.html }
00:00:09 d #3926 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/community/netiquette_pt-br.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/community/netiquette_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:09 d #3927 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hanauittang.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/politics/hanauittang.hangul.md.pdf; result = 231956 }
00:00:09 d #3928 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\powershell.md.html; new_path = c:/home/git/vault/dist/data/programming/powershell.md.html; result = 10258 }
00:00:09 i #3929 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/hanauittang.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hanauittang.hangul.md.html }
00:00:09 i #3930 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/powershell.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\powershell.hangul.md }
00:00:09 v #3931 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:09 d #3932 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\powershell.hangul.md; new_path = c:/home/git/vault/dist/data/programming/powershell.hangul.md; result = 296 }
00:00:09 i #3933 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/workflow.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\workflow.hangul.md.epub }
00:00:09 d #3934 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hanauittang.hangul.md.html; new_path = c:/home/git/vault/dist/data/politics/hanauittang.hangul.md.html; result = 1003874 }
00:00:09 i #3935 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/hanauittang.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hanauittang.md.epub }
00:00:09 d #3936 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/programming/programming.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/programming/programming.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:09 v #3937 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:09 d #3938 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\workflow.hangul.md.epub; new_path = c:/home/git/vault/dist/data/workflow/workflow.hangul.md.epub; result = 42389 }
00:00:09 i #3939 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/workflow.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\workflow.hangul.md.pdf }
00:00:09 d #3940 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hanauittang.md.epub; new_path = c:/home/git/vault/dist/data/politics/hanauittang.md.epub; result = 165955 }
00:00:09 d #3941 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\workflow.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/workflow/workflow.hangul.md.pdf; result = 63919 }
00:00:09 i #3941 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/hanauittang.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hanauittang.md.pdf }
00:00:09 i #3943 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/workflow.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\workflow.hangul.md.html }
00:00:09 i #3944 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Dakota_Blare.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Dakota_Blare.html.hangul.md.epub }
00:00:09 d #3945 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Dakota_Blare.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Dakota_Blare.html.hangul.md.epub; result = 5570 }
00:00:09 d #3946 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\workflow.hangul.md.html; new_path = c:/home/git/vault/dist/data/workflow/workflow.hangul.md.html; result = 189367 }
00:00:09 i #3947 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Dakota_Blare.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Dakota_Blare.html.hangul.md.pdf }
00:00:09 d #3948 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hanauittang.md.pdf; new_path = c:/home/git/vault/dist/data/politics/hanauittang.md.pdf; result = 685702 }
00:00:09 i #3949 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/hanauittang.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hanauittang.md.html }
00:00:09 i #3950 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/workflow.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\workflow.md.epub }
00:00:09 d #3951 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Dakota_Blare.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Dakota_Blare.html.hangul.md.pdf; result = 4677 }
00:00:09 d #3952 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\workflow.md.epub; new_path = c:/home/git/vault/dist/data/workflow/workflow.md.epub; result = 39242 }
00:00:09 i #3953 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Dakota_Blare.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Dakota_Blare.html.hangul.md.html }
00:00:09 i #3954 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/workflow.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\workflow.md.pdf }
00:00:09 d #3955 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Dakota_Blare.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Dakota_Blare.html.hangul.md.html; result = 11681 }
00:00:09 d #3956 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\workflow.md.pdf; new_path = c:/home/git/vault/dist/data/workflow/workflow.md.pdf; result = 170155 }
00:00:09 d #3957 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hanauittang.md.html; new_path = c:/home/git/vault/dist/data/politics/hanauittang.md.html; result = 686673 }
00:00:09 i #3958 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/hanauittang.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hanauittang.hangul.md }
00:00:09 i #3959 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/workflow.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\workflow.md.html }
00:00:09 i #3960 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Dakota_Blare.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Dakota_Blare.html.md.epub }
00:00:09 d #3961 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Dakota_Blare.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Dakota_Blare.html.md.epub; result = 5497 }
00:00:09 i #3962 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Dakota_Blare.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Dakota_Blare.html.md.pdf }
00:00:09 d #3963 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Dakota_Blare.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Dakota_Blare.html.md.pdf; result = 5038 }
00:00:09 d #3964 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\workflow.md.html; new_path = c:/home/git/vault/dist/data/workflow/workflow.md.html; result = 159326 }
00:00:09 i #3965 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Dakota_Blare.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Dakota_Blare.html.md.html }
00:00:09 d #3966 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hanauittang.hangul.md; new_path = c:/home/git/vault/dist/data/politics/hanauittang.hangul.md; result = 869743 }
00:00:09 i #3967 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/workflow.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\workflow.hangul.md }
00:00:09 d #3968 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Dakota_Blare.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Dakota_Blare.html.md.html; result = 11643 }
00:00:09 i #3969 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Dakota_Blare.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Dakota_Blare.html.hangul.md }
00:00:09 d #3970 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Dakota_Blare.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Dakota_Blare.html.hangul.md; result = 150 }
00:00:09 d #3971 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\workflow.hangul.md; new_path = c:/home/git/vault/dist/data/workflow/workflow.hangul.md; result = 142620 }
00:00:09 d #3972 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/politics/politics.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/politics/politics.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:09 d #3973 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/diney_.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/diney_.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:09 d #3974 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/workflow/workflow.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/workflow/workflow.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:09 v #3975 > cc93beedc8535df5abf8406510f5aec3aa40d343
00:00:09 v #3976 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:09 i #3977 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cryptography/cryptography.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cryptography.hangul.md.epub }
00:00:09 d #3978 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cryptography.hangul.md.epub; new_path = c:/home/git/vault/dist/data/cryptography/cryptography.hangul.md.epub; result = 8692 }
00:00:09 i #3979 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cryptography/cryptography.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cryptography.hangul.md.pdf }
00:00:09 d #3980 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cryptography.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/cryptography/cryptography.hangul.md.pdf; result = 15021 }
00:00:09 i #3981 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cryptography/cryptography.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cryptography.hangul.md.html }
00:00:09 d #3982 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cryptography.hangul.md.html; new_path = c:/home/git/vault/dist/data/cryptography/cryptography.hangul.md.html; result = 39050 }
00:00:09 i #3983 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cryptography/cryptography.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cryptography.md.epub }
00:00:09 d #3984 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cryptography.md.epub; new_path = c:/home/git/vault/dist/data/cryptography/cryptography.md.epub; result = 8599 }
00:00:09 i #3985 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cryptography/cryptography.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cryptography.md.pdf }
00:00:09 d #3986 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cryptography.md.pdf; new_path = c:/home/git/vault/dist/data/cryptography/cryptography.md.pdf; result = 28903 }
00:00:09 i #3987 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cryptography/cryptography.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cryptography.md.html }
00:00:09 d #3988 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cryptography.md.html; new_path = c:/home/git/vault/dist/data/cryptography/cryptography.md.html; result = 47170 }
00:00:09 i #3989 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cryptography/cryptography.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cryptography.hangul.md }
00:00:09 d #3990 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cryptography.hangul.md; new_path = c:/home/git/vault/dist/data/cryptography/cryptography.hangul.md; result = 15583 }
00:00:09 d #3991 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/dance/dance.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/dance/dance.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:09 v #3992 > 5c6998de94bbf4d6ccad1953040679ff190118cb
00:00:09 v #3993 > '1860e1828367493856af5299d21caee1ade4df20'
00:00:09 v #3993 > '23c4084024f5966ec8b1bbeebb4e3660e8e9e678'
00:00:09 v #3995 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:09 i #3996 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/community/netiquette_pt-br.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\netiquette_pt-br.hangul.md.epub }
00:00:09 v #3997 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:09 d #3998 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\netiquette_pt-br.hangul.md.epub; new_path = c:/home/git/vault/dist/data/community/netiquette_pt-br.hangul.md.epub; result = 23770 }
00:00:09 v #3999 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:09 i #4000 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/community/netiquette_pt-br.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\netiquette_pt-br.hangul.md.pdf }
00:00:09 d #4001 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\netiquette_pt-br.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/community/netiquette_pt-br.hangul.md.pdf; result = 22472 }
00:00:09 i #4002 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/community/netiquette_pt-br.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\netiquette_pt-br.hangul.md.html }
00:00:09 d #4003 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/politics/politics.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/politics/politics.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:09 v #4004 > '686cf1b026ac94c307ea6730e1b68c4579c8f568'
00:00:09 d #4005 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\netiquette_pt-br.hangul.md.html; new_path = c:/home/git/vault/dist/data/community/netiquette_pt-br.hangul.md.html; result = 85534 }
00:00:09 i #4006 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/community/netiquette_pt-br.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\netiquette_pt-br.md.epub }
00:00:09 d #4007 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/programming/programming.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/programming/programming.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:09 d #4008 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\netiquette_pt-br.md.epub; new_path = c:/home/git/vault/dist/data/community/netiquette_pt-br.md.epub; result = 21832 }
00:00:09 i #4009 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/community/netiquette_pt-br.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\netiquette_pt-br.md.pdf }
00:00:09 d #4010 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\netiquette_pt-br.md.pdf; new_path = c:/home/git/vault/dist/data/community/netiquette_pt-br.md.pdf; result = 56670 }
00:00:09 i #4011 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/community/netiquette_pt-br.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\netiquette_pt-br.md.html }
00:00:09 d #4012 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\netiquette_pt-br.md.html; new_path = c:/home/git/vault/dist/data/community/netiquette_pt-br.md.html; result = 64583 }
00:00:09 i #4013 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/community/netiquette_pt-br.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\netiquette_pt-br.hangul.md }
00:00:09 v #4014 > '064a22fe29f93a179c0a78a90e69c2837a9bef3b'
00:00:09 d #4015 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\netiquette_pt-br.hangul.md; new_path = c:/home/git/vault/dist/data/community/netiquette_pt-br.hangul.md; result = 65402 }
00:00:09 d #4016 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/streaming/streaming.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/streaming/streaming.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:09 v #4017 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:09 v #4018 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:09 d #4019 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/diney_.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/diney_.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:09 d #4020 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/workflow/workflow.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/workflow/workflow.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:09 v #4021 > '59510e8d151bf1ed16e2f80089c7df50221b5565'
00:00:09 v #4022 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:09 v #4023 > 23c4084024f5966ec8b1bbeebb4e3660e8e9e678
00:00:09 d #4024 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/dance/dance.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/dance/dance.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:09 v #4025 > 1860e1828367493856af5299d21caee1ade4df20
00:00:09 v #4026 > '902c3656de437e37a00c83f6be1e981e8a6638bc'
00:00:09 v #4027 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:09 i #4028 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.hangul.md.epub }
00:00:09 v #4029 > 064a22fe29f93a179c0a78a90e69c2837a9bef3b
00:00:09 d #4030 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.hangul.md.epub; new_path = c:/home/git/vault/dist/data/politics/politics.hangul.md.epub; result = 149082 }
00:00:09 i #4031 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.hangul.md.pdf }
00:00:09 v #4032 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:09 d #4033 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/streaming/streaming.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/streaming/streaming.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:09 d #4034 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/politics/politics.hangul.md.pdf; result = 196786 }
00:00:09 i #4035 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.hangul.md.html }
00:00:09 d #4036 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.hangul.md.html; new_path = c:/home/git/vault/dist/data/politics/politics.hangul.md.html; result = 779668 }
00:00:09 i #4037 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.md.epub }
00:00:09 d #4038 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.md.epub; new_path = c:/home/git/vault/dist/data/politics/politics.md.epub; result = 131994 }
00:00:09 i #4039 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.md.pdf }
00:00:09 v #4040 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:09 v #4041 > 686cf1b026ac94c307ea6730e1b68c4579c8f568
00:00:09 d #4042 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.md.pdf; new_path = c:/home/git/vault/dist/data/politics/politics.md.pdf; result = 555188 }
00:00:09 i #4043 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.md.html }
00:00:09 i #4044 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/programming.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\programming.hangul.md.epub }
00:00:09 d #4045 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\programming.hangul.md.epub; new_path = c:/home/git/vault/dist/data/programming/programming.hangul.md.epub; result = 12841 }
00:00:09 d #4046 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.md.html; new_path = c:/home/git/vault/dist/data/politics/politics.md.html; result = 535078 }
00:00:09 i #4047 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/programming.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\programming.hangul.md.pdf }
00:00:09 i #4048 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.hangul.md }
00:00:09 d #4049 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\programming.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/programming/programming.hangul.md.pdf; result = 19041 }
00:00:09 i #4050 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/programming.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\programming.hangul.md.html }
00:00:09 d #4051 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\programming.hangul.md.html; new_path = c:/home/git/vault/dist/data/programming/programming.hangul.md.html; result = 49405 }
00:00:09 i #4052 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/programming.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\programming.md.epub }
00:00:09 d #4053 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.hangul.md; new_path = c:/home/git/vault/dist/data/politics/politics.hangul.md; result = 670043 }
00:00:09 d #4054 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\programming.md.epub; new_path = c:/home/git/vault/dist/data/programming/programming.md.epub; result = 11660 }
00:00:09 i #4055 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/programming.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\programming.md.pdf }
00:00:09 v #4056 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:09 d #4057 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\programming.md.pdf; new_path = c:/home/git/vault/dist/data/programming/programming.md.pdf; result = 45782 }
00:00:09 i #4058 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/programming.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\programming.md.html }
00:00:09 d #4059 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/politics/politics.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/politics/politics.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:09 d #4060 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\programming.md.html; new_path = c:/home/git/vault/dist/data/programming/programming.md.html; result = 39515 }
00:00:09 i #4061 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/programming.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\programming.hangul.md }
00:00:09 i #4062 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/workflow.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\workflow.mp3.hangul.md.epub }
00:00:09 d #4063 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\programming.hangul.md; new_path = c:/home/git/vault/dist/data/programming/programming.hangul.md; result = 27401 }
00:00:09 v #4064 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:09 d #4065 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\workflow.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/workflow/workflow.mp3.hangul.md.epub; result = 5697 }
00:00:09 i #4066 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/workflow.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\workflow.mp3.hangul.md.pdf }
00:00:09 d #4067 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\workflow.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/workflow/workflow.mp3.hangul.md.pdf; result = 3988 }
00:00:09 i #4068 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/workflow.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\workflow.mp3.hangul.md.html }
00:00:09 d #4069 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\workflow.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/workflow/workflow.mp3.hangul.md.html; result = 10327 }
00:00:09 i #4070 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/workflow.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\workflow.mp3.md.epub }
00:00:09 i #4071 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/diney_.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\diney_.html.hangul.md.epub }
00:00:09 d #4072 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\diney_.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/diney_.html.hangul.md.epub; result = 5563 }
00:00:09 d #4073 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/programming/programming.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/programming/programming.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:09 i #4074 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/diney_.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\diney_.html.hangul.md.pdf }
00:00:09 d #4075 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\workflow.mp3.md.epub; new_path = c:/home/git/vault/dist/data/workflow/workflow.mp3.md.epub; result = 5557 }
00:00:09 i #4076 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/workflow.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\workflow.mp3.md.pdf }
00:00:09 d #4077 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\diney_.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/diney_.html.hangul.md.pdf; result = 4672 }
00:00:09 d #4078 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\workflow.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/workflow/workflow.mp3.md.pdf; result = 7796 }
00:00:09 i #4079 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/diney_.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\diney_.html.hangul.md.html }
00:00:09 i #4080 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/workflow.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\workflow.mp3.md.html }
00:00:09 d #4081 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\diney_.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/diney_.html.hangul.md.html; result = 11672 }
00:00:09 i #4082 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/diney_.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\diney_.html.md.epub }
00:00:09 d #4083 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\workflow.mp3.md.html; new_path = c:/home/git/vault/dist/data/workflow/workflow.mp3.md.html; result = 10142 }
00:00:09 d #4084 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\diney_.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/diney_.html.md.epub; result = 5490 }
00:00:09 i #4085 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/workflow.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\workflow.mp3.hangul.md }
00:00:09 i #4086 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/diney_.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\diney_.html.md.pdf }
00:00:09 d #4087 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\workflow.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/workflow/workflow.mp3.hangul.md; result = 402 }
00:00:09 d #4088 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\diney_.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/diney_.html.md.pdf; result = 4880 }
00:00:09 i #4089 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/diney_.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\diney_.html.md.html }
00:00:09 d #4090 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\diney_.html.md.html; new_path = c:/home/git/vault/dist/data/chat/diney_.html.md.html; result = 11637 }
00:00:09 i #4091 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/diney_.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\diney_.html.hangul.md }
00:00:09 d #4092 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\diney_.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/diney_.html.hangul.md; result = 141 }
00:00:09 d #4093 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/writing/writing.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/writing/writing.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:09 d #4094 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/EffyTudor.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/EffyTudor.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:09 v #4095 > 59510e8d151bf1ed16e2f80089c7df50221b5565
00:00:09 v #4096 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:09 i #4097 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dance/dance.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dance.hangul.md.epub }
00:00:09 d #4098 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dance.hangul.md.epub; new_path = c:/home/git/vault/dist/data/dance/dance.hangul.md.epub; result = 15451 }
00:00:09 i #4099 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dance/dance.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dance.hangul.md.pdf }
00:00:09 d #4100 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dance.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/dance/dance.hangul.md.pdf; result = 15237 }
00:00:09 i #4101 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dance/dance.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dance.hangul.md.html }
00:00:09 d #4102 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dance.hangul.md.html; new_path = c:/home/git/vault/dist/data/dance/dance.hangul.md.html; result = 57491 }
00:00:09 i #4103 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dance/dance.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dance.md.epub }
00:00:09 d #4104 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dance.md.epub; new_path = c:/home/git/vault/dist/data/dance/dance.md.epub; result = 14054 }
00:00:09 i #4105 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dance/dance.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dance.md.pdf }
00:00:09 d #4106 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dance.md.pdf; new_path = c:/home/git/vault/dist/data/dance/dance.md.pdf; result = 43868 }
00:00:09 i #4107 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dance/dance.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dance.md.html }
00:00:09 v #4108 > 902c3656de437e37a00c83f6be1e981e8a6638bc
00:00:09 v #4109 > 'f0caa36f833b2e05a7943dddc61fb7650928f4e5'
00:00:09 d #4110 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dance.md.html; new_path = c:/home/git/vault/dist/data/dance/dance.md.html; result = 43482 }
00:00:09 i #4111 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dance/dance.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dance.hangul.md }
00:00:09 d #4112 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dance.hangul.md; new_path = c:/home/git/vault/dist/data/dance/dance.hangul.md; result = 40035 }
00:00:09 v #4113 > '6dda630b53f346256f4dc3739236972a6374b3e7'
00:00:09 d #4114 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/writing/writing.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/writing/writing.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:09 v #4115 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:09 v #4116 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:09 i #4117 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/streaming/streaming.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\streaming.hangul.md.epub }
00:00:09 d #4118 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\streaming.hangul.md.epub; new_path = c:/home/git/vault/dist/data/streaming/streaming.hangul.md.epub; result = 5384 }
00:00:09 i #4119 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/streaming/streaming.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\streaming.hangul.md.pdf }
00:00:09 v #4120 > 'a1f263813735775e0636a8b7a19d85259cbbbc8f'
00:00:09 d #4121 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/politics/politics.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/politics/politics.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:09 v #4122 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:09 d #4123 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\streaming.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/streaming/streaming.hangul.md.pdf; result = 2393 }
00:00:09 i #4124 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/streaming/streaming.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\streaming.hangul.md.html }
00:00:09 d #4125 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\streaming.hangul.md.html; new_path = c:/home/git/vault/dist/data/streaming/streaming.hangul.md.html; result = 9930 }
00:00:09 i #4126 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/streaming/streaming.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\streaming.md.epub }
00:00:09 d #4127 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\streaming.md.epub; new_path = c:/home/git/vault/dist/data/streaming/streaming.md.epub; result = 5384 }
00:00:09 i #4128 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/streaming/streaming.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\streaming.md.pdf }
00:00:09 d #4129 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\streaming.md.pdf; new_path = c:/home/git/vault/dist/data/streaming/streaming.md.pdf; result = 2394 }
00:00:09 d #4130 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/programming/programming.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/programming/programming.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:09 i #4131 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/streaming/streaming.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\streaming.md.html }
00:00:09 d #4132 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\streaming.md.html; new_path = c:/home/git/vault/dist/data/streaming/streaming.md.html; result = 9930 }
00:00:09 i #4133 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/streaming/streaming.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\streaming.hangul.md }
00:00:09 d #4134 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\streaming.hangul.md; new_path = c:/home/git/vault/dist/data/streaming/streaming.hangul.md; result = 22 }
00:00:09 d #4135 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/tarot/tarot.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/tarot/tarot.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:09 v #4136 > '695e1bd2568fc3ec226704fc887261fa878c5df7'
00:00:09 v #4137 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:09 d #4138 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/writing/writing.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/writing/writing.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:09 v #4139 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:09 d #4140 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/EffyTudor.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/EffyTudor.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:09 v #4141 > '18f02f65ac00e3313a7248eff4d1f1ba41a1ee08'
00:00:09 v #4142 > f0caa36f833b2e05a7943dddc61fb7650928f4e5
00:00:09 v #4143 > 6dda630b53f346256f4dc3739236972a6374b3e7
00:00:09 v #4144 > 'b92c23361ea8f27306695fd0a374f33164c2d7b9'
00:00:09 v #4145 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:09 v #4146 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:09 d #4147 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/writing/writing.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/writing/writing.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:09 v #4148 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:09 i #4149 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/programming.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\programming.mp3.hangul.md.epub }
00:00:09 i #4150 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.mp3.hangul.md.epub }
00:00:09 v #4151 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:09 d #4152 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/politics/politics.mp3.hangul.md.epub; result = 5704 }
00:00:09 d #4153 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\programming.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/programming/programming.mp3.hangul.md.epub; result = 7205 }
00:00:09 i #4154 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.mp3.hangul.md.pdf }
00:00:09 i #4155 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/programming.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\programming.mp3.hangul.md.pdf }
00:00:09 d #4156 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/politics/politics.mp3.hangul.md.pdf; result = 4040 }
00:00:09 d #4157 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\programming.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/programming/programming.mp3.hangul.md.pdf; result = 5408 }
00:00:09 i #4158 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.mp3.hangul.md.html }
00:00:09 i #4159 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/programming.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\programming.mp3.hangul.md.html }
00:00:09 d #4160 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/politics/politics.mp3.hangul.md.html; result = 10371 }
00:00:09 d #4161 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/tarot/tarot.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/tarot/tarot.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:09 d #4162 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\programming.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/programming/programming.mp3.hangul.md.html; result = 18962 }
00:00:09 i #4163 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.mp3.md.epub }
00:00:09 i #4164 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/programming.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\programming.mp3.md.epub }
00:00:09 d #4165 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\programming.mp3.md.epub; new_path = c:/home/git/vault/dist/data/programming/programming.mp3.md.epub; result = 6701 }
00:00:09 d #4166 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.mp3.md.epub; new_path = c:/home/git/vault/dist/data/politics/politics.mp3.md.epub; result = 5565 }
00:00:09 i #4167 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/programming.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\programming.mp3.md.pdf }
00:00:09 i #4167 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.mp3.md.pdf }
00:00:09 d #4169 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/politics/politics.mp3.md.pdf; result = 8045 }
00:00:09 d #4170 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\programming.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/programming/programming.mp3.md.pdf; result = 12455 }
00:00:09 i #4171 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.mp3.md.html }
00:00:09 i #4172 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/programming.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\programming.mp3.md.html }
00:00:09 d #4173 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\programming.mp3.md.html; new_path = c:/home/git/vault/dist/data/programming/programming.mp3.md.html; result = 15388 }
00:00:09 d #4174 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.mp3.md.html; new_path = c:/home/git/vault/dist/data/politics/politics.mp3.md.html; result = 10178 }
00:00:09 i #4175 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/programming.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\programming.mp3.hangul.md }
00:00:09 i #4176 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.mp3.hangul.md }
00:00:09 d #4177 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/politics/politics.mp3.hangul.md; result = 445 }
00:00:09 d #4178 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\programming.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/programming/programming.mp3.hangul.md; result = 8203 }
00:00:09 d #4179 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/politics/politics.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/politics/politics.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:09 d #4180 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/programming/rust.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/programming/rust.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:09 v #4181 > a1f263813735775e0636a8b7a19d85259cbbbc8f
00:00:09 v #4182 > 695e1bd2568fc3ec226704fc887261fa878c5df7
00:00:09 v #4183 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:09 i #4184 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/writing/writing.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\writing.html.hangul.md.epub }
00:00:09 d #4185 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\writing.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/writing/writing.html.hangul.md.epub; result = 5533 }
00:00:09 i #4186 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/writing/writing.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\writing.html.hangul.md.pdf }
00:00:09 d #4187 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\writing.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/writing/writing.html.hangul.md.pdf; result = 3980 }
00:00:09 i #4188 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/writing/writing.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\writing.html.hangul.md.html }
00:00:09 d #4189 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\writing.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/writing/writing.html.hangul.md.html; result = 10310 }
00:00:09 i #4190 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/writing/writing.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\writing.html.md.epub }
00:00:09 d #4191 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\writing.html.md.epub; new_path = c:/home/git/vault/dist/data/writing/writing.html.md.epub; result = 5459 }
00:00:09 i #4192 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/writing/writing.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\writing.html.md.pdf }
00:00:09 d #4193 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\writing.html.md.pdf; new_path = c:/home/git/vault/dist/data/writing/writing.html.md.pdf; result = 6044 }
00:00:09 i #4194 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/writing/writing.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\writing.html.md.html }
00:00:09 d #4195 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\writing.html.md.html; new_path = c:/home/git/vault/dist/data/writing/writing.html.md.html; result = 10241 }
00:00:09 i #4196 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/writing/writing.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\writing.html.hangul.md }
00:00:09 d #4197 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\writing.html.hangul.md; new_path = c:/home/git/vault/dist/data/writing/writing.html.hangul.md; result = 254 }
00:00:09 d #4198 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/reddit/reddit.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/reddit/reddit.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:09 v #4199 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:09 i #4200 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/EffyTudor.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\EffyTudor.html.hangul.md.epub }
00:00:09 d #4201 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\EffyTudor.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/EffyTudor.html.hangul.md.epub; result = 5563 }
00:00:09 i #4202 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/EffyTudor.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\EffyTudor.html.hangul.md.pdf }
00:00:09 d #4203 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\EffyTudor.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/EffyTudor.html.hangul.md.pdf; result = 4626 }
00:00:09 i #4204 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/EffyTudor.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\EffyTudor.html.hangul.md.html }
00:00:09 d #4205 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\EffyTudor.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/EffyTudor.html.hangul.md.html; result = 11677 }
00:00:09 i #4206 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/EffyTudor.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\EffyTudor.html.md.epub }
00:00:09 d #4207 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\EffyTudor.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/EffyTudor.html.md.epub; result = 5493 }
00:00:09 i #4208 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/EffyTudor.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\EffyTudor.html.md.pdf }
00:00:09 d #4209 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\EffyTudor.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/EffyTudor.html.md.pdf; result = 4965 }
00:00:09 i #4210 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/EffyTudor.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\EffyTudor.html.md.html }
00:00:09 d #4211 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\EffyTudor.html.md.html; new_path = c:/home/git/vault/dist/data/chat/EffyTudor.html.md.html; result = 11640 }
00:00:09 i #4212 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/EffyTudor.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\EffyTudor.html.hangul.md }
00:00:09 d #4213 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\EffyTudor.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/EffyTudor.html.hangul.md; result = 146 }
00:00:09 d #4214 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Fairy_Sweet.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Fairy_Sweet.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:09 v #4215 > 18f02f65ac00e3313a7248eff4d1f1ba41a1ee08
00:00:09 v #4216 > b92c23361ea8f27306695fd0a374f33164c2d7b9
00:00:09 v #4217 > '897270ba23b72d3d513ff0d09368a70b0104016e'
00:00:09 v #4218 > 'e227bef891dcfad0b8ab5951285b9902c2df57bf'
00:00:09 v #4219 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:09 v #4219 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:09 i #4221 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tarot/tarot.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tarot.hangul.md.epub }
00:00:09 i #4222 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/writing/writing.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\writing.hangul.md.epub }
00:00:09 v #4223 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:09 d #4224 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tarot.hangul.md.epub; new_path = c:/home/git/vault/dist/data/tarot/tarot.hangul.md.epub; result = 9358 }
00:00:09 d #4225 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\writing.hangul.md.epub; new_path = c:/home/git/vault/dist/data/writing/writing.hangul.md.epub; result = 6409 }
00:00:09 i #4226 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tarot/tarot.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tarot.hangul.md.pdf }
00:00:09 i #4227 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/writing/writing.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\writing.hangul.md.pdf }
00:00:09 d #4228 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\writing.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/writing/writing.hangul.md.pdf; result = 5167 }
00:00:09 d #4229 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tarot.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/tarot/tarot.hangul.md.pdf; result = 8973 }
00:00:09 i #4230 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/writing/writing.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\writing.hangul.md.html }
00:00:09 d #4231 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/politics/politics.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/politics/politics.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:09 i #4232 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tarot/tarot.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tarot.hangul.md.html }
00:00:09 d #4233 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tarot.hangul.md.html; new_path = c:/home/git/vault/dist/data/tarot/tarot.hangul.md.html; result = 28941 }
00:00:09 i #4234 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tarot/tarot.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tarot.md.epub }
00:00:09 d #4234 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\writing.hangul.md.html; new_path = c:/home/git/vault/dist/data/writing/writing.hangul.md.html; result = 12384 }
00:00:09 i #4236 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/writing/writing.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\writing.md.epub }
00:00:09 d #4237 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tarot.md.epub; new_path = c:/home/git/vault/dist/data/tarot/tarot.md.epub; result = 8601 }
00:00:09 d #4238 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\writing.md.epub; new_path = c:/home/git/vault/dist/data/writing/writing.md.epub; result = 6116 }
00:00:09 i #4239 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tarot/tarot.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tarot.md.pdf }
00:00:09 i #4240 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/writing/writing.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\writing.md.pdf }
00:00:09 d #4241 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tarot.md.pdf; new_path = c:/home/git/vault/dist/data/tarot/tarot.md.pdf; result = 24161 }
00:00:09 d #4242 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\writing.md.pdf; new_path = c:/home/git/vault/dist/data/writing/writing.md.pdf; result = 14650 }
00:00:09 i #4243 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tarot/tarot.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tarot.md.html }
00:00:09 i #4244 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/writing/writing.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\writing.md.html }
00:00:09 d #4245 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tarot.md.html; new_path = c:/home/git/vault/dist/data/tarot/tarot.md.html; result = 23831 }
00:00:09 d #4246 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\writing.md.html; new_path = c:/home/git/vault/dist/data/writing/writing.md.html; result = 11538 }
00:00:09 i #4247 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tarot/tarot.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tarot.hangul.md }
00:00:09 i #4248 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/writing/writing.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\writing.hangul.md }
00:00:09 d #4249 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tarot.hangul.md; new_path = c:/home/git/vault/dist/data/tarot/tarot.hangul.md; result = 13792 }
00:00:09 d #4250 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\writing.hangul.md; new_path = c:/home/git/vault/dist/data/writing/writing.hangul.md; result = 2298 }
00:00:09 d #4251 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/README.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/README.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:09 v #4252 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:09 d #4253 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/tarot/tarot.png.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/tarot/tarot.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:09 d #4254 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/programming/rust.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/programming/rust.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:09 v #4255 > 'f47c94890517de570ba3f3c2a65cd85a7c7c5d5d'
00:00:09 v #4256 > '19608cf3c57a331f782ac1644d62a24aa6647ed9'
00:00:09 v #4257 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:09 d #4258 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/reddit/reddit.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/reddit/reddit.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:09 v #4259 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:09 d #4260 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:09 v #4261 > 897270ba23b72d3d513ff0d09368a70b0104016e
00:00:09 v #4262 > e227bef891dcfad0b8ab5951285b9902c2df57bf
00:00:09 v #4263 > '41bfc888bf58bff06904fa5ae4c5678f3363965d'
00:00:09 v #4264 > '2d97fefeab8e7ffa5f55735db347b2e66256a5ab'
00:00:09 v #4265 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:09 i #4266 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.pdf.hangul.md.epub }
00:00:09 d #4267 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/politics/politics.pdf.hangul.md.epub; result = 6288 }
00:00:09 i #4268 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.pdf.hangul.md.pdf }
00:00:09 d #4269 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/politics/politics.pdf.hangul.md.pdf; result = 6161 }
00:00:09 v #4270 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:09 i #4271 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.pdf.hangul.md.html }
00:00:09 d #4272 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/politics/politics.pdf.hangul.md.html; result = 15841 }
00:00:09 i #4273 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.pdf.md.epub }
00:00:09 i #4274 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/rust.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rust.hangul.md.epub }
00:00:09 d #4275 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.pdf.md.epub; new_path = c:/home/git/vault/dist/data/politics/politics.pdf.md.epub; result = 6009 }
00:00:09 i #4276 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.pdf.md.pdf }
00:00:09 d #4277 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rust.hangul.md.epub; new_path = c:/home/git/vault/dist/data/programming/rust.hangul.md.epub; result = 38622 }
00:00:09 i #4278 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/rust.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rust.hangul.md.pdf }
00:00:09 d #4279 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/politics/politics.pdf.md.pdf; result = 11044 }
00:00:09 i #4280 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.pdf.md.html }
00:00:09 d #4281 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rust.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/programming/rust.hangul.md.pdf; result = 64002 }
00:00:09 i #4282 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/rust.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rust.hangul.md.html }
00:00:09 d #4283 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.pdf.md.html; new_path = c:/home/git/vault/dist/data/politics/politics.pdf.md.html; result = 13952 }
00:00:09 v #4284 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:09 i #4285 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.pdf.hangul.md }
00:00:09 d #4286 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/politics/politics.pdf.hangul.md; result = 4984 }
00:00:09 d #4287 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rust.hangul.md.html; new_path = c:/home/git/vault/dist/data/programming/rust.hangul.md.html; result = 212516 }
00:00:09 i #4288 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/rust.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rust.md.epub }
00:00:09 d #4289 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/README.md"]; options = { command = git hash-object "c:/home/git/vault/dist/README.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:09 v #4290 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:09 d #4291 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/programming/systems.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/programming/systems.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:09 d #4292 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/tarot/tarot.png.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/tarot/tarot.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:09 d #4293 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rust.md.epub; new_path = c:/home/git/vault/dist/data/programming/rust.md.epub; result = 36741 }
00:00:09 i #4294 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/rust.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rust.md.pdf }
00:00:09 d #4295 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rust.md.pdf; new_path = c:/home/git/vault/dist/data/programming/rust.md.pdf; result = 202003 }
00:00:09 i #4296 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/rust.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rust.md.html }
00:00:09 d #4297 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rust.md.html; new_path = c:/home/git/vault/dist/data/programming/rust.md.html; result = 252122 }
00:00:09 i #4298 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/rust.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rust.hangul.md }
00:00:09 d #4299 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rust.hangul.md; new_path = c:/home/git/vault/dist/data/programming/rust.hangul.md; result = 150631 }
00:00:09 d #4300 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/programming/rust.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/programming/rust.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:10 v #4301 > f47c94890517de570ba3f3c2a65cd85a7c7c5d5d
00:00:10 v #4302 > 19608cf3c57a331f782ac1644d62a24aa6647ed9
00:00:10 v #4303 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:10 i #4304 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/reddit/reddit.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\reddit.html.hangul.md.epub }
00:00:10 d #4305 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\reddit.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/reddit/reddit.html.hangul.md.epub; result = 5504 }
00:00:10 i #4306 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/reddit/reddit.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\reddit.html.hangul.md.pdf }
00:00:10 v #4307 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:10 d #4308 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\reddit.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/reddit/reddit.html.hangul.md.pdf; result = 3752 }
00:00:10 i #4309 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/reddit/reddit.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\reddit.html.hangul.md.html }
00:00:10 d #4310 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\reddit.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/reddit/reddit.html.hangul.md.html; result = 10083 }
00:00:10 i #4311 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/reddit/reddit.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\reddit.html.md.epub }
00:00:10 d #4312 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\reddit.html.md.epub; new_path = c:/home/git/vault/dist/data/reddit/reddit.html.md.epub; result = 5440 }
00:00:10 i #4313 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/reddit/reddit.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\reddit.html.md.pdf }
00:00:10 i #4314 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Fairy_Sweet.html.hangul.md.epub }
00:00:10 d #4315 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\reddit.html.md.pdf; new_path = c:/home/git/vault/dist/data/reddit/reddit.html.md.pdf; result = 5922 }
00:00:10 i #4316 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/reddit/reddit.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\reddit.html.md.html }
00:00:10 d #4317 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Fairy_Sweet.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.hangul.md.epub; result = 5564 }
00:00:10 i #4318 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Fairy_Sweet.html.hangul.md.pdf }
00:00:10 d #4319 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\reddit.html.md.html; new_path = c:/home/git/vault/dist/data/reddit/reddit.html.md.html; result = 10055 }
00:00:10 i #4320 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/reddit/reddit.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\reddit.html.hangul.md }
00:00:10 d #4321 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Fairy_Sweet.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.hangul.md.pdf; result = 4674 }
00:00:10 i #4322 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Fairy_Sweet.html.hangul.md.html }
00:00:10 d #4323 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\reddit.html.hangul.md; new_path = c:/home/git/vault/dist/data/reddit/reddit.html.hangul.md; result = 116 }
00:00:10 d #4324 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Fairy_Sweet.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.hangul.md.html; result = 11681 }
00:00:10 i #4325 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Fairy_Sweet.html.md.epub }
00:00:10 d #4326 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Fairy_Sweet.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.md.epub; result = 5495 }
00:00:10 i #4327 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Fairy_Sweet.html.md.pdf }
00:00:10 d #4328 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Fairy_Sweet.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.md.pdf; result = 4994 }
00:00:10 d #4329 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/reddit/reddit.i574n.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/reddit/reddit.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:10 i #4330 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Fairy_Sweet.html.md.html }
00:00:10 d #4331 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Fairy_Sweet.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.md.html; result = 11642 }
00:00:10 i #4332 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Fairy_Sweet.html.hangul.md }
00:00:10 d #4333 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Fairy_Sweet.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.hangul.md; result = 150 }
00:00:10 d #4334 runtime.execute_with_options / { file_name = crowbook; arguments = ["--verbose", "--to", "epub", "--single", "c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md", "--output", "c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md.epub", "--set", "epub.version", "3", "html.css.add", "'  body { color: #e8e6e3; background-color: #202324; }  a { color: #989693; }  '"]; options = { command = crowbook --verbose --to epub --single "c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md" --output "c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md.epub" --set epub.version 3 html.css.add \"'  body { color: #e8e6e3; background-color: #202324; }  a { color: #989693; }  '\" rendering.num_depth 6 rendering.highlight.theme \"Solarized (dark)\"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:10 v #4335 ! CROWBOOK 0.17.0
00:00:10 v #4336 > 41bfc888bf58bff06904fa5ae4c5678f3363965d
00:00:10 v #4337 > '4c062bf0a367b772b3534f98c696ebafc33a1150'
00:00:10 v #4338 > 2d97fefeab8e7ffa5f55735db347b2e66256a5ab
00:00:10 v #4339 > '434c960bdfe32a4a92597d61bcc65b77abc6ba1b'
00:00:10 v #4340 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:10 v #4341 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:10 i #4342 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/README.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\README.hangul.md.epub }
00:00:10 i #4343 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tarot/tarot.png.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tarot.png.hangul.md.epub }
00:00:10 v #4344 ! 12:14:45 [ERROR] crowbook::book: Inline YAML block could not set String("치틀리") to String("우 리브루 다 이노센시아"): Error converting BookOption: unrecognized key '치틀리'
00:00:10 v #4345 ! 12:14:45 [DEBUG] (1) crowbook::book: Attempting to generate epub...
00:00:10 d #4346 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tarot.png.hangul.md.epub; new_path = c:/home/git/vault/dist/data/tarot/tarot.png.hangul.md.epub; result = 5607 }
00:00:10 d #4346 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\README.hangul.md.epub; new_path = c:/home/git/vault/dist/README.hangul.md.epub; result = 6994 }
00:00:10 i #4348 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/README.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\README.hangul.md.pdf }
00:00:10 i #4349 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tarot/tarot.png.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tarot.png.hangul.md.pdf }
00:00:10 v #4350 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:10 d #4351 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\README.hangul.md.pdf; new_path = c:/home/git/vault/dist/README.hangul.md.pdf; result = 8628 }
00:00:10 d #4352 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tarot.png.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/tarot/tarot.png.hangul.md.pdf; result = 2203 }
00:00:10 i #4353 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/README.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\README.hangul.md.html }
00:00:10 i #4354 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tarot/tarot.png.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tarot.png.hangul.md.html }
00:00:10 d #4355 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\README.hangul.md.html; new_path = c:/home/git/vault/dist/README.hangul.md.html; result = 16769 }
00:00:10 d #4356 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tarot.png.hangul.md.html; new_path = c:/home/git/vault/dist/data/tarot/tarot.png.hangul.md.html; result = 10198 }
00:00:10 d #4357 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/programming/systems.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/programming/systems.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:10 i #4358 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tarot/tarot.png.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tarot.png.md.epub }
00:00:10 i #4359 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/README.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\README.md.epub }
00:00:10 v #4360 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:10 d #4361 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tarot.png.md.epub; new_path = c:/home/git/vault/dist/data/tarot/tarot.png.md.epub; result = 5494 }
00:00:10 d #4362 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\README.md.epub; new_path = c:/home/git/vault/dist/README.md.epub; result = 6759 }
00:00:10 i #4363 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tarot/tarot.png.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tarot.png.md.pdf }
00:00:10 i #4364 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/README.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\README.md.pdf }
00:00:10 d #4365 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tarot.png.md.pdf; new_path = c:/home/git/vault/dist/data/tarot/tarot.png.md.pdf; result = 2205 }
00:00:10 i #4366 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tarot/tarot.png.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tarot.png.md.html }
00:00:10 d #4367 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\README.md.pdf; new_path = c:/home/git/vault/dist/README.md.pdf; result = 13802 }
00:00:10 i #4368 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/README.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\README.md.html }
00:00:10 d #4369 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tarot.png.md.html; new_path = c:/home/git/vault/dist/data/tarot/tarot.png.md.html; result = 10083 }
00:00:10 d #4370 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/programming/rust.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/programming/rust.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:10 i #4371 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tarot/tarot.png.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tarot.png.hangul.md }
00:00:10 d #4372 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\README.md.html; new_path = c:/home/git/vault/dist/README.md.html; result = 16583 }
00:00:10 d #4373 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tarot.png.hangul.md; new_path = c:/home/git/vault/dist/data/tarot/tarot.png.hangul.md; result = 259 }
00:00:10 i #4374 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/README.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\README.hangul.md }
00:00:10 d #4375 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\README.hangul.md; new_path = c:/home/git/vault/dist/README.hangul.md; result = 3850 }
00:00:10 d #4376 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/tech/devilopment_pt-br.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/tech/devilopment_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:10 d #4377 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/psychology/inner-inferno_pt-br.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/psychology/inner-inferno_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:10 v #4378 ! 12:14:45 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #콘테우두 or #콘테우두.md
00:00:10 v #4379 ! 12:14:45 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #인트로두상-프레젠사-이-세르 or #인트로두상-프레젠사-이-세르.md
00:00:10 v #4380 ! 12:14:45 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #파르치-이-이덴치다지 or #파르치-이-이덴치다지.md
00:00:10 v #4381 ! 12:14:45 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #1-이우-소-코녜시두 or #1-이우-소-코녜시두.md
00:00:10 v #4382 ! 12:14:45 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #2-메모리아 or #2-메모리아.md
00:00:10 v #4383 ! 12:14:45 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #3-아-베르다지-두-세르 or #3-아-베르다지-두-세르.md
00:00:10 v #4384 ! 12:14:45 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #4-헤콘실리아상 or #4-헤콘실리아상.md
00:00:10 v #4385 ! 12:14:45 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #파르치-이-이노센시아 or #파르치-이-이노센시아.md
00:00:10 v #4386 ! 12:14:45 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #5-알렝-두-페카두 or #5-알렝-두-페카두.md
00:00:10 v #4387 ! 12:14:45 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #6-웅-문두-헤노바두 or #6-웅-문두-헤노바두.md
00:00:10 v #4388 ! 12:14:45 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #7-멘치-베르다데이라 or #7-멘치-베르다데이라.md
00:00:10 v #4389 ! 12:14:45 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #이필로구 or #이필로구.md
00:00:10 v #4390 > '95f0e6ecaba1080da86604a202d4376c02c82aa3'
00:00:10 v #4391 ! 12:14:45 [DEBUG] (1) epub_builder::epub: Add resource: "stylesheet.css"
00:00:10 v #4392 ! 12:14:45 [DEBUG] (1) epub_builder::epub: render_opf...
00:00:10 v #4393 ! 12:14:45 [DEBUG] (1) epub_builder::epub: id="title_page.xhtml", mime="application/xhtml+xml"
00:00:10 v #4394 ! 12:14:45 [DEBUG] (1) epub_builder::epub: content = Content { file: "title_page.xhtml", mime: "application/xhtml+xml", itemref: true, cover: false, reftype: Some(TitlePage), title: "Title" }
00:00:10 v #4395 ! 12:14:45 [DEBUG] (1) epub_builder::epub: id="chapter_000.xhtml", mime="application/xhtml+xml"
00:00:10 v #4396 ! 12:14:45 [DEBUG] (1) epub_builder::epub: content = Content { file: "chapter_000.xhtml", mime: "application/xhtml+xml", itemref: true, cover: false, reftype: Some(Text), title: "" }
00:00:10 v #4397 ! 12:14:45 [DEBUG] (1) epub_builder::epub: id="stylesheet.css", mime="text/css"
00:00:10 v #4398 ! 12:14:45 [DEBUG] (1) epub_builder::toc: rendered elem: "<li><a href=\"title_page.xhtml\">Title</a></li>"
00:00:10 v #4399 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:10 d #4400 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/reddit/reddit.i574n.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/reddit/reddit.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:10 v #4401 > 4c062bf0a367b772b3534f98c696ebafc33a1150
00:00:10 v #4402 > '2cd8a3611d7dca4b0dcd9d90df384a74128467d6'
00:00:10 v #4403 > 434c960bdfe32a4a92597d61bcc65b77abc6ba1b
00:00:10 v #4404 > 'd7255f3394d469cd0f10ddc5400329b9730f52c5'
00:00:10 v #4405 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:10 i #4406 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/systems.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\systems.hangul.md.epub }
00:00:10 d #4407 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\systems.hangul.md.epub; new_path = c:/home/git/vault/dist/data/programming/systems.hangul.md.epub; result = 38046 }
00:00:10 v #4408 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:10 i #4409 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/systems.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\systems.hangul.md.pdf }
00:00:10 d #4410 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\systems.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/programming/systems.hangul.md.pdf; result = 76713 }
00:00:10 i #4411 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/systems.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\systems.hangul.md.html }
00:00:10 v #4412 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:10 d #4413 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/tech/devilopment_pt-br.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/tech/devilopment_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:10 v #4414 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:10 d #4415 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\systems.hangul.md.html; new_path = c:/home/git/vault/dist/data/programming/systems.hangul.md.html; result = 209377 }
00:00:10 i #4416 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/systems.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\systems.md.epub }
00:00:10 i #4417 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/rust.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rust.pdf.hangul.md.epub }
00:00:10 d #4418 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rust.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/programming/rust.pdf.hangul.md.epub; result = 7660 }
00:00:10 d #4419 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\systems.md.epub; new_path = c:/home/git/vault/dist/data/programming/systems.md.epub; result = 34928 }
00:00:10 i #4420 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/systems.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\systems.md.pdf }
00:00:10 i #4421 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/rust.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rust.pdf.hangul.md.pdf }
00:00:10 d #4422 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:10 d #4423 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rust.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/programming/rust.pdf.hangul.md.pdf; result = 7304 }
00:00:10 d #4424 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\systems.md.pdf; new_path = c:/home/git/vault/dist/data/programming/systems.md.pdf; result = 167694 }
00:00:10 i #4425 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/rust.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rust.pdf.hangul.md.html }
00:00:10 i #4425 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/systems.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\systems.md.html }
00:00:10 d #4427 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\systems.md.html; new_path = c:/home/git/vault/dist/data/programming/systems.md.html; result = 168633 }
00:00:10 d #4428 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rust.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/programming/rust.pdf.hangul.md.html; result = 19553 }
00:00:10 i #4429 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/systems.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\systems.hangul.md }
00:00:10 i #4430 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/rust.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rust.pdf.md.epub }
00:00:10 d #4431 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rust.pdf.md.epub; new_path = c:/home/git/vault/dist/data/programming/rust.pdf.md.epub; result = 7110 }
00:00:10 d #4432 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\systems.hangul.md; new_path = c:/home/git/vault/dist/data/programming/systems.hangul.md; result = 146207 }
00:00:10 i #4433 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/rust.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rust.pdf.md.pdf }
00:00:10 d #4434 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rust.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/programming/rust.pdf.md.pdf; result = 14838 }
00:00:10 i #4435 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/rust.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rust.pdf.md.html }
00:00:10 d #4436 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rust.pdf.md.html; new_path = c:/home/git/vault/dist/data/programming/rust.pdf.md.html; result = 16513 }
00:00:10 i #4437 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/rust.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rust.pdf.hangul.md }
00:00:10 d #4438 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/protonmail/protonmail.fc1943s.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/protonmail/protonmail.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:10 d #4439 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rust.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/programming/rust.pdf.hangul.md; result = 8340 }
00:00:10 d #4440 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/religion/religion.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/religion/religion.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:10 v #4441 > 95f0e6ecaba1080da86604a202d4376c02c82aa3
00:00:10 v #4442 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:10 i #4443 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/reddit/reddit.i574n.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\reddit.i574n.hangul.md.epub }
00:00:10 d #4444 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\reddit.i574n.hangul.md.epub; new_path = c:/home/git/vault/dist/data/reddit/reddit.i574n.hangul.md.epub; result = 5447 }
00:00:10 i #4445 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/reddit/reddit.i574n.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\reddit.i574n.hangul.md.pdf }
00:00:10 d #4446 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\reddit.i574n.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/reddit/reddit.i574n.hangul.md.pdf; result = 3543 }
00:00:10 i #4447 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/reddit/reddit.i574n.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\reddit.i574n.hangul.md.html }
00:00:10 d #4448 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\reddit.i574n.hangul.md.html; new_path = c:/home/git/vault/dist/data/reddit/reddit.i574n.hangul.md.html; result = 9960 }
00:00:10 i #4449 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/reddit/reddit.i574n.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\reddit.i574n.md.epub }
00:00:10 d #4450 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\reddit.i574n.md.epub; new_path = c:/home/git/vault/dist/data/reddit/reddit.i574n.md.epub; result = 5413 }
00:00:10 i #4451 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/reddit/reddit.i574n.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\reddit.i574n.md.pdf }
00:00:10 d #4452 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\reddit.i574n.md.pdf; new_path = c:/home/git/vault/dist/data/reddit/reddit.i574n.md.pdf; result = 4629 }
00:00:10 i #4453 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/reddit/reddit.i574n.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\reddit.i574n.md.html }
00:00:10 d #4454 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\reddit.i574n.md.html; new_path = c:/home/git/vault/dist/data/reddit/reddit.i574n.md.html; result = 9953 }
00:00:10 i #4455 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/reddit/reddit.i574n.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\reddit.i574n.hangul.md }
00:00:10 d #4456 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\reddit.i574n.hangul.md; new_path = c:/home/git/vault/dist/data/reddit/reddit.i574n.hangul.md; result = 48 }
00:00:10 d #4457 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/relationships/relationships.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/relationships/relationships.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:10 v #4458 > 2cd8a3611d7dca4b0dcd9d90df384a74128467d6
00:00:10 v #4459 ! 12:14:45 [INFO] crowbook::book: Succesfully generated EPUB: data\spirituality\the-book-of-innocence_pt-br.hangul.md.epub
00:00:10 v #4460 > '710dc0fd7f3fc16a762129d9543c064715dd40d2'
00:00:10 v #4460 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 3272 }
00:00:10 w #4462 documents.crowbook / result contains ERROR / { exit_code = 0; output_path = c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md.epub; result = CROWBOOK 0.17.0
12:14:45 [ERROR] crowbook::book: Inline YAML block could not set String("치틀리") to String("우 리브루 다 이노센시아"): Error converting BookOption: unrecognized key '치틀리'
12:14:45 [DEBUG] (1) crowbook::book: Attempting to generate epub...
12:14:45 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #콘테우두 or #콘테우두.md
12:14:45 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #인트로두상-프레젠사-이-세르 or #인트로두상-프레젠사-이-세르.md
12:14:45 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #파르치-이-이덴치다지 or #파르치-이-이덴치다지.md
12:14:45 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #1-이우-소-코녜시두 or #1-이우-소-코녜시두.md
12:14:45 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #2-메모리아 or #2-메모리아.md
12:14:45 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #3-아-베르다지-두-세르 or #3-아-베르다지-두-세르.md
12:14:45 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #4-헤콘실리아상 or #4-헤콘실리아상.md
12:14:45 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #파르치-이-이노센시아 or #파르치-이-이노센시아.md
12:14:45 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #5-알렝-두-페카두 or #5-알렝-두-페카두.md
12:14:45 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #6-웅-문두-헤노바두 or #6-웅-문두-헤노바두.md
12:14:45 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #7-멘치-베르다데이라 or #7-멘치-베르다데이라.md
12:14:45 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #이필로구 or #이필로구.md
12:14:45 [DEBUG] (1) epub_builder::epub: Add resource: "stylesheet.css"
12:14:45 [DEBUG] (1) epub_builder::epub: render_opf...
12:14:45 [DEBUG] (1) epub_builder::epub: id="title_page.xhtml", mime="application/xhtml+xml"
12:14:45 [DEBUG] (1) epub_builder::epub: content = Content { file: "title_page.xhtml", mime: "application/xhtml+xml", itemref: true, cover: false, reftype: Some(TitlePage), title: "Title" }
12:14:45 [DEBUG] (1) epub_builder::epub: id="chapter_000.xhtml", mime="application/xhtml+xml"
12:14:45 [DEBUG] (1) epub_builder::epub: content = Content { file: "chapter_000.xhtml", mime: "application/xhtml+xml", itemref: true, cover: false, reftype: Some(Text), title: "" }
12:14:45 [DEBUG] (1) epub_builder::epub: id="stylesheet.css", mime="text/css"
12:14:45 [DEBUG] (1) epub_builder::toc: rendered elem: "<li><a href=\"title_page.xhtml\">Title</a></li>"
12:14:45 [INFO] crowbook::book: Succesfully generated EPUB: data\spirituality\the-book-of-innocence_pt-br.hangul.md.epub }
00:00:10 v #4463 > d7255f3394d469cd0f10ddc5400329b9730f52c5
00:00:10 v #4464 > 'd239324db5340dd134db4e31f640bda07ff385b7'
00:00:10 v #4465 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:10 d #4466 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/protonmail/protonmail.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/protonmail/protonmail.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:10 i #4467 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/devilopment_pt-br.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\devilopment_pt-br.hangul.md.epub }
00:00:10 d #4468 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\devilopment_pt-br.hangul.md.epub; new_path = c:/home/git/vault/dist/data/tech/devilopment_pt-br.hangul.md.epub; result = 85747 }
00:00:10 i #4469 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/devilopment_pt-br.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\devilopment_pt-br.hangul.md.pdf }
00:00:10 d #4470 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\devilopment_pt-br.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/tech/devilopment_pt-br.hangul.md.pdf; result = 85914 }
00:00:10 i #4471 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/devilopment_pt-br.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\devilopment_pt-br.hangul.md.html }
00:00:10 d #4472 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\devilopment_pt-br.hangul.md.html; new_path = c:/home/git/vault/dist/data/tech/devilopment_pt-br.hangul.md.html; result = 346771 }
00:00:10 i #4473 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/devilopment_pt-br.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\devilopment_pt-br.md.epub }
00:00:10 d #4474 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\devilopment_pt-br.md.epub; new_path = c:/home/git/vault/dist/data/tech/devilopment_pt-br.md.epub; result = 74774 }
00:00:10 i #4475 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/devilopment_pt-br.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\devilopment_pt-br.md.pdf }
00:00:10 v #4476 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:10 d #4477 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\devilopment_pt-br.md.pdf; new_path = c:/home/git/vault/dist/data/tech/devilopment_pt-br.md.pdf; result = 263658 }
00:00:10 i #4478 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/devilopment_pt-br.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\devilopment_pt-br.md.html }
00:00:10 d #4479 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\devilopment_pt-br.md.html; new_path = c:/home/git/vault/dist/data/tech/devilopment_pt-br.md.html; result = 235095 }
00:00:10 i #4480 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/devilopment_pt-br.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\devilopment_pt-br.hangul.md }
00:00:10 v #4481 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:10 d #4482 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/religion/religion.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/religion/religion.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:10 d #4483 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\devilopment_pt-br.hangul.md; new_path = c:/home/git/vault/dist/data/tech/devilopment_pt-br.hangul.md; result = 323167 }
00:00:10 v #4484 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:10 i #4485 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\inner-inferno_pt-br.hangul.md.epub }
00:00:10 d #4486 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:10 d #4487 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\inner-inferno_pt-br.hangul.md.epub; new_path = c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.hangul.md.epub; result = 114192 }
00:00:10 d #4488 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/tech/tech.epub.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/tech/tech.epub.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:10 i #4489 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\inner-inferno_pt-br.hangul.md.pdf }
00:00:10 d #4490 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\inner-inferno_pt-br.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.hangul.md.pdf; result = 116341 }
00:00:10 i #4491 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\inner-inferno_pt-br.hangul.md.html }
00:00:10 d #4492 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\inner-inferno_pt-br.hangul.md.html; new_path = c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.hangul.md.html; result = 455079 }
00:00:10 i #4493 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\inner-inferno_pt-br.md.epub }
00:00:10 d #4494 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\inner-inferno_pt-br.md.epub; new_path = c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.md.epub; result = 100223 }
00:00:10 i #4495 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\inner-inferno_pt-br.md.pdf }
00:00:10 d #4496 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\inner-inferno_pt-br.md.pdf; new_path = c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.md.pdf; result = 356366 }
00:00:10 i #4497 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\inner-inferno_pt-br.md.html }
00:00:10 d #4498 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\inner-inferno_pt-br.md.html; new_path = c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.md.html; result = 317605 }
00:00:10 i #4499 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\inner-inferno_pt-br.hangul.md }
00:00:10 d #4500 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\inner-inferno_pt-br.hangul.md; new_path = c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.hangul.md; result = 424276 }
00:00:10 d #4501 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/psychology/psychology.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/psychology/psychology.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:10 v #4502 > '830edfbf78b902b8089b82f8ab7edf77a3f45500'
00:00:10 v #4503 > '8e9bc86a9063f1b960e5ed058ec223d973dfa028'
00:00:10 v #4504 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:10 d #4505 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/relationships/relationships.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/relationships/relationships.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:10 v #4506 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:10 v #4507 > d239324db5340dd134db4e31f640bda07ff385b7
00:00:10 d #4508 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/protonmail/protonmail.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/protonmail/protonmail.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:10 v #4509 > 710dc0fd7f3fc16a762129d9543c064715dd40d2
00:00:10 v #4510 > 'ce9b990b441bbf282d3a181c9f07e2ce7c0a9b24'
00:00:10 v #4511 > '4ee1f7e9e8ad93249e8717a7c0ab146d70933975'
00:00:10 v #4512 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:10 v #4513 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:10 v #4514 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:10 d #4515 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/tech/tech.epub.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/tech/tech.epub.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:10 v #4516 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:10 i #4517 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/religion.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\religion.pdf.hangul.md.epub }
00:00:10 i #4518 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.fc1943s.hangul.md.epub }
00:00:10 d #4519 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\religion.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/religion/religion.pdf.hangul.md.epub; result = 5824 }
00:00:10 i #4520 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/religion.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\religion.pdf.hangul.md.pdf }
00:00:10 d #4521 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.fc1943s.hangul.md.epub; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.hangul.md.epub; result = 5507 }
00:00:10 i #4522 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.fc1943s.hangul.md.pdf }
00:00:10 d #4523 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/psychology/psychology.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/psychology/psychology.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:10 d #4524 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.fc1943s.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.hangul.md.pdf; result = 4534 }
00:00:10 i #4525 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.fc1943s.hangul.md.html }
00:00:10 d #4526 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\religion.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/religion/religion.pdf.hangul.md.pdf; result = 4929 }
00:00:10 i #4527 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/religion.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\religion.pdf.hangul.md.html }
00:00:10 d #4528 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.fc1943s.hangul.md.html; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.hangul.md.html; result = 10083 }
00:00:10 i #4529 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.fc1943s.md.epub }
00:00:10 d #4530 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.fc1943s.md.epub; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.md.epub; result = 5444 }
00:00:10 i #4531 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.fc1943s.md.pdf }
00:00:10 d #4532 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.fc1943s.md.pdf; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.md.pdf; result = 6116 }
00:00:10 i #4533 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.fc1943s.md.html }
00:00:10 d #4534 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\religion.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/religion/religion.pdf.hangul.md.html; result = 10927 }
00:00:10 d #4535 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.fc1943s.md.html; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.md.html; result = 10055 }
00:00:10 i #4536 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.fc1943s.hangul.md }
00:00:10 i #4537 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/religion.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\religion.pdf.md.epub }
00:00:10 d #4538 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.fc1943s.hangul.md; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.hangul.md; result = 102 }
00:00:10 d #4539 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\religion.pdf.md.epub; new_path = c:/home/git/vault/dist/data/religion/religion.pdf.md.epub; result = 5650 }
00:00:10 i #4540 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/religion.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\religion.pdf.md.pdf }
00:00:10 d #4541 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\religion.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/religion/religion.pdf.md.pdf; result = 8117 }
00:00:10 d #4542 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/religion/kimbanda.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/religion/kimbanda.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:10 i #4543 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/religion.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\religion.pdf.md.html }
00:00:10 d #4544 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\religion.pdf.md.html; new_path = c:/home/git/vault/dist/data/religion/religion.pdf.md.html; result = 10592 }
00:00:10 i #4545 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/religion.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\religion.pdf.hangul.md }
00:00:10 d #4546 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\religion.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/religion/religion.pdf.hangul.md; result = 871 }
00:00:10 d #4547 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/science/science.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/science/science.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:10 v #4548 > 830edfbf78b902b8089b82f8ab7edf77a3f45500
00:00:10 v #4549 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:10 v #4550 > 8e9bc86a9063f1b960e5ed058ec223d973dfa028
00:00:10 i #4551 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/relationships/relationships.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\relationships.hangul.md.epub }
00:00:10 v #4552 > ce9b990b441bbf282d3a181c9f07e2ce7c0a9b24
00:00:10 d #4553 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\relationships.hangul.md.epub; new_path = c:/home/git/vault/dist/data/relationships/relationships.hangul.md.epub; result = 55585 }
00:00:10 i #4554 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/relationships/relationships.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\relationships.hangul.md.pdf }
00:00:10 d #4555 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\relationships.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/relationships/relationships.hangul.md.pdf; result = 72415 }
00:00:10 i #4556 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/relationships/relationships.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\relationships.hangul.md.html }
00:00:10 d #4557 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\relationships.hangul.md.html; new_path = c:/home/git/vault/dist/data/relationships/relationships.hangul.md.html; result = 293965 }
00:00:10 i #4558 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/relationships/relationships.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\relationships.md.epub }
00:00:10 v #4559 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:10 d #4560 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\relationships.md.epub; new_path = c:/home/git/vault/dist/data/relationships/relationships.md.epub; result = 49354 }
00:00:10 i #4561 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/relationships/relationships.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\relationships.md.pdf }
00:00:10 i #4562 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.html.hangul.md.epub }
00:00:10 d #4563 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\relationships.md.pdf; new_path = c:/home/git/vault/dist/data/relationships/relationships.md.pdf; result = 202653 }
00:00:10 i #4564 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/relationships/relationships.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\relationships.md.html }
00:00:10 d #4565 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.html.hangul.md.epub; result = 5530 }
00:00:10 i #4566 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.html.hangul.md.pdf }
00:00:10 d #4567 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\relationships.md.html; new_path = c:/home/git/vault/dist/data/relationships/relationships.md.html; result = 201038 }
00:00:10 v #4568 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:10 i #4569 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/relationships/relationships.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\relationships.hangul.md }
00:00:10 d #4570 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.html.hangul.md.pdf; result = 3856 }
00:00:10 i #4571 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.html.hangul.md.html }
00:00:10 d #4572 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.html.hangul.md.html; result = 10340 }
00:00:10 d #4573 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\relationships.hangul.md; new_path = c:/home/git/vault/dist/data/relationships/relationships.hangul.md; result = 252121 }
00:00:10 i #4574 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.html.md.epub }
00:00:10 i #4575 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.epub.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.epub.hangul.md.epub }
00:00:10 d #4576 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.html.md.epub; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.html.md.epub; result = 5460 }
00:00:10 i #4577 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.html.md.pdf }
00:00:10 d #4578 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.epub.hangul.md.epub; new_path = c:/home/git/vault/dist/data/tech/tech.epub.hangul.md.epub; result = 5841 }
00:00:10 i #4579 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.epub.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.epub.hangul.md.pdf }
00:00:10 d #4580 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.html.md.pdf; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.html.md.pdf; result = 5944 }
00:00:10 i #4581 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.html.md.html }
00:00:10 d #4582 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.epub.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/tech/tech.epub.hangul.md.pdf; result = 5372 }
00:00:10 d #4583 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.html.md.html; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.html.md.html; result = 10260 }
00:00:10 i #4584 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.epub.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.epub.hangul.md.html }
00:00:10 i #4585 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.html.hangul.md }
00:00:10 d #4586 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/religion/hinduism.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/religion/hinduism.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:10 d #4587 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.epub.hangul.md.html; new_path = c:/home/git/vault/dist/data/tech/tech.epub.hangul.md.html; result = 10873 }
00:00:10 d #4588 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.html.hangul.md; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.html.hangul.md; result = 284 }
00:00:10 i #4589 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.epub.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.epub.md.epub }
00:00:10 v #4590 > '8b8616feca251f9df6d044c31d15e1070ce9ef1f'
00:00:10 d #4591 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.epub.md.epub; new_path = c:/home/git/vault/dist/data/tech/tech.epub.md.epub; result = 5684 }
00:00:10 i #4592 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.epub.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.epub.md.pdf }
00:00:10 d #4593 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.epub.md.pdf; new_path = c:/home/git/vault/dist/data/tech/tech.epub.md.pdf; result = 11733 }
00:00:10 i #4594 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.epub.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.epub.md.html }
00:00:10 d #4595 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/protonmail/protonmail.i574n.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/protonmail/protonmail.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:10 d #4596 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.epub.md.html; new_path = c:/home/git/vault/dist/data/tech/tech.epub.md.html; result = 10685 }
00:00:10 i #4597 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.epub.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.epub.hangul.md }
00:00:10 d #4598 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.epub.hangul.md; new_path = c:/home/git/vault/dist/data/tech/tech.epub.hangul.md; result = 791 }
00:00:10 d #4599 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/tech/tech.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/tech/tech.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:10 v #4599 > 4ee1f7e9e8ad93249e8717a7c0ab146d70933975
00:00:10 v #4601 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:10 d #4602 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/religion/kimbanda.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/religion/kimbanda.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:10 v #4603 > '7a1a75afcb103cdf4c7663b610486c7c5f728845'
00:00:10 v #4604 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:10 i #4605 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.hangul.md.epub }
00:00:10 d #4606 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.hangul.md.epub; new_path = c:/home/git/vault/dist/data/psychology/psychology.hangul.md.epub; result = 15614 }
00:00:10 i #4607 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.hangul.md.pdf }
00:00:10 d #4608 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/psychology/psychology.hangul.md.pdf; result = 14813 }
00:00:10 i #4609 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.hangul.md.html }
00:00:10 d #4610 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.hangul.md.html; new_path = c:/home/git/vault/dist/data/psychology/psychology.hangul.md.html; result = 55715 }
00:00:10 i #4611 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.md.epub }
00:00:10 d #4612 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.md.epub; new_path = c:/home/git/vault/dist/data/psychology/psychology.md.epub; result = 14106 }
00:00:10 i #4613 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.md.pdf }
00:00:10 d #4614 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.md.pdf; new_path = c:/home/git/vault/dist/data/psychology/psychology.md.pdf; result = 43003 }
00:00:10 i #4615 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.md.html }
00:00:10 v #4616 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:10 d #4617 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.md.html; new_path = c:/home/git/vault/dist/data/psychology/psychology.md.html; result = 41442 }
00:00:10 i #4618 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.hangul.md }
00:00:10 d #4619 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/science/science.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/science/science.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:10 d #4620 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.hangul.md; new_path = c:/home/git/vault/dist/data/psychology/psychology.hangul.md; result = 38222 }
00:00:10 d #4621 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/psychology/psychology.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/psychology/psychology.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:10 v #4622 > '9ac5bde963a16c5a5b9fab686e95f8ed42d40254'
00:00:10 v #4623 > '97aa9fdc238588c6e274a80e391a78474d9ab897'
00:00:10 v #4624 > 'f6484cd8dfbe67b79ff014884bc0814b04524d8f'
00:00:10 v #4625 > 8b8616feca251f9df6d044c31d15e1070ce9ef1f
00:00:10 v #4626 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:10 d #4627 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/protonmail/protonmail.i574n.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/protonmail/protonmail.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:10 v #4628 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:10 v #4628 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:10 i #4630 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/kimbanda.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.hangul.md.epub }
00:00:10 d #4631 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/tech/tech.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/tech/tech.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:10 v #4632 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:10 v #4633 > 7a1a75afcb103cdf4c7663b610486c7c5f728845
00:00:10 d #4634 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/religion/hinduism.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/religion/hinduism.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:10 d #4635 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.hangul.md.epub; new_path = c:/home/git/vault/dist/data/religion/kimbanda.hangul.md.epub; result = 18654 }
00:00:10 i #4636 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/kimbanda.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.hangul.md.pdf }
00:00:10 d #4637 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/religion/kimbanda.hangul.md.pdf; result = 18451 }
00:00:10 i #4638 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/kimbanda.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.hangul.md.html }
00:00:10 v #4639 > 'f511538655cfdcae9b9a4a30a112c5860d9d6c2c'
00:00:10 d #4640 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.hangul.md.html; new_path = c:/home/git/vault/dist/data/religion/kimbanda.hangul.md.html; result = 64518 }
00:00:10 i #4641 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/kimbanda.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.md.epub }
00:00:10 d #4642 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.md.epub; new_path = c:/home/git/vault/dist/data/religion/kimbanda.md.epub; result = 16597 }
00:00:10 i #4643 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/kimbanda.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.md.pdf }
00:00:10 d #4644 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.md.pdf; new_path = c:/home/git/vault/dist/data/religion/kimbanda.md.pdf; result = 51633 }
00:00:10 i #4645 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/kimbanda.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.md.html }
00:00:10 d #4646 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.md.html; new_path = c:/home/git/vault/dist/data/religion/kimbanda.md.html; result = 47826 }
00:00:10 i #4647 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/kimbanda.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.hangul.md }
00:00:10 v #4648 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:10 i #4649 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/science/science.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\science.hangul.md.epub }
00:00:10 d #4650 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.hangul.md; new_path = c:/home/git/vault/dist/data/religion/kimbanda.hangul.md; result = 45510 }
00:00:10 d #4651 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\science.hangul.md.epub; new_path = c:/home/git/vault/dist/data/science/science.hangul.md.epub; result = 5988 }
00:00:10 i #4652 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/science/science.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\science.hangul.md.pdf }
00:00:10 d #4653 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\science.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/science/science.hangul.md.pdf; result = 4277 }
00:00:10 v #4654 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:10 d #4655 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/religion/kimbanda.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/religion/kimbanda.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:10 i #4656 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/science/science.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\science.hangul.md.html }
00:00:10 d #4657 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\science.hangul.md.html; new_path = c:/home/git/vault/dist/data/science/science.hangul.md.html; result = 11413 }
00:00:10 i #4658 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/science/science.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\science.md.epub }
00:00:10 d #4659 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\science.md.epub; new_path = c:/home/git/vault/dist/data/science/science.md.epub; result = 5763 }
00:00:10 d #4660 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/psychology/psychology.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/psychology/psychology.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:10 i #4661 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/science/science.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\science.md.pdf }
00:00:10 d #4662 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\science.md.pdf; new_path = c:/home/git/vault/dist/data/science/science.md.pdf; result = 9459 }
00:00:10 i #4663 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/science/science.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\science.md.html }
00:00:10 d #4664 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\science.md.html; new_path = c:/home/git/vault/dist/data/science/science.md.html; result = 10788 }
00:00:10 i #4665 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/science/science.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\science.hangul.md }
00:00:10 d #4666 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\science.hangul.md; new_path = c:/home/git/vault/dist/data/science/science.hangul.md; result = 1351 }
00:00:10 d #4667 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/security/security.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/security/security.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:10 v #4668 > 9ac5bde963a16c5a5b9fab686e95f8ed42d40254
00:00:10 v #4669 > f6484cd8dfbe67b79ff014884bc0814b04524d8f
00:00:11 v #4670 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:11 v #4671 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:11 i #4672 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.i574n.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.i574n.hangul.md.epub }
00:00:11 i #4673 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.html.hangul.md.epub }
00:00:11 d #4674 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.i574n.hangul.md.epub; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.i574n.hangul.md.epub; result = 5507 }
00:00:11 i #4675 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.i574n.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.i574n.hangul.md.pdf }
00:00:11 d #4676 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/tech/tech.html.hangul.md.epub; result = 5743 }
00:00:11 i #4677 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.html.hangul.md.pdf }
00:00:11 d #4678 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.i574n.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.i574n.hangul.md.pdf; result = 4376 }
00:00:11 d #4679 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/tech/tech.html.hangul.md.pdf; result = 5098 }
00:00:11 i #4680 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.i574n.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.i574n.hangul.md.html }
00:00:11 i #4681 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.html.hangul.md.html }
00:00:11 d #4682 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.i574n.hangul.md.html; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.i574n.hangul.md.html; result = 10079 }
00:00:11 d #4683 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/tech/tech.html.hangul.md.html; result = 11790 }
00:00:11 i #4684 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.html.md.epub }
00:00:11 i #4685 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.i574n.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.i574n.md.epub }
00:00:11 v #4686 > 97aa9fdc238588c6e274a80e391a78474d9ab897
00:00:11 d #4687 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.i574n.md.epub; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.i574n.md.epub; result = 5443 }
00:00:11 d #4688 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.html.md.epub; new_path = c:/home/git/vault/dist/data/tech/tech.html.md.epub; result = 5604 }
00:00:11 i #4689 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.i574n.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.i574n.md.pdf }
00:00:11 i #4689 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.html.md.pdf }
00:00:11 d #4691 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.i574n.md.pdf; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.i574n.md.pdf; result = 5902 }
00:00:11 d #4692 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.html.md.pdf; new_path = c:/home/git/vault/dist/data/tech/tech.html.md.pdf; result = 7847 }
00:00:11 i #4693 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.i574n.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.i574n.md.html }
00:00:11 i #4694 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.html.md.html }
00:00:11 d #4695 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.html.md.html; new_path = c:/home/git/vault/dist/data/tech/tech.html.md.html; result = 11467 }
00:00:11 d #4696 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.i574n.md.html; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.i574n.md.html; result = 10053 }
00:00:11 i #4697 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.html.hangul.md }
00:00:11 i #4698 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.i574n.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.i574n.hangul.md }
00:00:11 d #4699 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.i574n.hangul.md; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.i574n.hangul.md; result = 99 }
00:00:11 d #4700 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.html.hangul.md; new_path = c:/home/git/vault/dist/data/tech/tech.html.hangul.md; result = 1180 }
00:00:11 d #4701 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/travel/travel.png.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/travel/travel.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:11 d #4702 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/tech/tech.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/tech/tech.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:11 v #4703 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:11 v #4704 > 'a01a7819daf101c87c2cefedb8ff676668204110'
00:00:11 i #4705 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/hinduism.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hinduism.hangul.md.epub }
00:00:11 d #4706 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hinduism.hangul.md.epub; new_path = c:/home/git/vault/dist/data/religion/hinduism.hangul.md.epub; result = 19246 }
00:00:11 i #4707 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/hinduism.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hinduism.hangul.md.pdf }
00:00:11 v #4708 > f511538655cfdcae9b9a4a30a112c5860d9d6c2c
00:00:11 d #4709 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hinduism.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/religion/hinduism.hangul.md.pdf; result = 20885 }
00:00:11 i #4710 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/hinduism.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hinduism.hangul.md.html }
00:00:11 d #4711 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hinduism.hangul.md.html; new_path = c:/home/git/vault/dist/data/religion/hinduism.hangul.md.html; result = 81476 }
00:00:11 i #4712 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/hinduism.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hinduism.md.epub }
00:00:11 d #4713 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hinduism.md.epub; new_path = c:/home/git/vault/dist/data/religion/hinduism.md.epub; result = 17383 }
00:00:11 i #4714 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/hinduism.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hinduism.md.pdf }
00:00:11 d #4715 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hinduism.md.pdf; new_path = c:/home/git/vault/dist/data/religion/hinduism.md.pdf; result = 59715 }
00:00:11 i #4716 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/hinduism.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hinduism.md.html }
00:00:11 d #4717 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hinduism.md.html; new_path = c:/home/git/vault/dist/data/religion/hinduism.md.html; result = 58848 }
00:00:11 i #4718 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/hinduism.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hinduism.hangul.md }
00:00:11 v #4719 > '3aff6844c12e37a6a3873c14c6508303b3172a4e'
00:00:11 v #4720 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:11 d #4721 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hinduism.hangul.md; new_path = c:/home/git/vault/dist/data/religion/hinduism.hangul.md; result = 61430 }
00:00:11 d #4722 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/religion/kimbanda.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/religion/kimbanda.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:11 v #4723 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:11 d #4724 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/twitter/twitter.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/twitter/twitter.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:11 i #4725 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.mp3.hangul.md.epub }
00:00:11 d #4726 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/psychology/psychology.mp3.hangul.md.epub; result = 6184 }
00:00:11 i #4727 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.mp3.hangul.md.pdf }
00:00:11 d #4728 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/psychology/psychology.mp3.hangul.md.pdf; result = 4495 }
00:00:11 i #4729 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.mp3.hangul.md.html }
00:00:11 d #4730 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/psychology/psychology.mp3.hangul.md.html; result = 12199 }
00:00:11 i #4731 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.mp3.md.epub }
00:00:11 d #4732 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.mp3.md.epub; new_path = c:/home/git/vault/dist/data/psychology/psychology.mp3.md.epub; result = 5906 }
00:00:11 i #4733 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.mp3.md.pdf }
00:00:11 d #4734 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/psychology/psychology.mp3.md.pdf; result = 10138 }
00:00:11 i #4735 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.mp3.md.html }
00:00:11 d #4736 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.mp3.md.html; new_path = c:/home/git/vault/dist/data/psychology/psychology.mp3.md.html; result = 11223 }
00:00:11 i #4737 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.mp3.hangul.md }
00:00:11 d #4738 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/psychology/psychology.mp3.hangul.md; result = 2044 }
00:00:11 d #4739 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/psychology/psychology.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/psychology/psychology.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:11 v #4740 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:11 d #4741 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/security/security.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/security/security.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:11 v #4742 > 'dbd21ab4ac717628529cc164cd4fb958c4034b9e'
00:00:11 v #4743 > 'b79898a204e337d6041af09f1180e9bb942a748f'
00:00:11 v #4744 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:11 d #4745 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/tech/tech.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/tech/tech.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:11 v #4746 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:11 v #4747 > a01a7819daf101c87c2cefedb8ff676668204110
00:00:11 d #4748 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/travel/travel.png.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/travel/travel.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:11 v #4749 > '8d36121d0438fe72874a830235019a6439569844'
00:00:11 v #4750 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:11 i #4751 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/kimbanda.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.pdf.hangul.md.epub }
00:00:11 d #4752 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/religion/kimbanda.pdf.hangul.md.epub; result = 7175 }
00:00:11 i #4753 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/kimbanda.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.pdf.hangul.md.pdf }
00:00:11 d #4754 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/religion/kimbanda.pdf.hangul.md.pdf; result = 7279 }
00:00:11 i #4755 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/kimbanda.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.pdf.hangul.md.html }
00:00:11 d #4756 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/religion/kimbanda.pdf.hangul.md.html; result = 18439 }
00:00:11 i #4757 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/kimbanda.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.pdf.md.epub }
00:00:11 v #4758 > 3aff6844c12e37a6a3873c14c6508303b3172a4e
00:00:11 d #4759 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.pdf.md.epub; new_path = c:/home/git/vault/dist/data/religion/kimbanda.pdf.md.epub; result = 6662 }
00:00:11 i #4760 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/kimbanda.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.pdf.md.pdf }
00:00:11 v #4761 > 'e62f0064be6a954e4eef32d9f99cc611c1fa53ce'
00:00:11 d #4762 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/religion/kimbanda.pdf.md.pdf; result = 17083 }
00:00:11 i #4763 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/kimbanda.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.pdf.md.html }
00:00:11 d #4764 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.pdf.md.html; new_path = c:/home/git/vault/dist/data/religion/kimbanda.pdf.md.html; result = 15781 }
00:00:11 i #4765 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/kimbanda.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.pdf.hangul.md }
00:00:11 d #4766 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/religion/kimbanda.pdf.hangul.md; result = 6947 }
00:00:11 d #4767 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/religion/maya.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/religion/maya.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:11 v #4768 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:11 d #4769 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/twitter/twitter.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/twitter/twitter.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:11 v #4770 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:11 i #4771 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/security/security.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\security.hangul.md.epub }
00:00:11 d #4772 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\security.hangul.md.epub; new_path = c:/home/git/vault/dist/data/security/security.hangul.md.epub; result = 7156 }
00:00:11 v #4773 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:11 i #4774 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/security/security.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\security.hangul.md.pdf }
00:00:11 d #4775 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\security.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/security/security.hangul.md.pdf; result = 7094 }
00:00:11 i #4776 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/security/security.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\security.hangul.md.html }
00:00:11 d #4777 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/psychology/psychology.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/psychology/psychology.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:11 d #4778 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\security.hangul.md.html; new_path = c:/home/git/vault/dist/data/security/security.hangul.md.html; result = 19814 }
00:00:11 i #4779 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/security/security.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\security.md.epub }
00:00:11 d #4780 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\security.md.epub; new_path = c:/home/git/vault/dist/data/security/security.md.epub; result = 6751 }
00:00:11 i #4781 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/security/security.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\security.md.pdf }
00:00:11 d #4782 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\security.md.pdf; new_path = c:/home/git/vault/dist/data/security/security.md.pdf; result = 17345 }
00:00:11 i #4783 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/security/security.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\security.md.html }
00:00:11 d #4784 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\security.md.html; new_path = c:/home/git/vault/dist/data/security/security.md.html; result = 17735 }
00:00:11 i #4785 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/security/security.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\security.hangul.md }
00:00:11 d #4786 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\security.hangul.md; new_path = c:/home/git/vault/dist/data/security/security.hangul.md; result = 5456 }
00:00:11 d #4787 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/sex/sex.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/sex/sex.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:11 v #4788 > b79898a204e337d6041af09f1180e9bb942a748f
00:00:11 v #4789 > dbd21ab4ac717628529cc164cd4fb958c4034b9e
00:00:11 v #4790 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:11 i #4791 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.png.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.png.hangul.md.epub }
00:00:11 d #4792 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.png.hangul.md.epub; new_path = c:/home/git/vault/dist/data/travel/travel.png.hangul.md.epub; result = 6296 }
00:00:11 i #4793 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.png.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.png.hangul.md.pdf }
00:00:11 d #4794 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.png.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/travel/travel.png.hangul.md.pdf; result = 2205 }
00:00:11 i #4795 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.png.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.png.hangul.md.html }
00:00:11 d #4796 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.png.hangul.md.html; new_path = c:/home/git/vault/dist/data/travel/travel.png.hangul.md.html; result = 14526 }
00:00:11 i #4797 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.png.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.png.md.epub }
00:00:11 v #4798 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:11 d #4799 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.png.md.epub; new_path = c:/home/git/vault/dist/data/travel/travel.png.md.epub; result = 6044 }
00:00:11 i #4800 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.png.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.png.md.pdf }
00:00:11 d #4801 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.png.md.pdf; new_path = c:/home/git/vault/dist/data/travel/travel.png.md.pdf; result = 2202 }
00:00:11 i #4802 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.png.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.png.md.html }
00:00:11 d #4803 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.png.md.html; new_path = c:/home/git/vault/dist/data/travel/travel.png.md.html; result = 12932 }
00:00:11 i #4804 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.png.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.png.hangul.md }
00:00:11 i #4805 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.hangul.md.epub }
00:00:11 v #4806 > '25f903ae29f0ef985ad733040e0ccd6034069834'
00:00:11 d #4807 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.png.hangul.md; new_path = c:/home/git/vault/dist/data/travel/travel.png.hangul.md; result = 4067 }
00:00:11 d #4808 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.hangul.md.epub; new_path = c:/home/git/vault/dist/data/tech/tech.hangul.md.epub; result = 53889 }
00:00:11 i #4809 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.hangul.md.pdf }
00:00:11 d #4810 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/tech/tech.hangul.md.pdf; result = 69457 }
00:00:11 i #4811 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.hangul.md.html }
00:00:11 d #4812 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/twitter/twitter.fc1943s.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/twitter/twitter.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:11 d #4813 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.hangul.md.html; new_path = c:/home/git/vault/dist/data/tech/tech.hangul.md.html; result = 241674 }
00:00:11 i #4814 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.md.epub }
00:00:11 d #4815 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.md.epub; new_path = c:/home/git/vault/dist/data/tech/tech.md.epub; result = 47893 }
00:00:11 i #4816 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.md.pdf }
00:00:11 d #4817 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.md.pdf; new_path = c:/home/git/vault/dist/data/tech/tech.md.pdf; result = 183036 }
00:00:11 i #4818 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.md.html }
00:00:11 d #4819 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.md.html; new_path = c:/home/git/vault/dist/data/tech/tech.md.html; result = 167600 }
00:00:11 i #4820 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.hangul.md }
00:00:11 d #4821 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.hangul.md; new_path = c:/home/git/vault/dist/data/tech/tech.hangul.md; result = 198404 }
00:00:11 d #4822 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/tech/tech.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/tech/tech.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:11 v #4823 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:11 d #4824 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/religion/maya.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/religion/maya.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:11 v #4825 > 8d36121d0438fe72874a830235019a6439569844
00:00:11 v #4826 > '58f17b0b255d89f87a9d7d7934f2a2b661f170d7'
00:00:11 v #4827 > e62f0064be6a954e4eef32d9f99cc611c1fa53ce
00:00:11 v #4828 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:11 v #4829 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:11 v #4830 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:11 i #4831 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.pdf.hangul.md.epub }
00:00:11 d #4832 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/sex/sex.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/sex/sex.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:11 d #4833 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/psychology/psychology.pdf.hangul.md.epub; result = 5728 }
00:00:11 i #4834 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.pdf.hangul.md.pdf }
00:00:11 i #4835 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.html.hangul.md.epub }
00:00:11 d #4836 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/psychology/psychology.pdf.hangul.md.pdf; result = 4849 }
00:00:11 i #4837 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.pdf.hangul.md.html }
00:00:11 d #4838 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/twitter/twitter.html.hangul.md.epub; result = 5507 }
00:00:11 i #4839 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.html.hangul.md.pdf }
00:00:11 d #4840 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/psychology/psychology.pdf.hangul.md.html; result = 10440 }
00:00:11 d #4841 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/twitter/twitter.html.hangul.md.pdf; result = 3730 }
00:00:11 i #4842 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.pdf.md.epub }
00:00:11 i #4843 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.html.hangul.md.html }
00:00:11 d #4844 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.pdf.md.epub; new_path = c:/home/git/vault/dist/data/psychology/psychology.pdf.md.epub; result = 5596 }
00:00:11 d #4845 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/twitter/twitter.html.hangul.md.html; result = 10086 }
00:00:11 i #4846 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.pdf.md.pdf }
00:00:11 i #4847 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.html.md.epub }
00:00:11 d #4848 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/psychology/psychology.pdf.md.pdf; result = 8065 }
00:00:11 d #4848 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.html.md.epub; new_path = c:/home/git/vault/dist/data/twitter/twitter.html.md.epub; result = 5441 }
00:00:11 i #4850 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.html.md.pdf }
00:00:11 i #4851 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.pdf.md.html }
00:00:11 d #4852 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.pdf.md.html; new_path = c:/home/git/vault/dist/data/psychology/psychology.pdf.md.html; result = 10285 }
00:00:11 d #4853 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.html.md.pdf; new_path = c:/home/git/vault/dist/data/twitter/twitter.html.md.pdf; result = 5949 }
00:00:11 i #4854 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.pdf.hangul.md }
00:00:11 i #4855 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.html.md.html }
00:00:11 d #4856 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/psychology/psychology.pdf.hangul.md; result = 452 }
00:00:11 d #4857 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.html.md.html; new_path = c:/home/git/vault/dist/data/twitter/twitter.html.md.html; result = 10056 }
00:00:11 i #4858 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.html.hangul.md }
00:00:11 d #4859 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.html.hangul.md; new_path = c:/home/git/vault/dist/data/twitter/twitter.html.hangul.md; result = 119 }
00:00:11 d #4860 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/travel/travel.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/travel/travel.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:11 d #4861 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/twitter/twitter.i574n.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/twitter/twitter.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:11 v #4862 > '4bf711ead74e2dd67aa74d62261c165a741a2013'
00:00:11 v #4863 > '25e72ff235ebd8e4660d7ff3fc112cecd828b9ac'
00:00:11 v #4864 > 25f903ae29f0ef985ad733040e0ccd6034069834
00:00:11 v #4865 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:11 v #4866 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:11 v #4867 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:11 d #4868 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/twitter/twitter.fc1943s.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/twitter/twitter.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:11 d #4869 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/tech/tech.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/tech/tech.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:11 i #4870 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/maya.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maya.hangul.md.epub }
00:00:11 d #4871 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maya.hangul.md.epub; new_path = c:/home/git/vault/dist/data/religion/maya.hangul.md.epub; result = 15629 }
00:00:11 i #4872 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/maya.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maya.hangul.md.pdf }
00:00:11 d #4873 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maya.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/religion/maya.hangul.md.pdf; result = 18707 }
00:00:11 i #4874 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/maya.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maya.hangul.md.html }
00:00:11 d #4875 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maya.hangul.md.html; new_path = c:/home/git/vault/dist/data/religion/maya.hangul.md.html; result = 65637 }
00:00:11 i #4876 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/maya.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maya.md.epub }
00:00:11 d #4877 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maya.md.epub; new_path = c:/home/git/vault/dist/data/religion/maya.md.epub; result = 14283 }
00:00:11 i #4878 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/maya.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maya.md.pdf }
00:00:11 d #4879 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maya.md.pdf; new_path = c:/home/git/vault/dist/data/religion/maya.md.pdf; result = 49499 }
00:00:11 i #4880 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/maya.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maya.md.html }
00:00:11 d #4881 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maya.md.html; new_path = c:/home/git/vault/dist/data/religion/maya.md.html; result = 48325 }
00:00:11 i #4882 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/maya.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maya.hangul.md }
00:00:11 d #4883 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maya.hangul.md; new_path = c:/home/git/vault/dist/data/religion/maya.hangul.md; result = 46362 }
00:00:11 d #4884 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/religion/religion.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/religion/religion.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:11 v #4885 > 58f17b0b255d89f87a9d7d7934f2a2b661f170d7
00:00:11 v #4886 > 'c325341c0da447957840c68bfae7175d63d047d8'
00:00:11 v #4887 > 'b8e95fd70a82e930b1d8f6fad237e7cb3e35bd35'
00:00:11 v #4888 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:11 d #4889 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/travel/travel.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/travel/travel.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:11 v #4890 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:11 i #4891 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.html.hangul.md.epub }
00:00:11 d #4892 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/sex/sex.html.hangul.md.epub; result = 5533 }
00:00:11 i #4893 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.html.hangul.md.pdf }
00:00:11 v #4894 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:11 d #4895 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/sex/sex.html.hangul.md.pdf; result = 3796 }
00:00:11 i #4896 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.html.hangul.md.html }
00:00:11 d #4897 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/sex/sex.html.hangul.md.html; result = 10300 }
00:00:11 i #4898 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.html.md.epub }
00:00:11 d #4899 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/twitter/twitter.i574n.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/twitter/twitter.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:11 d #4900 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.html.md.epub; new_path = c:/home/git/vault/dist/data/sex/sex.html.md.epub; result = 5460 }
00:00:11 i #4901 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.html.md.pdf }
00:00:11 d #4902 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.html.md.pdf; new_path = c:/home/git/vault/dist/data/sex/sex.html.md.pdf; result = 6123 }
00:00:11 i #4903 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.html.md.html }
00:00:11 d #4904 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.html.md.html; new_path = c:/home/git/vault/dist/data/sex/sex.html.md.html; result = 10237 }
00:00:11 i #4905 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.html.hangul.md }
00:00:11 d #4906 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.html.hangul.md; new_path = c:/home/git/vault/dist/data/sex/sex.html.hangul.md; result = 243 }
00:00:11 d #4907 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/sex/sex.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/sex/sex.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:11 v #4908 > 4bf711ead74e2dd67aa74d62261c165a741a2013
00:00:11 v #4909 > 25e72ff235ebd8e4660d7ff3fc112cecd828b9ac
00:00:11 v #4910 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:11 v #4911 > '327b6216ba5a5c1f5d833a2fc534e1ffcb73ae4a'
00:00:11 i #4912 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.mp3.hangul.md.epub }
00:00:11 d #4913 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/tech/tech.mp3.hangul.md.epub; result = 7132 }
00:00:11 i #4914 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.mp3.hangul.md.pdf }
00:00:11 d #4915 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/tech/tech.mp3.hangul.md.pdf; result = 5418 }
00:00:11 i #4916 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.mp3.hangul.md.html }
00:00:11 d #4917 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/tech/tech.mp3.hangul.md.html; result = 16279 }
00:00:11 i #4918 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.mp3.md.epub }
00:00:11 d #4919 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.mp3.md.epub; new_path = c:/home/git/vault/dist/data/tech/tech.mp3.md.epub; result = 6643 }
00:00:11 i #4920 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.mp3.md.pdf }
00:00:11 d #4921 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/tech/tech.mp3.md.pdf; result = 12255 }
00:00:11 i #4922 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.mp3.md.html }
00:00:11 v #4923 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:11 d #4924 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.mp3.md.html; new_path = c:/home/git/vault/dist/data/tech/tech.mp3.md.html; result = 13685 }
00:00:11 i #4925 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.mp3.hangul.md }
00:00:11 i #4926 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.fc1943s.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.fc1943s.hangul.md.epub }
00:00:11 d #4927 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/tech/tech.mp3.hangul.md; result = 5704 }
00:00:11 d #4928 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.fc1943s.hangul.md.epub; new_path = c:/home/git/vault/dist/data/twitter/twitter.fc1943s.hangul.md.epub; result = 5514 }
00:00:11 i #4929 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.fc1943s.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.fc1943s.hangul.md.pdf }
00:00:11 d #4930 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.fc1943s.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/twitter/twitter.fc1943s.hangul.md.pdf; result = 4530 }
00:00:11 i #4931 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.fc1943s.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.fc1943s.hangul.md.html }
00:00:11 d #4932 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/travel/travel.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/travel/travel.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:11 d #4933 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.fc1943s.hangul.md.html; new_path = c:/home/git/vault/dist/data/twitter/twitter.fc1943s.hangul.md.html; result = 10086 }
00:00:11 i #4934 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.fc1943s.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.fc1943s.md.epub }
00:00:11 d #4935 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.fc1943s.md.epub; new_path = c:/home/git/vault/dist/data/twitter/twitter.fc1943s.md.epub; result = 5449 }
00:00:11 i #4936 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.fc1943s.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.fc1943s.md.pdf }
00:00:11 d #4937 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.fc1943s.md.pdf; new_path = c:/home/git/vault/dist/data/twitter/twitter.fc1943s.md.pdf; result = 6271 }
00:00:11 i #4938 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.fc1943s.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.fc1943s.md.html }
00:00:11 v #4939 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:11 d #4940 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.fc1943s.md.html; new_path = c:/home/git/vault/dist/data/twitter/twitter.fc1943s.md.html; result = 10057 }
00:00:11 i #4941 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.fc1943s.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.fc1943s.hangul.md }
00:00:11 d #4942 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.fc1943s.hangul.md; new_path = c:/home/git/vault/dist/data/twitter/twitter.fc1943s.hangul.md; result = 106 }
00:00:11 d #4943 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/religion/religion.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/religion/religion.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:11 d #4944 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/sex/sex.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/sex/sex.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:11 v #4945 > b8e95fd70a82e930b1d8f6fad237e7cb3e35bd35
00:00:11 v #4946 > c325341c0da447957840c68bfae7175d63d047d8
00:00:11 v #4947 > 'd9dce8b7b3620797caab1846473795f01524ca8d'
00:00:11 v #4948 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:11 i #4949 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.i574n.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.i574n.hangul.md.epub }
00:00:11 d #4950 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.i574n.hangul.md.epub; new_path = c:/home/git/vault/dist/data/twitter/twitter.i574n.hangul.md.epub; result = 5512 }
00:00:11 i #4951 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.i574n.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.i574n.hangul.md.pdf }
00:00:11 d #4952 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.i574n.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/twitter/twitter.i574n.hangul.md.pdf; result = 4375 }
00:00:11 i #4953 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.i574n.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.i574n.hangul.md.html }
00:00:11 d #4954 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.i574n.hangul.md.html; new_path = c:/home/git/vault/dist/data/twitter/twitter.i574n.hangul.md.html; result = 10082 }
00:00:11 i #4955 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.i574n.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.i574n.md.epub }
00:00:11 d #4956 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.i574n.md.epub; new_path = c:/home/git/vault/dist/data/twitter/twitter.i574n.md.epub; result = 5448 }
00:00:11 i #4957 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.i574n.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.i574n.md.pdf }
00:00:11 d #4958 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.i574n.md.pdf; new_path = c:/home/git/vault/dist/data/twitter/twitter.i574n.md.pdf; result = 6051 }
00:00:11 i #4959 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.i574n.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.i574n.md.html }
00:00:11 v #4960 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:11 d #4961 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.i574n.md.html; new_path = c:/home/git/vault/dist/data/twitter/twitter.i574n.md.html; result = 10055 }
00:00:11 i #4962 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.i574n.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.i574n.hangul.md }
00:00:11 d #4963 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.i574n.hangul.md; new_path = c:/home/git/vault/dist/data/twitter/twitter.i574n.hangul.md; result = 102 }
00:00:11 i #4964 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.hangul.md.epub }
00:00:11 v #4965 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:11 d #4966 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.hangul.md.epub; new_path = c:/home/git/vault/dist/data/travel/travel.hangul.md.epub; result = 373683 }
00:00:11 i #4967 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.hangul.md.pdf }
00:00:11 d #4968 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/sex/sex.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/sex/sex.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:11 d #4969 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/travel/travel.hangul.md.pdf; result = 558482 }
00:00:11 i #4970 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.hangul.md.html }
00:00:11 d #4971 runtime.execute_with_options / { file_name = crowbook; arguments = ["--verbose", "--to", "pdf", "--single", "c:/home/git/vault/dist/data/travel/travel.i574n.hangul.md", "--output", "c:/home/git/vault/dist/data/travel/travel.i574n.hangul.md.pdf", "--set", "tex.paper.size", "a4paper", "tex.template.add", "\\pagenumbering{gobble}", "tex.template.add", "\\usepackage{polyglossia}", "tex.template.add", "\\setmainlanguage{korean}", "tex.template.add", "\\setmainfont{NanumGothicCoding}", "tex.font.size", "13", "rendering.num_depth", "6", "rendering.highlight.theme", "Solarized (dark)"]; options = { command = crowbook --verbose --to pdf --single "c:/home/git/vault/dist/data/travel/travel.i574n.hangul.md" --output "c:/home/git/vault/dist/data/travel/travel.i574n.hangul.md.pdf" --set tex.paper.size a4paper tex.template.add "\pagenumbering{gobble}" tex.template.add "\usepackage{polyglossia}" tex.template.add "\setmainlanguage{korean}" tex.template.add "\setmainfont{NanumGothicCoding}" tex.font.size 13 rendering.num_depth 6 rendering.highlight.theme \"Solarized (dark)\"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:11 d #4972 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.hangul.md.html; new_path = c:/home/git/vault/dist/data/travel/travel.hangul.md.html; result = 2036466 }
00:00:11 i #4973 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.md.epub }
00:00:11 d #4974 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.md.epub; new_path = c:/home/git/vault/dist/data/travel/travel.md.epub; result = 331353 }
00:00:11 i #4975 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.md.pdf }
00:00:11 d #4976 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.md.pdf; new_path = c:/home/git/vault/dist/data/travel/travel.md.pdf; result = 1423058 }
00:00:11 i #4977 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.md.html }
00:00:11 d #4978 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.md.html; new_path = c:/home/git/vault/dist/data/travel/travel.md.html; result = 1385960 }
00:00:11 i #4979 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.hangul.md }
00:00:11 v #4980 ! CROWBOOK 0.17.0
00:00:11 d #4981 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.hangul.md; new_path = c:/home/git/vault/dist/data/travel/travel.hangul.md; result = 1753438 }
00:00:11 v #4982 ! 12:14:46 [DEBUG] (1) crowbook::book: Ignoring YAML block:
00:00:11 v #4983 !
00:00:11 v #4984 ! 12:14:46 [DEBUG] (1) crowbook::book: Attempting to generate pdf...
00:00:11 d #4985 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/spiral/spiral.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/spiral/spiral.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:11 v #4986 ! 12:14:46 [DEBUG] (1) crowbook::latex: Attempting to run LaTeX on generated file
00:00:11 v #4987 > 'ee4e487f06a56378569d0291de3224bd0b350da5'
00:00:11 v #4988 > '51956f3580c89e1921acf278708d688e116e3f1b'
00:00:11 v #4989 > 327b6216ba5a5c1f5d833a2fc534e1ffcb73ae4a
00:00:11 v #4990 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:11 d #4991 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/travel/travel.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/travel/travel.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:11 v #4992 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:11 d #4993 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/sex/sex.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/sex/sex.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:11 v #4994 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:11 i #4995 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/religion.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\religion.hangul.md.epub }
00:00:11 d #4996 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\religion.hangul.md.epub; new_path = c:/home/git/vault/dist/data/religion/religion.hangul.md.epub; result = 72062 }
00:00:11 i #4997 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/religion.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\religion.hangul.md.pdf }
00:00:11 d #4998 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\religion.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/religion/religion.hangul.md.pdf; result = 98482 }
00:00:11 i #4999 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/religion.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\religion.hangul.md.html }
00:00:11 v #5000 > d9dce8b7b3620797caab1846473795f01524ca8d
00:00:11 d #5001 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\religion.hangul.md.html; new_path = c:/home/git/vault/dist/data/religion/religion.hangul.md.html; result = 321854 }
00:00:11 i #5002 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/religion.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\religion.md.epub }
00:00:11 d #5003 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\religion.md.epub; new_path = c:/home/git/vault/dist/data/religion/religion.md.epub; result = 64504 }
00:00:11 i #5004 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/religion.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\religion.md.pdf }
00:00:11 d #5005 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\religion.md.pdf; new_path = c:/home/git/vault/dist/data/religion/religion.md.pdf; result = 256055 }
00:00:11 i #5006 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/religion.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\religion.md.html }
00:00:11 d #5007 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\religion.md.html; new_path = c:/home/git/vault/dist/data/religion/religion.md.html; result = 226791 }
00:00:11 i #5008 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/religion.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\religion.hangul.md }
00:00:11 d #5009 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\religion.hangul.md; new_path = c:/home/git/vault/dist/data/religion/religion.hangul.md; result = 270097 }
00:00:11 d #5010 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/sex/sex.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/sex/sex.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault",
) } }
00:00:11 v #5011 > '9221f70d039b313ba746570ae387c6327e437490'
00:00:11 v #5012 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:11 i #5013 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.hangul.md.epub }
00:00:11 d #5014 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.hangul.md.epub; new_path = c:/home/git/vault/dist/data/sex/sex.hangul.md.epub; result = 29284 }
00:00:11 i #5015 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.hangul.md.pdf }
00:00:11 d #5016 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/sex/sex.hangul.md.pdf; result = 40902 }
00:00:11 i #5017 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.hangul.md.html }
00:00:11 d #5018 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.hangul.md.html; new_path = c:/home/git/vault/dist/data/sex/sex.hangul.md.html; result = 140043 }
00:00:11 i #5019 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.md.epub }
00:00:11 d #5020 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.md.epub; new_path = c:/home/git/vault/dist/data/sex/sex.md.epub; result = 26365 }
00:00:11 i #5021 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.md.pdf }
00:00:11 d #5022 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.md.pdf; new_path = c:/home/git/vault/dist/data/sex/sex.md.pdf; result = 113039 }
00:00:11 i #5023 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.md.html }
00:00:11 d #5024 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.md.html; new_path = c:/home/git/vault/dist/data/sex/sex.md.html; result = 100022 }
00:00:11 i #5025 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.hangul.md }
00:00:11 d #5026 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.hangul.md; new_path = c:/home/git/vault/dist/data/sex/sex.hangul.md; result = 114615 }
00:00:11 v #5027 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:11 d #5028 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/spiral/spiral.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/spiral/spiral.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:11 v #5029 > ee4e487f06a56378569d0291de3224bd0b350da5
00:00:11 v #5030 > 51956f3580c89e1921acf278708d688e116e3f1b
00:00:11 v #5031 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:11 i #5032 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.mp3.hangul.md.epub }
00:00:11 d #5033 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/travel/travel.mp3.hangul.md.epub; result = 5624 }
00:00:11 i #5034 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.mp3.hangul.md.pdf }
00:00:11 d #5035 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/travel/travel.mp3.hangul.md.pdf; result = 4028 }
00:00:11 i #5036 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.mp3.hangul.md.html }
00:00:11 d #5037 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/travel/travel.mp3.hangul.md.html; result = 10220 }
00:00:11 i #5038 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.mp3.md.epub }
00:00:11 d #5039 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.mp3.md.epub; new_path = c:/home/git/vault/dist/data/travel/travel.mp3.md.epub; result = 5507 }
00:00:11 i #5040 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.mp3.md.pdf }
00:00:11 d #5041 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/travel/travel.mp3.md.pdf; result = 7332 }
00:00:11 i #5042 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.mp3.md.html }
00:00:11 d #5043 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.mp3.md.html; new_path = c:/home/git/vault/dist/data/travel/travel.mp3.md.html; result = 10075 }
00:00:11 i #5044 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.mp3.hangul.md }
00:00:11 d #5045 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/travel/travel.mp3.hangul.md; result = 296 }
00:00:11 v #5046 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:11 i #5047 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.pdf.hangul.md.epub }
00:00:11 d #5048 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/sex/sex.pdf.hangul.md.epub; result = 5811 }
00:00:11 i #5049 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.pdf.hangul.md.pdf }
00:00:11 d #5050 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/sex/sex.pdf.hangul.md.pdf; result = 5119 }
00:00:11 i #5051 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.pdf.hangul.md.html }
00:00:11 d #5052 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/sex/sex.pdf.hangul.md.html; result = 10897 }
00:00:11 i #5053 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.pdf.md.epub }
00:00:11 d #5054 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.pdf.md.epub; new_path = c:/home/git/vault/dist/data/sex/sex.pdf.md.epub; result = 5651 }
00:00:11 i #5055 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.pdf.md.pdf }
00:00:11 d #5056 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/sex/sex.pdf.md.pdf; result = 8529 }
00:00:11 i #5057 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.pdf.md.html }
00:00:11 d #5058 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.pdf.md.html; new_path = c:/home/git/vault/dist/data/sex/sex.pdf.md.html; result = 10593 }
00:00:11 i #5059 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.pdf.hangul.md }
00:00:11 d #5060 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/sex/sex.pdf.hangul.md; result = 820 }
00:00:11 v #5061 > 'baec1a692d0f1fd4592a8a7e32f592a963acdd9f'
00:00:12 v #5062 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 }
00:00:12 d #5063 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/sex/sex.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/sex/sex.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some(
    "\\?\C:\home\git\vault\dist",
) } }
00:00:12 v #5064 > 9221f70d039b313ba746570ae387c6327e437490
00:00:12 v #5065 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:12 i #5066 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spiral/spiral.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spiral.html.hangul.md.epub }
00:00:12 d #5067 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spiral.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/spiral/spiral.html.hangul.md.epub; result = 5536 }
00:00:12 i #5068 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spiral/spiral.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spiral.html.hangul.md.pdf }
00:00:12 d #5069 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spiral.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/spiral/spiral.html.hangul.md.pdf; result = 3815 }
00:00:12 i #5070 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spiral/spiral.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spiral.html.hangul.md.html }
00:00:12 d #5071 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spiral.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/spiral/spiral.html.hangul.md.html; result = 10126 }
00:00:12 i #5072 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spiral/spiral.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spiral.html.md.epub }
00:00:12 d #5073 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spiral.html.md.epub; new_path = c:/home/git/vault/dist/data/spiral/spiral.html.md.epub; result = 5459 }
00:00:12 i #5074 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spiral/spiral.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spiral.html.md.pdf }
00:00:12 d #5075 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spiral.html.md.pdf; new_path = c:/home/git/vault/dist/data/spiral/spiral.html.md.pdf; result = 6191 }
00:00:12 i #5076 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spiral/spiral.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spiral.html.md.html }
00:00:12 d #5077 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spiral.html.md.html; new_path = c:/home/git/vault/dist/data/spiral/spiral.html.md.html; result = 10082 }
00:00:12 i #5078 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spiral/spiral.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spiral.html.hangul.md }
00:00:12 d #5079 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spiral.html.hangul.md; new_path = c:/home/git/vault/dist/data/spiral/spiral.html.hangul.md; result = 159 }
00:00:12 v #5080 > baec1a692d0f1fd4592a8a7e32f592a963acdd9f
00:00:12 v #5081 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 }
00:00:12 i #5082 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.mp3.hangul.md.epub }
00:00:12 d #5083 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/sex/sex.mp3.hangul.md.epub; result = 5769 }
00:00:12 i #5084 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.mp3.hangul.md.pdf }
00:00:12 d #5085 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/sex/sex.mp3.hangul.md.pdf; result = 3974 }
00:00:12 i #5086 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.mp3.hangul.md.html }
00:00:12 d #5087 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/sex/sex.mp3.hangul.md.html; result = 10645 }
00:00:12 i #5088 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.mp3.md.epub }
00:00:12 d #5089 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.mp3.md.epub; new_path = c:/home/git/vault/dist/data/sex/sex.mp3.md.epub; result = 5606 }
00:00:12 i #5090 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.mp3.md.pdf }
00:00:12 d #5091 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/sex/sex.mp3.md.pdf; result = 8600 }
00:00:12 i #5092 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.mp3.md.html }
00:00:12 d #5093 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.mp3.md.html; new_path = c:/home/git/vault/dist/data/sex/sex.mp3.md.html; result = 10320 }
00:00:12 i #5094 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.mp3.hangul.md }
00:00:12 d #5095 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/sex/sex.mp3.hangul.md; result = 674 }
00:00:12 v #5096 ! 12:14:47 [DEBUG] (1) crowbook::zipper: xelatex didn't return succesfully: xelatex: security risk: running with elevated privileges
00:00:12 v #5097 ! xelatex: major issue: So far, you have not checked for MiKTeX updates.
00:00:12 v #5098 !
00:00:12 v #5099 ! ERROR Error during temporary files editing: xelatex didn't return succesfully
00:00:12 v #5100 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 644 }
00:00:12 w #5101 documents.crowbook / result contains ERROR / { exit_code = 0; output_path = c:/home/git/vault/dist/data/travel/travel.i574n.md.pdf; result = CROWBOOK 0.17.0
12:14:40 [DEBUG] (1) crowbook::book: Ignoring YAML block:

12:14:40 [DEBUG] (1) crowbook::book: Attempting to generate pdf...
12:14:40 [DEBUG] (1) crowbook::latex: Attempting to run LaTeX on generated file
12:14:47 [DEBUG] (1) crowbook::zipper: xelatex didn't return succesfully: xelatex: security risk: running with elevated privileges
xelatex: major issue: So far, you have not checked for MiKTeX updates.

ERROR Error during temporary files editing: xelatex didn't return succesfully }
00:00:16 v #5102 ! 12:14:50 [DEBUG] (1) crowbook::zipper: xelatex didn't return succesfully: xelatex: security risk: running with elevated privileges
00:00:16 v #5103 ! xelatex: major issue: So far, you have not checked for MiKTeX updates.
00:00:16 v #5104 !
00:00:16 v #5105 ! ERROR Error during temporary files editing: xelatex didn't return succesfully
00:00:16 v #5106 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 644 }
00:00:16 w #5107 documents.crowbook / result contains ERROR / { exit_code = 0; output_path = c:/home/git/vault/dist/data/travel/travel.i574n.hangul.md.pdf; result = CROWBOOK 0.17.0
12:14:46 [DEBUG] (1) crowbook::book: Ignoring YAML block:

12:14:46 [DEBUG] (1) crowbook::book: Attempting to generate pdf...
12:14:46 [DEBUG] (1) crowbook::latex: Attempting to run LaTeX on generated file
12:14:50 [DEBUG] (1) crowbook::zipper: xelatex didn't return succesfully: xelatex: security risk: running with elevated privileges
xelatex: major issue: So far, you have not checked for MiKTeX updates.

ERROR Error during temporary files editing: xelatex didn't return succesfully }
00:00:20 v #5108 ! 12:14:55 [INFO] crowbook::book: Succesfully generated PDF: data\spirituality\the-book-of-innocence_pt-br.hangul.md.pdf
00:00:20 v #5109 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 542 }
00:00:20 w #5110 documents.crowbook / result contains ERROR / { exit_code = 0; output_path = c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md.pdf; result = CROWBOOK 0.17.0
12:14:40 [ERROR] crowbook::book: Inline YAML block could not set String("치틀리") to String("우 리브루 다 이노센시아"): Error converting BookOption: unrecognized key '치틀리'
12:14:40 [DEBUG] (1) crowbook::book: Attempting to generate pdf...
12:14:40 [DEBUG] (1) crowbook::latex: Attempting to run LaTeX on generated file
12:14:55 [INFO] crowbook::book: Succesfully generated PDF: data\spirituality\the-book-of-innocence_pt-br.hangul.md.pdf }
00:00:20 i #5111 documents.main / { result_len = 252 }